前面我们已经介绍了使用蓝贝壳儿打包,但是那只能使用eclipse来进行,因为好像没有发现android studio有那个插件,以前也介绍了打jar(gradlew makeJar),这里介绍使用AS利用gradlew多渠道打包(APK):
1.as手动添加渠道
然后我们去看Modul的gradle文件:
productFlavors { meizu { minSdkVersion 21 proguardFile 'E:/AndroidStudioProjects/RevealLayout/app/proguard-rules.pro' targetSdkVersion 23 versionName '1.0' } }显然我们不太喜欢去手动添加,因为感觉还是相对的麻烦。
所以我们可以直接在gradle脚本里操作:
productFlavors { dev { manifestPlaceholders = [channel: "dev"] } xiaomi { manifestPlaceholders = [channel: "xiaomi"] } wandoujia { manifestPlaceholders = [channel: "wandoujia"] } "360" { manifestPlaceholders = [channel: "360"] } }这样我们就轻松的配置了4个渠道信息,是不是感觉比那个还是简单点。。
接着我们去同步(asyn now)一次,发现Build Variant会多了很多渠道是不是
渠道配置好了,接下来我们就是来打包了
直接在终端:gradlew build
等所有的apk都打完我使用了 2 mins 28.212 secs,感觉机子还是相当的渣。
这样就会把所有的包打好,每种渠道的debug和release版本都会打包。当然这些都是没有签名文件的,我这里是演示一下gradlew build命令而已。
没有签名文件的就需要生成签名文件
(不会去百度,我艹),有签名文件的那就好办了,直接来配置build.gradle
buildTypes { debug { manifestPlaceholders = [app_label:"@string/app_name_debug"] } release { manifestPlaceholders = [app_label:"@string/app_name"] } preview{ manifestPlaceholders = [app_label:"@string/app_name_preview"] } }签名信息的配置
signingConfigs { debug { storeFile file("C:/Users/test1/Desktop/android.jks") storePassword "xxxxxx" keyAlias "xxxxx" keyPassword "xxxxxx" } preview { storeFile file("C:/Users/test1/Desktop/android.jks") storePassword "xxxxxx" keyAlias "xxxxxx" keyPassword "xxxxx" } release { storeFile file("C:/Users/test1/Desktop/android.jks") storePassword "xxxxxx" keyAlias "xxxxxx" keyPassword "xxxxxx" } }接下来我们就来根据配置的渠道,来输出目录:
applicationVariants.all { variant -> variant.outputs.each { output -> output.outputFile = new File( output.outputFile.parent, "RevealLayout-${variant.buildType.name}-${variant.versionName}-${variant.productFlavors[0].name}.apk".toLowerCase()) } }接下来就是看图,新生成的apk文件:
是不是生成了签名的apk文件了,不扯了,我也是醉了。
我靠,AS多渠道打包就搞完了,不解释,你要学习
./gradlew clean 删除HelloWord/app目录下的build文件夹
./gradlew build 检查依赖并编译打包
这里注意的是./gradlewbuild命令把debug、release环境的包都打出来,生成的包在目录XXX/app/build/outputs/apk/下。如果正式发布只需要打release的包,该怎么办呢,下面介绍一个很有用的命令 assemble, 如
./gradlew assembleDebug 编译并打Debug包
./gradlew assemblexiaomiDebug 编译并打xiaomi的debug包,其他类似
./gradlew assembleRelease 编译并打Release的包
./gradlew assemblexiaomiRelease 编译并打xiaomi的Release包,其他类似
./gradlew installRelease Release模式打包并安装
./gradlew uninstallRelease 卸载Release模式包
1 gradlew build 和 gradle build 有区别吗?
使用gradle wrapper是gradle官方推荐的build方式,而gradlew正是运行了wrapper task之后生成的(运行wrapper task是Android Studio自动做的)。使用gralde wrapper的一个好处就是每个项目可以依赖不同版本的gradle,构建的时候gradle wrapper会帮你自动下载所依赖的版本的gradle。而如果你使用gradle build的话,同时你又有多个项目使用不同版本的gradle,那就需要你手动在自己的机器上配置多个版本的gradle,稍微麻烦一些
本文参考http://www.jayfeng.com/2015/11/07/Android%E6%89%93%E5%8C%85%E7%9A%84%E9%82%A3%E4%BA%9B%E4%BA%8B/
哈哈哈,里面还包含了AS下的代码混淆等。