您的位置:首页 > 移动开发 > Android开发

Android Studio 利用gradlew多渠道打包

2016-01-05 19:59 567 查看
前面我们已经介绍了使用蓝贝壳儿打包,但是那只能使用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 命令

./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下的代码混淆等。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: