Android Gradle复制打包的apk到固定目录

fldm 8年前

来自: http://blog.csdn.net//guijiaoba/article/details/42655437


最近项目开发工具由原先的Eclipse转移到Android Studio,原先的打包工具由ant转化到gradle。

原先写过用python重名多渠道打包的apk,现在由于使用的时Android Studio,项目编译使用的时Gradle,同事Gradle是基于Groovy的,反正也是一种类似Pythong的脚本语言。

这个语言是基于Jvm的,就是说,你开发的Java程序完全可以在这个上面跑,同时可以在gradle中编写Java代码。


项目中apk编译生成的apk存放的目录在

${Project}/app/build/outputs/apk

中,而且我使用还是mac系统,在Android studio中完全看不到这个目录,每次去获取apk的时候,非常麻烦,所以我写了下面的脚本,自动复制和重名生成的apk。

命名格式如下所示,

 // eg: org.liushui.test_v1.0.20_20150107151516_realse_site.apk

String appName = String.format("%s_v%s_%s_%s_%s.apk", applicationId, versionName, time, buildType, channel);


如果你会Java的话,那么上面的代码则是很容理解的。

下面是主要的脚本,放到${Project}/app/build.grale中即可。

apply plugin: 'com.android.application'      android {      // ***  }    dependencies {      // *****  }  /// **********************下面的代码才是最主要的*************************  build {      doLast {          def fileName = "app-release.apk"          def fromFile = "./build/outputs/apk/" + fileName          def intoFile = "./outapks/"              def applicationId = android.defaultConfig.applicationId          def versionName = android.defaultConfig.versionName          def time = new java.text.SimpleDateFormat("yyyyMMddHHmmss").format(new Date())          def buildType = "realse"          def channel = "site"              def appName = "${applicationId}_v${versionName}_${time}_${buildType}_${channel}.apk"              // copy --> rename          copy {              from fromFile              into intoFile                  rename {                  appName              }          }              println("=====================build.doLast success.=========================")      }  }