Android多渠道打包
来源:互联网 发布:关于网络道德的论文 编辑:程序博客网 时间:2024/05/06 08:53
使用android studio进行多渠道打包
以本博客记录多渠道打包,以便以后快速复习与使用:
博主采用的友盟统计,大家可以到官方文档上去学习,很齐全,很简单。
- 1. 添加友盟库的依赖
- 2. 在清单文件中去声明我们的appkey,以及我们的渠道的占位符
- 3. 在我们的应用中的build.gradle中去动态的替换我们的占位符的value即可
在友盟注册一个应用,获取到key,然后在清单文件进行配置,其中5858d54065b6d66de000008f即为你申请的key, ${UMENG_CHANNEL_VALUE}为占位符,需要在build.gradle中配置
<meta-data android:value="5858d54065b6d66de000008f" android:name="UMENG_APPKEY"/> <meta-data android:value="${UMENG_CHANNEL_VALUE}" android:name="UMENG_CHANNEL"/>
配置build.gradle中内容
首先我们配置defaultConfig
defaultConfig { applicationId "com.lingchen.multichannelapkdemo" minSdkVersion 15 targetSdkVersion 25 versionCode 1 versionName "1.0" multiDexEnabled true// 突破默认的方法数 manifestPlaceholders = [UMENG_CHANNEL_VALUE: "umeng"]// 默认为友盟渠道}
签名文件的配置,有debug和release签名
signingConfigs { debug { keyAlias 'androiddebugkey' keyPassword 'android' storeFile file('../mydeug.keystore') storePassword 'android' } release { storeFile file("../umeng.jks") storePassword "umengu" keyAlias "umeng" keyPassword "umengu" }}
使用签名
buildTypes { debug { minifyEnabled false// 是否使用混淆 signingConfig signingConfigs.debug } release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' signingConfig signingConfigs.release }}
配置多个渠道
productFlavors { xiaomi { resValue "string", "app_name", "小米"// 替换应用的名字 applicationId "com.yitong.xiaomi" //这里可以配置不同的包名 } wandoujia { resValue "string", "app_name", "豌豆荚" } okhttp { applicationIdSuffix "okhttp"// 给包名添加一个后缀 resValue "string", "app_name", "okhttp" }}productFlavors.all { flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]// 遍历所有渠道,替换UMENG_CHANNEL_VALUE为渠道名}
在生成的apk文件,修改下命名
applicationVariants.all { variant -> variant.outputs.each { output ->// 进行遍历 def outputFile = output.outputFile if (outputFile != null && outputFile.name.endsWith(".apk")) { def fileName if(variant.buildType.name.equals('debug')){// 判断是否是debug版本 fileName = "debug-${variant.productFlavors[0].name}" + ".apk";// 重命名为:debug-渠道名.apk } else{ def timeStamp = new Date().format("MMddHH", TimeZone.getTimeZone("GMT+8"));// 获取当前时间,并自定显示样式 fileName = "${variant.productFlavors[0].name}" + "-${timeStamp}" + ${defaultConfig.versionName} + ".apk";// 重命名为: 渠道名 + 时间戳 + 版本号 + ".apk" } output.outputFile = new File(outputFile.parent, fileName); } }}
使用友盟不要完了依赖以及权限的添加
dependencies {compile fileTree(dir: 'libs', include: ['*.jar'])compile 'com.android.support:appcompat-v7:25.0.1'compile 'com.umeng.analytics:analytics:latest.integration'}<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permission android:name="android.permission.READ_PHONE_STATE"/><uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/><uses-permission android:name="android.permission.INTERNET"/>
0 0
- Android多渠道打包(一):基础多渠道打包
- Android多渠道打包(四):360多渠道打包
- Android多渠道打包(五):360多渠道打包+
- android 多渠道自动打包
- android apk多渠道打包
- Android多渠道打包APK
- android 多渠道打包
- Android 多渠道自动打包
- android应用多渠道打包
- Android Ant 多渠道打包
- Android多渠道Ant打包
- android多渠道打包
- Android多渠道打包工具
- android ant 多渠道打包
- Android studio 多渠道打包
- Android Studio多渠道打包
- Android studio 多渠道打包
- android Gradle多渠道打包
- 代码面试最常用的10大算法
- Servletconfig接口———day_05
- 2016.12.20 学习日记-原型模式
- python安装scrapy
- 基于jquery 延迟加载(1)
- Android多渠道打包
- 带缓冲的I/O操作和不带缓冲的I/O操作
- win protobuffer使用简易教程
- 学习笔记:记忆递归型动归程序
- 版本控制 - SVN
- jquery操作复选框checkbox
- [笔记]2016阿里中间件性能挑战赛(一)
- Hexo建站全攻略
- Android 定时任务的实现