赞
踩
打包之前建议学习:Android Studio系列之代码混淆proguardFiles
Build->Generate Signed Bundle/APK
如果已经拥有apk密钥,则选择已经存在的密钥,然后输入密码信息即可,否则创建密钥Create new…。
记得好好保管密钥文件和密码额。
以上设置好了就点击Next,
此时查看Event Log窗口,查看输出信息,点击locate可以跳转到apk文件位置。
<meta-data android:name="UMENG_CHANNEL" android:value="Channel_ID"></meta-data>
value里面填的就是各个平台的值,比如填写uc、yyb(应用宝)、360、baidu替换掉Channel_ID,App安装好,可以读取这个值然后传给后台,从而实现区分各个平台的安装需求。
实现:
1.在AndroidManifest.xml中增加meta-data
/*${channelName} 是对应build.gradle文件中的channelName的值
productFlavors.all {
flavor -> flavor.manifestPlaceholders = [channelName: name]
}
关于manifestPlaceholders 占位符我们稍后讲解
*/
<meta-data
android:name="UMENG_CHANNEL"
android:value="${channelName}" />
2.修改app模块下的build.gradle文件,在android空间内增加如下内容
apply plugin: 'com.android.application' def releaseTime() { return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC")) } android { defaultConfig { applicationId "com.xxx.demo2" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode rootProject.ext.versionCode//ext属于根目录gradle的属性 versionName rootProject.ext.versionName flavorDimensions "default" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } signingConfigs { config { keyAlias 'key0'//别名 keyPassword '123456'//密码 //秘钥位置 storeFile file('E:\\work\\android\\RocketBrowser\\SourceCodes\\app\\key0.jks') storePassword '123456'//存储密码 } } //配置编译选项 buildTypes { release { debuggable false minifyEnabled true shrinkResources true signingConfig signingConfigs.config proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } debug { debuggable true minifyEnabled false shrinkResources false signingConfig signingConfigs.config proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } productFlavors{ baidu{ manifestPlaceholders += [PID:"PIDLKDpQaIly"] } xiaomi{ manifestPlaceholders += [PID:"PIDLKDpQaIly"] } huawei{ manifestPlaceholders += [PID:"PIDLKDpQaIly"] } qihu360{ manifestPlaceholders += [PID:"PIDLKDpQaIly"] } } productFlavors.all { flavor -> flavor.manifestPlaceholders = [channelName: name] } applicationVariants.all { variant -> variant.outputs.all { def fileName = "Rocket_${defaultConfig.versionName}_${releaseTime()}_${variant.productFlavors[0].name}.apk" outputFileName = fileName } } }
//defaultConfig 需要配置flavorDimensions,否则会报错
flavorDimensions "default"
3.修改根目录下的build.gradle文件,提供ext属性
ext {
ext.kotlin_version = '1.3.41'
compileSdkVersion = 28
supportLibVersion = '28.0.3'
minSdkVersion = 21
targetSdkVersion = 28
versionCode = 15
versionName = "1.2.1.2"
}
关于的manifestPlaceholders
可以参考 meta-data 占位符的引用
配置文件修改之后,在android studio 的Terminal窗口,执行gradlew assembleRelease
,此时就会正常编译并且打包,生成的文件在app->build->outputs->apk目录下。
使用gradlew assembleRelease
的时候可能会提示JAVA_HOME没有设置,此时我们到环境变量设置一下信息,然后重启android studio:
配置系统变量Path:
渠道配置也可以通过窗口设置
eg:修改秘钥信息:
eg:修改渠道信息
apk打包
https://blog.csdn.net/u010883308/article/details/82318956
https://www.cnblogs.com/sunjiachen/p/11457630.html
manifestPlaceholders
apk信息获取PackageManager
https://blog.csdn.net/u012532559/article/details/52805632
占位符manifestPlaceholders
https://blog.csdn.net/u010227042/article/details/83182120
apk瘦身
https://blog.csdn.net/qq_32175491/article/details/80071987
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。