AndroidStudio使用gradle打包并实现多渠道打包
来源:互联网 发布:网络嗅探器用哪个好 编辑:程序博客网 时间:2024/06/07 11:36
介绍:
Google推出了新的开发工具,AndroidStudio,并且采用了新的工程构建工具,Gradle构建。在每个项目中,都会有一个build.gradle文件来构建。这里,主要来讲打包方面常见的操作。默认,会产生2个版本,debug版本和release版本。
需求:
打包一个apk十分简单,需要的就是一个密钥。点击build->Generate Signed APK 就会通过图形化界面进行傻瓜式操作了,但Android实际开发中,都需要放到多个应用市场,为了进行统计,会对不同市场上的apk进行区别,友盟也可以统计到不同市场的用户数据,都是需要这个标识,即渠道号。要实现多渠道打包,就需要了解一下gradle中关于打包方面的一些东西了。
了解gradle打包的基本知识:
a:签名信息的配置
signingConfigs {
config {
keyAlias 'xxx'
keyPassword 'xxx'
storeFile file('/Users/air/develop/xxx')
storePassword 'xxx'
}
}
b:构建类型(debug版本和正式版的一些配置,如是不是最小化,是不是混淆代码等)
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.config
}
}
有了签名信息,就可以进行apk的输出了,说实话,刚开始百度了一些如何使用gradle进行apk打包,说的基本上都是通过命令行来完成,基本上全部是你复制我,我复制他的,很水。AndroidStudio的图形化界面就很好的提供了操作。
最右边的Gradle就可以看到你工程下的所有项目(如果没有显示就点击刷新一下就有了),点击这个assemble就可以打包了,同样,下面也提供了针对debug或者release版本的构建,非常方便。好了,看一下我们的劳动成果吧。注:gradle默认有输出目录,就是在xxx\build\outputs\apk,xxx是你的项目目录。在这里,就会找到打包好的apk了。
其实,在上面的签名信息配置和构建类型同样提供了图形化的界面,在 Project Structure中,可以进行签名等信息的配置。在这里进行添加,删除都会自动修改build.gradle这个文件的信息的,所以,本人认为在这里更好,傻瓜式操作,多简单。
如何实现多渠道的打包
为了方便数据的统计,友盟是常用的第三方sdk,需要我们在 AndroidManifest.xml中配置如下标签。
<meta-data
android:name="CHANNEL"
android:value="channel"
/>
这个value值就是渠道号。一个个手动改太麻烦了,只需要在gradle中加几行代码就可以了。
productFlavors {
baidu {
}
wandoujia {
}
}
//将value中具体值改为x,在构建的时候改变
<meta-data
android:name="CHANNEL"
android:value="${x}"
/>
productFlavors.all {
flavor -> flavor.manifestPlaceholders = [x: name]
}
这样,就可以产生baidu,wandoujia,2个渠道的apk包了。同样,productFlavors提供了图形化的界面,就是上图的Flavors选项了。不停的添加就行了,把name替换x就是value了。
自定义apk的输出路径和名称
默认的输出路径太麻烦,名称为module名+渠道号+版本信息三部分组成,如:app-baidu-debug.apk。
下面的代码可以完成自定义。
def outputDir = "/Users/air/Desktop/myapk"
def startName = "start"
android{
……
}
android{
……
android.applicationVariants.all { variant ->
def file = variant.outputs[0].outputFile
def fileParent = new File(outputDir)
// String name = file.name
// String[] arr = name.split("-")
variant.outputs[0].outputFile =
new File(fileParent,startName +"-"+name+"-" + defaultConfig.versionName + ".apk")
}
}
解释:把apk输出到/Users/air/Desktop/myapk这个目录下,修改名字为前面是start,中间是渠道号,后面是版本号。如:start-baidu-1.0.apk,并且,这里的就是我们需要的版本,什么debug版本不会在这里输出。
贴一份gradle文件
def outputDir = "/Users/air/Desktop/myapk"
def startName = "start"
android {
signingConfigs {
config {
keyAlias 'xxx'
keyPassword 'xxx'
storeFile file('/Users/air/develop/xxx')
storePassword 'xxx'
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.config
}
}
productFlavors {
baidu {
}
wandoujia {
}
}
productFlavors.all {
flavor -> flavor.manifestPlaceholders = [x: name]
}
android.applicationVariants.all { variant ->
def file = variant.outputs[0].outputFile
def fileParent = new File(outputDir)
// String name = file.name
// String[] arr = name.split("-")
variant.outputs[0].outputFile =
new File(fileParent,startName +"_"+name+"_" + defaultConfig.versionName + ".apk")
}
}
关于gradle其它的就不显示了,就列出打包的操作,上面都有提到。好了,终于完成的gradle的apk打包了。
如何更快的打包
虽然完成了多渠道的打包,上面的每打一个渠道,都会进行一次构建,如果就几十个渠道包的时候,半小时的打包是免不了了。能不能一次构建,就可以实现产生多个不同标识的apk的,答案是可以的,具体百度一下:美团的打包之旅。里面完全讲述了如何更快的打包,需要python来实现。亲测,这个方案非常方便。一次操作,长期使用。这里就不多说了。
0 0
- AndroidStudio使用gradle打包并实现多渠道打包
- 使用AndroidStudio实现多渠道打包
- AndroidStudio多渠道打包使用
- gradle实现多渠道打包
- Gradle实现多渠道打包
- 使用gradle多渠道打包
- Android快速使用Gradle实现多渠道打包
- Android使用Gradle实现多渠道打包
- 关于androidStudio使用多渠道打包
- AndroidStudio-Gradle定制多签名多渠道打包
- 通过Gradle实现多渠道打包
- Gradle实现多渠道OEM打包
- 使用gradle进行多渠道打包
- Android 使用 Gradle 多渠道打包
- Android 使用 Gradle 多渠道打包
- 使用Android studio Gradle 实现友盟多渠道打包
- 使用Android studio Gradle 实现友盟多渠道打包
- 使用Android studio Gradle 实现友盟多渠道打包
- 48.Oracle数据库SQL开发之 子查询——编写单行子查询
- Swift 类的初始化和反初始化
- poj 2250 Compromise(LCS)
- 49.Oracle数据库SQL开发之 子查询——编写多行子查询
- 50.Oracle数据库SQL开发之 子查询——编写多列子查询
- AndroidStudio使用gradle打包并实现多渠道打包
- Codeforces 595B Pasha and Phone 【数学计数】
- Reverse Nodes in k-Group
- 51.Oracle数据库SQL开发之 子查询——编写关联子查询
- Android-在 GreenDao 数据库中添加默认值
- 求最大子序列问题
- 赫夫曼树-c语言实现
- (重点)为一个新用户在Oracle中创建新数据库步骤 2012-10-25 10:27:02
- 52.Oracle数据库SQL开发之 子查询——编写嵌套子查询