欢迎使用CSDN-markdown编辑器

来源:互联网 发布:discuz nt 4.0 源码 编辑:程序博客网 时间:2024/06/08 20:07

Android基于友盟SDK的多渠道打包

今天看完了慕课网的Android apk的多渠道打包,感觉应该整理下代码逻辑,也为了方便以后自己整理思路,所以来总结一下步骤。
首先,在友盟的官网注册一个app,获取到24位的appkey。之后就是复制官方的配置代码了,直接按照官方的步骤来就可以了:
http://dev.umeng.com/analytics/android-doc/integration
因为我们开发使用的是Android Studio,所以直接在Gradle里面使用CV大法就好了,以下是Gradle的依赖添加代码:
dependencies {
compile ‘com.umeng.analytics:analytics:latest.integration’
}
完成依赖添加之后可以build一下项目,当然也可以继续配置AndroidManifest.xml里面的代码。首先,你需要把官网上的那几个需要的权限粘贴进去
这里写图片描述
当然,在targetSdkVersion>=23的时候,READ_PHONE_STATE这是敏感权限,如果不进行动态获取,可能导致项目跑不起来,所以直接改成22吧,相当于跳过6.0的权限检查。然后就是在application标签里面配置appkey了,代码如下:


<application ……>
……
<activity ……/>
<meta-data android:value="YOUR_APP_KEY" android:name="UMENG_APPKEY"/>
<meta-data android:value="Channel ID" android:name="UMENG_CHANNEL"/>
</application>
直接使用官网给我们的24位appkey替换掉”UMENG_APPKEY”的值,至于下面的”UMENG_CHANNEL”暂时使用一个占位符${UMENG_CHANNEL_VALUE}来占位吧,如果只是想要打单渠道的可以直接写死字符串。
接下来又得回到我们的build.gradle(Module:app)文件里面做操作了,首先在我们的defaultConfig 进行修改,
defaultConfig {
applicationId "com.test.main"
minSdkVersion 15
targetSdkVersion 22
versionCode 1
versionName "1.0"
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "umeng"]
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}

这里添加的那一行代码是设置AndroidManifest.xml的Channel ID默认值,就是你默认的渠道标记。随后就是对buildTypes的代码添加
buildTypes {
debug {}
release {
minifyEnabled false //代码混淆设置为true
shrinkResources minifyEnabled
proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’
//签名
signingConfig signingConfigs.release//为我们的Apk指定打包文件
//指定我们 release包的输出文件名就是我们的渠道名字
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith(‘.apk’)) {
def fileName = “${variant.productFlavors[0].name}” + “.apk”
output.outputFile = new File(outputFile.parent, fileName)
}
}
}

    }}里面 signingConfig signingConfigs.release这句代码需要添加我们的签名文件配置,需要创建一个跟buildTypes同级,却在buildTypes前面的配置块,这里需要注意一下,如果signingConfigs语句块在buildTypes语句块之后build的时候会出现这样的一个错误提示:Could not get unknown property 'release' for signingConfig container下面我们就来看看signingConfigs这个方法块里面的配置代码吧:signingConfigs {    debug {}    //为我们的release包添加文件配置    release {        //这样写需要把 key 文件放在 app 目录下        storeFile file("test.jks")//指定签名文件        storePassword "test123"//密码        keyAlias "test"//关键字        keyPassword "test123"//关键字的密码    }}以上代码配置完成之后,差不多就要进入正题了,开始配置多渠道了,还是与buildTypes语句块同级,不过这次不要求位置了,创建一个productFlavors的语句块,里面就是需要配置的渠道了,视频里面只配置了两个,代码如下: productFlavors {    xiaomi {

// 此处修改的数值需要在资源文件中注释掉
// resValues “string”, “app_name”, “必买清单_小米版”
}
baidu {}
}
当然了,这里只不过是做一个测试,后面的根据功能点打不同的包我没有测试成功,这里代码就不粘出来了,有兴趣的童鞋可以去慕课网看看视频,这里每个渠道里面并没有写任何的代码,处理代码我这里也粘出来吧:
productFlavors.all {
flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}

好了,准备工作完成之后,就可以去Android Studio的build选项卡下进行打包了,
这里写图片描述

直接选择 Generate Signed APK…那个选项,将你在生成test.jks时的那几个数值准确输入之后,点击next,查看Build Type的release的下拉选项选中,下面的Flavors是不是出现两个选项,全选之后即可开始打包。
打包完成后,可以在Android Studio的弹出框打开本地资源文件,看到打包完成的两个不同名称的.apk文件,至此,多渠道的打包就完成了。

原创粉丝点击