androidapk打包
A. androidstudio项目签名打包生成apk出错整理
本人由于一些误操作接触到打包文件的问题,故作此文避免再次踩坑。
1.入口:build->generate signed bundle/APK,打开后如下图1.1:
2.选中apk打包,进入next:
3.选择打包类型:
4.箭头所指即为生成的混淆+签名后的打包apk文件。(*签名文件不可以随便更改,如果有申请第三方的功能,都需要这个签名文件去检验的,比如说集成了微信支付,我们换签名文件的话,微信那边就会检验不通过)
5.本文重点并非上述步骤,而是我自己重新生成了一个密钥后,打包文件变成了.aab后缀文件。于是我想研究下它的打包过程和原理:
5.1在我们的build.gradle中可以更新打包文件版本号名称(自己配一下):
5.2签名文件会在此处进行对应生成信息:
5.3当然,你的项目文件也会对应生成相应的签名文件,例如我此处的文件为yoocarjks.jks:
5.4自己配一下打包生成文件的命名:
以上over
6.*问题点:
6.1.签名文件生成的乱码是些啥?
6.2.由于我当时把项目扔垃圾桶了,还有些文件并没有搞清楚是干嘛的,如下图:
buildoutputcleanuo.lock/executionhistory.bin/executionhistory.lock/filehashes.bin/filehashes.lock/outputfiles.bin/xxx.app.iml这些文件分别干嘛的,从包名看像是打包生成的文件。
作此文激励下自己空了去学习查阅下,若有知道的小伙伴欢迎留言分享~此文会继续追更~
7.1关于xxx.app.iml看到一篇不错的出错解决方案:
https://blog.csdn.net/qq_38998213/article/details/81907253
设计原理如下:
这个文件,后续遇到问题我再深入了解下
B. Taro 打包apk步骤(Android 打包)
taro版本2.2.13
1、 把项目根目录下的rn_temp文件夹复制到壳子根目录(taro-native-shell)下,再把rn_temp文件夹下的index.js文件复制到壳子根目录(taro-native-shell)下
2、打开壳子根目录下的index.js文件,修改“import App from './app.js';”为“import App from './rn_temp/app.js';”,修改“ import {name as appName} from './app.json';”为“ import {name as appName} from './rn_temp/app.json';”,如下图
3、终端进入壳子根目录(taro-native-shell),执行命令
会在android/app/src/main/assets文件夹下生成index.android.bundle文件
4、修改MainApplication中的getJSMainMoleName方法的返回值为“index.android.bundle”
5、终端中cd进入到android目录下,执行命令
等运行完成
你就可以在taro-native-shell/android/app/build/outputs/apk/release中看到打包出来的apk包了
或者可以按照Android studio的方式进行打包也可以。
C. Android APK打包流程备忘
APK文件的组成部分及apk打包流程是Android开发中的基础知识点,做一个简单的记录。
apk文件是Android应用包文件格式,其本质是一个压缩文件。将apk文件拖动到Android Studio中即可查看里面的内容,如下图:
从上图中可以看到apk包里的几个重要组成部分:
打包流程的经典流程图如下:
其中七个椭圆形内容对应了打包流程中的七个重要步骤,也对应着打包中的七个重要工具,具体如下:
对上面七个重要的打包流程进一步说明。
aapt打包资源文件,生成R.java文件,resources.arsc等文件。
aapt在打包资源文件之前会检测 AndroidManifest.xml 文件的合法性,对res目录下的资源目录进行扫描合法性,因此资源命名有问题时会在编译阶段就会直接报错。
需要注意的是xml文件会被编译为二进制的,因此我们并不能直接打开apk包中的xml文件。
AIDL是Android接口定义语言,是Android进程间通讯的一种实现方式。
此步骤中会对aidl文件进行处理,生成java文件。
通过javaCompiler对java文件进行编译,生成class文件。
dx工具将class文件转变为Android系统Dalvik虚拟机可执行的Dex文件。
将classes.dex,res文件夹等所有文件打包成apk文件。
生成APK包之后还需要进行签名处理,Release签名需要我们自己去进行配置。
常用的签名方式有两种:jarsigner和apksigner。
Zipalign是Android平台上APK文件对齐的整理工具,能够对APK中未压缩的数据进行4字节对齐。
需要注意的是根据采用签名方式的不同,对齐处理的先后顺序有所区别。
APK打包流程备忘。
D. 如何应用安卓APK文件进行解包打包和修改
不需要解包跟打包,直接修改就可以,修改的的方法。
如下参考:
1.将需要修改的apk包复制到100apktool的路径中。注意:您需要将文件名更改为123apk,如下图。
E. android studio怎样运行打包后的apk
android studio怎样运行打包后的apk
渠道信息一般在 AndroidManifest.xml中修改以下值: 首先你必须在AndroidManifest.xml中的meta-data修改以下的样子: 其中${UMENG_CHANNEL_VALUE}中的值就是你在gradle中自定义配置的值。 build.gradle文件就利用proctFlavors
渠道信息一般在 AndroidManifest.xml中修改以下值:
首先你必须在AndroidManifest.xml中的meta-data修改以下的样子:
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}" />
其中${UMENG_CHANNEL_VALUE}中的值就是你在gradle中自定义配置的值。
build.gradle文件就利用proctFlavors这样写:
proctFlavors {
wandoujia {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
}
{
manifestPlaceholders = [UMENG_CHANNEL_VALUE: ""]
}
c360 {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "c360"]
}
uc {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "uc"]
}
}
其中[UMENG_CHANNEL_VALUE: "wandoujia"]就是对应${UMENG_CHANNEL_VALUE}的值。
最新更新
后来发现上面的重复代码太多,就在网上又发现了一个更简洁的写法
proctFlavors {
wandoujia {}
{}
c360 {}
uc {}
proctFlavors.all { flavor ->
flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
}
其手液数中name的值对相对应各个proctFlavors的选项值,这样就达到自动替换渠道值的目的了。
这样生成apk时,选择相应的Flavors来生成指定渠道的包就可以了,而且生成的apk会自动帮你加上相应渠道的后缀,非常方便和直观。大家可以自己反编译验证。
一次生成所有渠道包
在android studio底栏中有个命令行工具Terminal,打开后就CMD可以自动切换到当前项目的目录下。
有的项目下会有graldew.bat这个文件,你就可以输入这个命令:
gradlew assembleRelease
就可以一次性生成所有的渠道包了
不过我一般不建议大家使用这个命令,gradlew这个命令的gralde的版本无法控制,有时候会莫名其妙的下载老版本的gradle
所以我个人推荐大家使用以下的用法。
先找到gralde的根目录,在毕首系统变量里添加两个环境变量:
变量名为:GRADLE_HOME,变量值就为gradle的根目录;
所以变量值为:C:Usersyazhou.gradlewrapperdistsgradle-2.1--2.1
还有一个在系统变量里PATH里面添加gradle的bin目录
我的就是C:Usersyazhou.gradlewrapperdistsgradle-2.1--2.1in
这里配埋指置完成了,接着在Terminal中敲下 gradle assembleRelease就可以一次性生成所有的渠道包了。
所有生成的apk在项目的buildoutputsapk下。
如果只是想生成单个渠道的包呢?
打开Android Studio的Gradle tasks面板(右边侧边栏),会发现模块多了很多任务,如下图所示。
渠道信息一般在 AndroidManifest.xml中修改以下值: 首先你必须在AndroidManifest.xml中的meta-data修改以下的样子: android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}" /> 其中${UMENG_CHANNEL_VALUE}中的值就是你在gradle...
android studio怎么运行apk包
渠道信息一般在 AndroidManifest.xml中修改以下值:
首先你必须在AndroidManifest.xml中的meta-data修改以下的样子:
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}" />
其中${UMENG_CHANNEL_VALUE}中的值就是你在gradle中自定义配置的值。
build.gradle文件就利用proctFlavors这样写:
proctFlavors {
wandoujia {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
}
{
manifestPlaceholders = [UMENG_CHANNEL_VALUE: ""]
}
c360 {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "c360"]
}
uc {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "uc"]
}
}
其中[UMENG_CHANNEL_VALUE: "wandoujia"]就是对应${UMENG_CHANNEL_VALUE}的值。
最新更新
后来发现上面的重复代码太多,就在网上又发现了一个更简洁的写法
proctFlavors {
wandoujia {}
{}
c360 {}
uc {}
proctFlavors.all { flavor ->
flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
}
其中name的值对相对应各个proctFlavors的选项值,这样就达到自动替换渠道值的目的了。
这样生成apk时,选择相应的Flavors来生成指定渠道的包就可以了,而且生成的apk会自动帮你加上相应渠道的后缀,非常方便和直观。大家可以自己反编译验证。
一次生成所有渠道包
在android studio底栏中有个命令行工具Terminal,打开后就CMD可以自动切换到当前项目的目录下。
有的项目下会有graldew.bat这个文件,你就可以输入这个命令:
gradlew assembleRelease
就可以一次性生成所有的渠道包了
不过我一般不建议大家使用这个命令,gradlew这个命令的gralde的版本无法控制,有时候会莫名其妙的下载老版本的gradle
所以我个人推荐大家使用以下的用法。
先找到gralde的根目录,在系统变量里添加两个环境变量:
变量名为:GRADLE_HOME,变量值就为gradle的根目录;
所以变量值为:C:Usersyazhou.gradlewrapperdistsgradle-2.1--2.1
还有一个在系统变量里PATH里面添加gradle的bin目录
我的就是C:Usersyazhou.gradlewrapperdistsgradle-2.1--2.1in
这里配置完成了,接着在Terminal中敲下 gradle assembleRelease就可以一次性生成所有的渠道包了。
所有生成的apk在项目的buildoutputsapk下。
如果只是想生成单个渠道的包呢?
打开Android Studio的Gradle tasks面板(右边侧边栏),会发现模块多了很多任务。
android studio怎么打包apk的
Android App都需要我们用一个证书对应用进行数字签名,不然的话是无法安装到Android手机上,下面介绍Android Studio如何打包签名的相关经验,希望能帮助大家。
:jingyan../article/5552ef47e5d18d518efbc96b.
android studio怎么打包apk
(1)Android Studio菜单Build->Generate Signed APK
(2)弹出窗口
(3)创建密钥库及密钥,创建后会自动选择刚创建的密钥库和密钥(已拥有密钥库跳过)
点击“Create new...”按钮创建密钥库
Key store path:密钥库文件的地址
Password/Confirm:密钥库的密码
Key:
Alias:密钥名称
Password/Confirm:密钥密码
Validity(years):密钥有效时间
First and Last Name:密钥颁发者姓名
Organizational Unit:密钥颁发组织
City or Locality:城市
Country Code(XX):国家
(4)选择已存在密钥库及密钥(在(3)中创建密钥库后跳过此步骤)
点击“Choose existing...”按钮找到密钥库文件
Key store password输入已选择的密钥库文件的密码
点击Key alias后的“...”按钮,选择或者创建一个密钥
(5)点击“Next”按钮,选择保存路径后,点击“Finish”按钮完成
android studio怎么打包成apk
打开你的项目,点击上面build-->genarate signed apk-->选择你的moled-->点击next-->
下面就和eclipse差不多了,有签名key就choose existing没有就create一个,next-->选择你要放apk的文件夹,点击finish,等待打包完成。
android studio 打包的apk在哪
1.Eclipse下App放置在项目根目录的bin目录中2.而Androidstudio大改后,放在了mole中,所以你一定要记得你的存放路径。也就是工程对应的文件夹。androidstudio工程的存储路径下app/build/outputs/apk其中app是你的mole,在对应的mole下即可找到
打包成4.4.2的apk能运行在android 4.3么
有人在电脑上用过android x86 4.4.2系统吗?为什么我为什么我在这个系统...
答:我在上网本上装过,android_x86_4.4_RC1,确实有很多兼容性问题,可能是开发还未成熟。所以体验一下后又卸载了。
android studio 怎么打包各平台apk
(1)Android Studio菜单Build->Generate Signed APK
(2)弹出窗口
(3)创建密钥库及密钥,创建后会自动选择刚创建的密钥库和密钥(已拥有密钥库跳过)
点击“Create new...”按钮创建密钥库
Key store path:密钥库文件的地址
Password/Confirm:密钥库的密码
Key:
Alias:密钥名称
Password/Confirm:密钥密码
Validity(years):密钥有效时间
First and Last Name:密钥颁发者姓名
Organizational Unit:密钥颁发组织
F. 如何利用Eclipse工具打包签名AndroidApk文件
用eclipse软件打包app安卓客户端免费下载
链接:https://pan..com/s/1XhnUmAQhA468EC4xt29ZmA
Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。
G. Android简单的打包配置
在android studio中的打包,通常使用以下两个选项之一,两个方式都可以构建出apk包
这两个有什么区别?
概括一句话:根据gradle中现有的签名配置进行自动签名打包
通常debug和dev环境是系统自行配置的debug-sing签名,不需要手动进行配置,但是release环境是对外发布的环境,必须要求手动在gradle中进行签名配置才可以打包(后边说)
所以在gradle配置好了签名的情况下,直接点击 Build APK(s) 就可以进行打包
一句话概括:通过手动选择签名文件进行签名打包
这种方式则不需要在gradle中进行配置,直接选择你已经创建好的签名文件,输入对应的密码等信息,就可以进行打包
然后就可以进行打包了
debug 和 dev 等测试/开发环境 因为系统自动配置了debug-sing 可以直接使用 Build APK(s) 进行打包。
但是release环境需要对外发布,所以需要手动在gradle中进行签名配置才可以使用 Build APK(s) ,或着自己选择 Generate Signed Bundle or APK 通过签名文件进行打包(效果和gradle中配置好了签名文件完全相同)
那么就有以下两个问题:
在 Generate Signed Bundle or APK 中选择 Create new ...
在mole的gradle.android中输入:
然后在配置环境的buildTypes中,想使用 signingConfigs 签名配置的环境加上一句话: signingConfig signingConfigs.release
这样,就在gradle中配置好了签名,可以直接使用 Build APK(s) 进行打包
注意这里的 minifyEnabled true 也就是要使用混淆文件(一般测试环境为false 编译更快)。如果release环境打包,没有配置好混淆文件的话,会导致apk安装之后,秒退。(如果没有签名强行打包,则无法安装)