前言
最近学习了多渠道打包,此博客用以记录学习的内容
多渠道打包,渠道可以理解为应用市场,多渠道打包就是生成支持各种应用市场的apk文件,因为安卓的应用市场很多,所以这个知识也是很重要的
··············································
开始,我们使用友盟的多渠道打包sdk
首先把步骤列出
获取appkey
那么第一步
百度搜索友盟,注册账号
找到U-APP应用统计,点击进入
进入后,点击立即使用
进入后,左下角会有一个添加新应用
打开android stuido新建一个安卓项目
刚好今天新建了一个broadcastreceiver demo就将就着用吧
然后点击添加新应用
下面是我填写好后的信息
点击提交,获取appkey
这个时候完成了我们的第一步
获取到了我们的应用对应的appkey
添加友盟的sdk
接下来添加友盟的统计库
android studio可以直接使用代码添加,eclipse的可以去友盟官网看一下导入方法,都是很简单的
在app的build的配置文件中dependencies下添加
compile 'com.umeng.analytics:analytics:latest.integration'
如果添加失败了
就在project的build中添加
allprojects {
repositories {
mavenCentral()
}
}
这是添加maven库,默认的只有jcenter库,有的时候可能会有一些奇怪的原因导致你在jcenter库中没有下载下来,
配置manifest文件
首先添加权限
添加在applica标签的外面
<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"/>
接下来添加友盟对应的meta-data
<meta-data android:value="YOUR_APP_KEY" android:name="UMENG_APPKEY"/>
<meta-data android:value="Channel ID" android:name="UMENG_CHANNEL"/>
添加在application标签的里面
对齐进行修改
<meta-data
android:name="YOUR_APP_KEY"
android:value="58b3959875ca351577000840"/>
<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_NAME}"/>
因为我们添加的是多渠道打包,所以需要动态的配置,所以这里使用占位符$,这样方便在后续的操作中进行修改
生成签名文件,并配置进项目
首先生成签名文件,需要debug包的也可以配置debug配置
点击build,在点击红色圈选中的选项
点击creat new
接下来大家自己生成俩个,一个的buildtype选择debug一个选择release就行了
然后得到了俩个jks文件
接下来把签名文件配置到我们的APP项目中
点击
将debug和release都配置好
进入APP的build中
会发现帮我们默认生成了很多东西
比如
···
signingConfigs {
debug {
keyAlias ‘china’
keyPassword ‘123456’
storeFile file(‘D:/work/debug.jks’)
storePassword ‘123456’
}
release {
keyAlias ‘china’
keyPassword ‘123456’
storeFile file(‘D:/work/release.jks’)
storePassword ‘123456’
}
}
···
添加打包脚本
接下来继续对app的build进行修改
修改如下,新添加的代码行我都标上了注释
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "25.0.1"
defaultConfig {
applicationId "com.anlaiye.swt.broadcastreceiver"
minSdkVersion 14
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true //突破应用方法数为65535的限制
manifestPlaceholders = [UMENG_CHANNEL_NAME: "UMENG"] //为meta_data添加placeholder
}
//导入jks文件后会自动生成
signingConfigs {
debug {
keyAlias 'china'
keyPassword '123456'
storeFile file('D:/work/debug.jks')
storePassword '123456'
}
release {
keyAlias 'china'
keyPassword '123456'
storeFile file('D:/work/release.jks')
storePassword '123456'
}
}
//这里添加release,和debug的指向
buildTypes {
release {
minifyEnabled false //这里是代码混淆,展示不需要,默认false就行
signingConfig signingConfigs.release //添加release签名
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
minifyEnabled false
signingConfig signingConfigs.debug //添加debug签名
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors { //在这里添加你所有需要打包的渠道
xiaomi {} //xiaomi渠道
meizu {} //魅族
//遍历上面填写的渠道修改为对应的name
productFlavors.all { flavor ->
flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
}
//对生成的apk进行一些简单的配置
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
def buildType
if (variant.buildType.name.equals('release')) {
buildType = "release"
} else if (variant.buildType.name.equals('debug')) {
buildType = "debug"
}
if (outputFile != null && outputFile.name.endsWith('.apk')) {
// 输出apk名称为我们自己配置的名字+.apk
//def fileName = "Anlaiye-v${defaultConfig.versionName}-${getDate()}-${variant.productFlavors[0].name}-${buildType}.apk"
def fileName = "Sunwentao-v${defaultConfig.versionName}-${variant.productFlavors[0].name}-${buildType}.apk"
output.outputFile = new File(outputFile.parent + buildType, fileName)
}
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.0.1'
testCompile 'junit:junit:4.12'
compile 'com.umeng.analytics:analytics:latest.integration'
}
mac打包命令
./dradlew assembleRelease
windows下打包命令
gradlew assembleRelease
输入后开始打包
打包成功
在project视图下 找到build目录下面有个release
可以看到生成了xiaomi和魅族的release包
同时生成的名字也是我们自定义设置的名字
到这里基本上就都已经结束了
同时这里要说一个坑 就是signingConfigs 要放到buildtype上面,不然会报错 ,很奇怪的东西
同时360渠道的渠道包是需要下载360加固助手进行加固才能上到应用市场的
好了 祝大家打包愉快