android gradle打包生成两个包,怎么去掉debug版本
1个回答
2014-12-28 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
向TA提问 私信TA
知道合伙人数码行家
采纳数:117538
获赞数:517184
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。
向TA提问 私信TA
关注
展开全部
Gralde 打包参数详解
上面说了一大堆东西,其实并不吸引人去使用gradle,如果只是构建项目的话,adt不是更合适吗?如果,你看完以下内容还是这么觉得的话,你就没必要折腾gradle了。。。。。。
打签名包
看附录 默认输出 release apk 是没有签名的,那么我们需要签名的很简单,只需要在android{}里面补充加上加上即可。完整build.gradle 请点击我的gist
build.gradle
signingConfigs {
myConfig{
storeFile file("gradle.keystore")
storePassword "gradle"
keyAlias "gradle"
keyPassword "gradle"
}
}
buildTypes{
release {
signingConfig signingConfigs.myConfig
}
}
然后,运行gradle clean gradle build ,这次在build/apk 你看到了多了一个[项目名]-release-unaligned, 从字面上面我就可以知道,这个只是没有进行zipAlign 优化的版本而已。而[项目名]-release 就是我们签名,并且zipAlign 的apk包了. ###打混淆包### 只需要在原来的基础上加上,完整的proguad.gradle 代码 build.gradle
gradle clean
gradle build
打多渠道包(Product Flavor)
现在来解释一下上一节的问题,apk目录下的两个apk 的含义
为什么产生了两个apk?
默认的android gralde 插件定义了两种apk 的类型debug, release,这两种类型的详细对比看附录。
这个是android gralde 插件 buildTypes{} 方法产生的,默认配置好了两个默认模板,当然你也可以修改,前面我们就是在修改默认的release 的配置,让输出release类型的的apk,具有签名和混淆。
对于多渠道包,android 插件提供了一个名为Product Flavor{} 的配置,用于进行多渠道打包。
例如,我的android应用有海外版,和国内版本,而且这两个版本的包名是不一样的!!(我就举两个市场的例子安装这个思路,你要打包100个不同的市场只是几行代码的事情。)。
你只需要在android{} 补充上
build.gradle
productFlavors {
playstore {
packageName='com.youxiachai.androidgradle.playstore'
}
hiapk {
packageName='com.youxiachai.androidgradle.amazonappstore'
}
}
仅此而已?然后gradle clean,gradle build,在build/apk 下面你会看到一堆的包,命名格式[项目名]-[渠道名]-release
Product Flavor{} 不只是能改包名那么简单,还能够对编译的源码目录进行切换。
什么意思? 不知道各位有没有用过友盟做用户统计,如果,你用的是分发渠道分析,你需要修改AndroidManifest.xml 添加上
如果,你很多渠道,,然后你就会很痛苦,现在用gradle 就非常舒服,你只需要在android.sourceSets指定我们的渠道名就行,android gradle 插件,会自动打包!!!例如
build.gradle
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
hiapk {
manifest.srcFile 'hiapk/AndroidManifest.xml'
}
playstore {
manifest.srcFile 'hiapk/AndroidManifest.xml'
}
instrumentTest.setRoot('tests')
}
然后运行gradle clean,gradle build,省下的时间去喝杯咖啡,睡个觉什么的都好。。。 ###外部依赖### android gradle 对于外部jar 包的应用支持maven/ivy 管理的包,也支持指定具体文件,前面已经在上文说过。上面演示的完整 build.gradle gist 里面也有写。你需要加上如下代码即可: build.gradle
上面说了一大堆东西,其实并不吸引人去使用gradle,如果只是构建项目的话,adt不是更合适吗?如果,你看完以下内容还是这么觉得的话,你就没必要折腾gradle了。。。。。。
打签名包
看附录 默认输出 release apk 是没有签名的,那么我们需要签名的很简单,只需要在android{}里面补充加上加上即可。完整build.gradle 请点击我的gist
build.gradle
signingConfigs {
myConfig{
storeFile file("gradle.keystore")
storePassword "gradle"
keyAlias "gradle"
keyPassword "gradle"
}
}
buildTypes{
release {
signingConfig signingConfigs.myConfig
}
}
然后,运行gradle clean gradle build ,这次在build/apk 你看到了多了一个[项目名]-release-unaligned, 从字面上面我就可以知道,这个只是没有进行zipAlign 优化的版本而已。而[项目名]-release 就是我们签名,并且zipAlign 的apk包了. ###打混淆包### 只需要在原来的基础上加上,完整的proguad.gradle 代码 build.gradle
gradle clean
gradle build
打多渠道包(Product Flavor)
现在来解释一下上一节的问题,apk目录下的两个apk 的含义
为什么产生了两个apk?
默认的android gralde 插件定义了两种apk 的类型debug, release,这两种类型的详细对比看附录。
这个是android gralde 插件 buildTypes{} 方法产生的,默认配置好了两个默认模板,当然你也可以修改,前面我们就是在修改默认的release 的配置,让输出release类型的的apk,具有签名和混淆。
对于多渠道包,android 插件提供了一个名为Product Flavor{} 的配置,用于进行多渠道打包。
例如,我的android应用有海外版,和国内版本,而且这两个版本的包名是不一样的!!(我就举两个市场的例子安装这个思路,你要打包100个不同的市场只是几行代码的事情。)。
你只需要在android{} 补充上
build.gradle
productFlavors {
playstore {
packageName='com.youxiachai.androidgradle.playstore'
}
hiapk {
packageName='com.youxiachai.androidgradle.amazonappstore'
}
}
仅此而已?然后gradle clean,gradle build,在build/apk 下面你会看到一堆的包,命名格式[项目名]-[渠道名]-release
Product Flavor{} 不只是能改包名那么简单,还能够对编译的源码目录进行切换。
什么意思? 不知道各位有没有用过友盟做用户统计,如果,你用的是分发渠道分析,你需要修改AndroidManifest.xml 添加上
如果,你很多渠道,,然后你就会很痛苦,现在用gradle 就非常舒服,你只需要在android.sourceSets指定我们的渠道名就行,android gradle 插件,会自动打包!!!例如
build.gradle
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
hiapk {
manifest.srcFile 'hiapk/AndroidManifest.xml'
}
playstore {
manifest.srcFile 'hiapk/AndroidManifest.xml'
}
instrumentTest.setRoot('tests')
}
然后运行gradle clean,gradle build,省下的时间去喝杯咖啡,睡个觉什么的都好。。。 ###外部依赖### android gradle 对于外部jar 包的应用支持maven/ivy 管理的包,也支持指定具体文件,前面已经在上文说过。上面演示的完整 build.gradle gist 里面也有写。你需要加上如下代码即可: build.gradle
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询