android多渠道打包&&几个打包小技巧
2017-01-01 17:25
309 查看
android多渠道打包
多渠道的意义
更详细的统计app被下载的途径查看app在每个渠道的表现
有利于app的推广
使用友盟实现多渠道打包
多渠道打包的原理
为每个渠道的apk指定一个唯一的标识符android中通常在Manifest.xml中为其指定
也可以在代码中指定,但一般不用
使用友盟步骤
上友盟官网注册并创建新应用,获得Appkey下载SDK并集成,推荐使用studio集成
Manifest.xml中配置渠道号和Appkey
在moudle的build.gradle中编写多渠道脚本
1.集成友盟SDK
在build.gradle中添加依赖:dependencies { compile 'com.umeng.analytics:analytics:latest.integration' }
2.Manifest.xml中配置渠道号和Appkey,以及相关权限
<manifest……> <uses-sdk android:minSdkVersion="4"></uses-sdk> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <application ……> …… <activity ……/> <!--友盟AppKey--> <meta-data android:name="UMENG_APPKEY" android:value="YOUR_APP_KEY" /> <!--渠道号--> <!--此处使用占位符,然后在build.gradle中动态的替换它--> <meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}" /> </application> </manifest>
3.在moudle的build.gradle中编写多渠道脚本
apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig { applicationId "com.shaw.testapp" minSdkVersion 9 targetSdkVersion 23 versionCode 100 versionName "1.0.0" multiDexEnabled true//突破应用方法数65535的限制 manifestPlaceholders = [UMENG_CHANNEL_VALUE:"umeng"]//设置默认的渠道名 } //添加我们的签名文件配置 signingConfigs{ //为我们的release包添加签名文件配置 myConfigs { storeFile file("key.jks")// storePassword "shaw666" keyAlias "shaw" keyPassword "shaw666" } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' //添加我们的签名文件配置 signingConfig signingConfigs.myConfigs } } //多渠道的支持 productFlavors{ xiaomi{} wandoujia{} } //遍历渠道,将每个渠道的name替换到UMENG_CHANNEL_VALUE中 productFlavors.all{ flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name] } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.2.1' //添加友盟统计库依赖 compile 'com.umeng.analytics:analytics:latest.integration' }
4.使用命令行打包
在Terminal中使用命令gradlew assembleRelease自动打出所有的渠道包gradlew assembleDebug //所有平台的debug包
gradlew assemblewandoujiaRelease //只打wandoujia的Release包
关于打包的其他技巧
1.修改release包的输出文件名
buildTypes { release { …… applicationVariants.all{ variant -> variant.outputs.each{ output -> def outFile = output.outputFile if (outFile != null && outFile.name.endsWith(".apk")){ def fileName = defaultConfig.applicationId + '_v' + defaultConfig.versionName + '_' + variant.productFlavors[0].name + '.apk' output.outputFile = new File(outFile.parent, fileName); } } } } }
效果如下:
2.在每个渠道中的资源的变动
//多渠道的支持 productFlavors{ xiaomi{ resValue "string", "app_name", "xiaomi_app" } wandoujia{ resValue "string", "app_name", "wandoujia_app" } }
先定义,再在代码使用,最后在打包时,将之前定义的value替换掉。(需要将之前定义的value删除,否则会报错)
3.在同一设备上同时安装多个不同功能点的app
//多渠道的支持 productFlavors{ okhttp{ //给defaultConfig.applicationId添加后缀(不会影响程序中获取的包名) applicationIdSuffix"okhttp" resValue "string", "app_name", "okhttp_app" } jpush{ applicationIdSuffix"jpush" resValue "string", "app_name", "jpush_app" } }
效果如下:
相关文章推荐
- android产品研发(五)-->多渠道打包
- 友盟多渠道打包工具包 Parsing ‘AndroidManifest.xml' error : 未能找到文件
- Android多渠道打包(六):maven&gradle
- Ant_android 多渠道自动打包(1)
- 自制的android多渠道应用打包工具--RyApkTool(2)
- Android工程结构的介绍&程序编译、打包、签名、发布
- 脚本ANT自动打包Android应用(方便多渠道发布)
- android ListView美化-->几个比较特别的属性
- android 多渠道打包
- 【Cocos2d-X(2.x) 游戏开发系列之二】cocos2dx最新2.0.1版本跨平台整合NDK+Xcode,Xcode编写&编译代码,Android导入打包运行即可!
- 自制的android多渠道应用打包工具--RyApkTool(1)
- Android_Ant_多渠道打包/一键自动编译 ——Mac lion 10.8.2下
- 6410开发版烧录Android映像 && IMG说明 && MTK平台解包和打包 boot.img/system.img
- Android 数据库打包随APK发布 &&另assets与raw的区别(链接)
- Android多渠道Ant打包详细
- android Ant 批量多渠道打包 总结!
- android技巧:apk文件反编译以及签名打包(dex2jar&jd,apktool,apk-sign)
- 几个下载Android源码的小技巧(CentOS6)
- android ListView美化-->几个比较特别的属性
- android 多渠道打包