Android Studio Gradle 多渠道,多appkey签名打包
来源:互联网 发布:剑三丐姐捏脸数据邪魅 编辑:程序博客网 时间:2024/06/05 22:32
关于多渠道签名打包可以直接参考 友盟官方提供的gradle脚本
umeng-muti-channel-build-tool
由于项目中引用了多个三方插件(如:地图服务、推送服务、统计服务等)
对应的 包名不一样(为了方便测试 区分了 测试&正式 版本),所以对应的服务 appkey也不一样
所以对这个脚本进行了修改
build.gradle
apply plugin: 'com.android.application'dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile fileTree(dir: 'libs', include: '**/*.so') compile 'com.android.support:appcompat-v7:20.0.0'}android { compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION) buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION defaultConfig { applicationId project.ANDROID_BUILD_APPLICATIONID_DEBUG minSdkVersion Integer.parseInt(ANDROID_BUILD_MIN_SDK_VERSION) targetSdkVersion Integer.parseInt(ANDROID_BUILD_TARGET_SDK_VERSION) versionCode Integer.parseInt(project.VERSION_CODE) versionName project.VERSION_NAME } //渠道 productFlavors { develop { } production { applicationId project.ANDROID_BUILD_APPLICATIONID_PRODUCTION } googleplay { applicationId project.ANDROID_BUILD_APPLICATIONID_PRODUCTION } wandoujia { applicationId project.ANDROID_BUILD_APPLICATIONID_PRODUCTION }// store91 {// applicationId project.ANDROID_BUILD_APPLICATIONID_PRODUCTION// }// qq {// applicationId project.ANDROID_BUILD_APPLICATIONID_PRODUCTION// }// anzhi {// applicationId project.ANDROID_BUILD_APPLICATIONID_PRODUCTION// } } sourceSets { main { assets.srcDirs = ['assets'] jniLibs.srcDirs = ['libs'] } } //签名 signingConfigs{ release { storeFile file("keystore路径") storePassword "***" keyAlias "***" keyPassword "***" } } buildTypes { release { runProguard false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' signingConfig signingConfigs.release } } packagingOptions { exclude 'META-INF/DEPENDENCIES' exclude 'META-INF/NOTICE' exclude 'META-INF/LICENSE' exclude 'META-INF/LICENSE.txt' exclude 'META-INF/NOTICE.txt' } //这个是解决lint报错的代码 lintOptions { abortOnError false // 防止在发布的时候出现因MissingTranslation导致Build Failed! disable 'MissingTranslation' }}tasks.withType(Compile) { options.encoding = "UTF-8"}//替换AndroidManifest.xml的UMENG_CHANNEL_VALUE字符串为渠道名称 By Remex Huangandroid.applicationVariants.all{ variant -> variant.processManifest.doLast{ //之前这里用的copy{},我换成了文件操作,这样可以在v1.11版本正常运行,并保持文件夹整洁 //${buildDir}是指./build文件夹 //${variant.dirName}是flavor/buildtype,例如GooglePlay/release,运行时会自动生成 //下面的路径是类似这样:./build/manifests/GooglePlay/release/AndroidManifest.xml def manifestFile = "${buildDir}/intermediates/manifests/${variant.dirName}/AndroidManifest.xml" //将字符串UMENG_CHANNEL_VALUE替换成flavor的名字 def updatedContent = new File(manifestFile).getText('UTF-8').replaceAll("UMENG_CHANNEL_VALUE", "${variant.productFlavors[0].name}") //替换包名、appkey if ("develop".equalsIgnoreCase("${variant.productFlavors[0].name}")){ updatedContent = updatedContent.replaceAll("BAIDU_APPKEY_VALUE", "${project.BAIDU_APPKEY_VALUE_DEBUG}").replaceAll("UMENG_APPKEY_VALUE", "${project.UMENG_APPKEY_VALUE_DEBUG}").replaceAll("JPUSH_APPKEY_VALUE", "${project.JPUSH_APPKEY_VALUE_DEBUG}").replaceAll("APPLICATIONID", "${project.ANDROID_BUILD_APPLICATIONID_DEBUG}") } else { updatedContent = updatedContent.replaceAll("BAIDU_APPKEY_VALUE", "${project.BAIDU_APPKEY_VALUE_PRODUCT}").replaceAll("UMENG_APPKEY_VALUE", "${project.UMENG_APPKEY_VALUE_PRODUCT}").replaceAll("JPUSH_APPKEY_VALUE", "${project.JPUSH_APPKEY_VALUE_PRODUCT}").replaceAll("APPLICATIONID", "${project.ANDROID_BUILD_APPLICATIONID_PRODUCTION}") } new File(manifestFile).write(updatedContent, 'UTF-8') //将此次flavor的AndroidManifest.xml文件指定为我们修改过的这个文件 variant.processResources.manifestFile = file("${buildDir}/intermediates/manifests/${variant.dirName}/AndroidManifest.xml") }}
gradle.properties
ANDROID_BUILD_TOOLS_VERSION=19.1.0ANDROID_BUILD_SDK_VERSION=19VERSION_NAME=1.0VERSION_CODE=1GROUP=com.fallenpanda.appANDROID_BUILD_MIN_SDK_VERSION=7ANDROID_BUILD_TARGET_SDK_VERSION=15#DEBUG包名ANDROID_BUILD_APPLICATIONID_DEBUG=com.fallenpanda.app.demo#PRODUCTION包名ANDROID_BUILD_APPLICATIONID_PRODUCTION=com.fallenpanda.appBAIDU_APPKEY_VALUE_DEBUG=百度地图服务 DEBUG包名对应的appkeyBAIDU_APPKEY_VALUE_PRODUCT=百度地图服务 PRODUCTION包名对应的appkeyUMENG_APPKEY_VALUE_DEBUG=友盟服务 DEBUG包名对应的appkeyUMENG_APPKEY_VALUE_PRODUCT=友盟服务 PRODUCTION包名对应的appkeyJPUSH_APPKEY_VALUE_DEBUG=极光推送服务 DEBUG包名对应的appkeyJPUSH_APPKEY_VALUE_PRODUCT=极光推送服务 PRODUCTION包名对应的appkey
AndroidManifest.xml
其中需要替换包名的地方用 APPLICATIONID 替代
渠道用 UMENG_CHANNEL_VALUE 替代
appkey分别用 BAIDU_APPKEY_VALUE、UMENG_APPKEY_VALUE、JPUSH_APPKEY_VALUE 替代
------------------------------------
最后clean
分别执行assembleGoogleplayRelease,分别生成渠道包
或者直接执行assembleRelease,一起生成
即可在项目build\outputs\apk目录下找到生成的apk
-unaligned 后缀的apk仅仅是中间产物,直接无视
-release 后缀的就是各个渠道正式签名后的apk了
参考原文地址:http://my.oschina.net/uboluo/blog/157483
转自:http://my.oschina.net/fallenpanda/blog/373183?p={{page}}
Android学习交流群:523487222
(如果您觉得有用,欢迎加入,一起学习进步)
点击链接加入群【Android学习群】
1 0
- Android Studio Gradle 多渠道,多appkey签名打包
- Android Studio Gradle 多渠道,多appkey签名打包
- Android Studio Gradle 多渠道,多appkey签名打包
- Android Studio多渠道签名打包
- Android Studio Gradle 多渠道打包
- Android Studio--Gradle多渠道打包
- Android Studio--Gradle多渠道打包
- Android studio gradle 多渠道打包
- Android Studio Gradle多渠道打包
- Android studio gradle 多渠道打包
- Android Studio--Gradle多渠道打包
- Android Studio Gradle多渠道打包
- android studio gradle 多渠道打包
- Android Studio Gradle多渠道打包
- 【Android Studio】gradle多渠道打包
- android studio 签名,打包,混淆,多渠道打包
- AndroidStudio-Gradle定制多签名多渠道打包
- Android之Android Studio--Gradle多渠道打包
- leetcode 263. Ugly Number
- ButterKnife8.0.2的使用例程
- 数据库(一)
- 【HDU】 1788 Chinese remainder theorem again
- ipython需要2.7版本python, 手动编译; 解决yum在升级python2.7版本后的功能恢复; 解决pip命令失败问题.
- Android Studio Gradle 多渠道,多appkey签名打包
- Mina通信粘包处理
- C# 转换
- CentOS7区域设置
- 源码分析之Fresco
- 使用sqlyog远程连接mysql错误2003 cant connect to mysql 解决办法
- ZigBee 组,组表与场景
- iOS GPUImage 的使用
- repo sync失败 remote: warning: suboptimal pack - out of memory