在这里我首先要说明下多渠道打包的目的与友盟统计之间的关系:
首先是友盟统计,众所周知友盟统计是一个做统计数据分析的平台,那么就比如说是统计各个平台直接的下载数据来讲,这里他没有办法获取各个平台的后台数据,所以只能在应用中做区分,所以友盟统计让在清单文件中使用这两个东西
<meta-data android:value="YOUR_APP_KEY" android:name="UMENG_APPKEY"/>
<meta-data android:value="Channel ID" android:name="UMENG_CHANNEL"/>
先说下<meta-data android:value="YOUR_APP_KEY" android:name="UMENG_APPKEY"/> 的目的是区分不同的应用的,因为友盟统计的不仅仅是你一家 的应用,
然后是<meta-data android:value="Channel ID" android:name="UMENG_CHANNEL"/>的目的是区分不同 的平台,当用户启动应用后就能得到应用的清单文件然后获取里面的这个就知道了这个应用是从那个平台下载的了
接着就是要开始说明多渠道的目的,因为google 商店无法在中国地区使用,所以国内一直都有很多应用平台,这些平台是三足鼎立的局面,各自占用一定的市场份额,但是舍弃哪一个都不太合适,
因此,上面的<meta-data android:value="Channel ID" android:name="UMENG_CHANNEL"/>中的android:value是会要改动的,不然友盟统计不准确,还有就是我们正常打包的方式一次只能打包一个,而且还有等半天,
首先我们看到了这里,就知道了
首先你必须在AndroidManifest.xml中的meta-data修改以下的样子:
<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}" />
${UMENG_CHANNEL_VALUE}中的值就是你在gradle中自定义配置的值。build.gradle文件中需要productFlavors这样写:这里要写在你运行的moudle下,这里一般都是项目的主要moudle并非你的依赖moudle,写在android节点下面就好在AndroidStudio菜单栏点击Build菜单–>Generate signed APK–>选择key,并输入密码
然后下一步,选择打包渠道
最后点击完成按钮
Terminal,打开后就CMD可以自动切换到当前项目的目录下。有的项目下会有
graldew.bat这个文件,你就可以输入这个命令:gradlew assembleRelease
就可以一次性生成所有的渠道包了
不过我一般不建议大家使用这个命令,gradlew这个命令的gralde的版本无法控制,有时候会莫名其妙的下载老版本的gradle
所以我个人推荐大家使用以下的用法。
先找到gralde的根目录,在系统变量里添加两个环境变量:
变量名为:GRADLE_HOME,变量值就为gradle的根目录;
所以变量值为:C:\Users\yazhou\.gradle\wrapper\dists\gradle-2.1-all\27drb4udbjf4k88eh2ffdc0n55\gradle-2.1
还有一个在系统变量里PATH里面添加gradle的bin目录
我的就是C:\Users\yazhou\.gradle\wrapper\dists\gradle-2.1-all\27drb4udbjf4k88eh2ffdc0n55\gradle-2.1\bin
这里配置完成了,接着在Terminal中敲下 gradle assembleRelease就可以一次性生成所有的渠道包了。
所有生成的apk在项目的build\outputs\apk下。
如果只是想生成单个渠道的包呢?
此时可以直接双击该任务生成对应的apk,也可以用命令行单独生成,比如
gradle assembleWandoujiaRelease