編輯:Android資訊
gradle-packer-plugin 是Android多渠道打包工具Gradle插件,可方便的於自動化構建系統集成,通過很少的配置可實現如下功能 :
gradle-packer-plugin 庫路徑:com.mcxiaoke.gradle:packer:1.0.+簡短名:packer,可以在項目的build.gradle中指定使用

buildscript {
repositories {
mavenCentral()
}
dependencies{
classpath 'com.mcxiaoke.gradle:packer:1.0.+'
}
}
apply plugin: 'packer'
需要在命令行指定 -Pmarket=yourMarketFileName屬性,market是你的渠道名列表文件名,market文件是基於項目根目錄的相對路徑,假設你的項目位於~/github/myapp你的market文件位於~/github/myapp/config/markets.txt那麼參數應該是-Pmarket=config/markets.txt,一般建議直接放在項目根目錄,如果market文件參數錯誤或者文件不存在會拋出異常
渠道名列表文件是純文本文件,每行一個渠道號,列表解析的時候會自動忽略空白行,但是格式不規范會報錯,渠道名和注釋之間用#號分割開,行示例:
Google_Play#play store market Gradle_Test#test SomeMarket#some market
渠道打包的命令行參數格式示例(在項目根目錄執行):
./gradlew -Pmarket=markets.txt clean archiveApkRelease
可以使用archiveNameFormat自定義渠道打包輸出的APK文件名格式,默認格式是
${appPkg}-${flavorName}-${buildType}-v${versionName}-${versionCode}
舉例:假如你的App包名是com.your.company,渠道名是Google_Play,buildType是release,versionName是2.1.15,versionCode是200115,那麼生成的APK的文件名是
com.your.company-Google_Player-release-2.1.15-20015.apk
版本號自動會自動在在vesionName尾部增加.buildNumer該字段會自動增長,舉例:如果App本來的版本號是 1.2.3,那麼使用版本號自動後會是1.2.3.11.2.3.2…1.2.3.25末尾的build版本號會隨構建次數自動增長。注意:如果在命令行使用-PbuildNum=123這種形式指定了build版本號,那麼自增版本號不會生肖
packer {
// 指定渠道打包輸出目錄
// archiveOutput = file(new File(project.rootProject.buildDir.path, "archives"))
// 指定渠道打包輸出文件名格式
// archiveNameFormat = ''
// 指定渠道打包需要修改的AndroidManifest文件項
manifestMatcher = ['UMENG_CHANNEL','Promotion_Market']
}
./gradlew -Pmarket=markets.txt clean archiveApkRelease // Windows系統下替換為: gradle.bat -Pmarket=markets.txt clean archiveApkRelease // 或 gradlew.bat -Pmarket=markets.txt clean archiveApkRelease
如果沒有錯誤,打包完成後你可以在${項目根目錄}/build/archives/目錄找到最終的渠道包。說明:渠道打包的Gradle Task名字是archiveApk${buildType}buildType一般是release,也可以是你自己指定的beta或者someOtherType,使用時首字母需要大寫,例如release的渠道包任務名是archiveApkRelease,beta的渠道包任務名是archiveApkBeta,其它的以此類推
packer {
// 指定是否使用build版本號自增
buildNumberAuto = true
// 指定使用版本號自增的buildType,默認是全部
buildNumberTypeMatcher = ['release', 'beta']
}
項目的samples目錄包含一個完整的項目示例,可以查看其中的build.gradle
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.0.0'
// `添加packer插件依賴`
classpath 'com.mcxiaoke.gradle:packer:1.0.0'
}
}
repositories {
mavenCentral()
}
apply plugin: 'com.android.application'
// 建議放在 `com.android.application` 下面
// `使用 apply plugin使用packer插件`
apply plugin: 'packer'
packer {
// 指定渠道打包輸出目錄
archiveOutput = file(new File(project.rootProject.buildDir.path, "apks"))
// 指定渠道打包輸出文件名格式
archiveNameFormat = ''
// 指定渠道打包需要修改的AndroidManifest文件項
manifestMatcher = ['UMENG_CHANNEL','Promotion_Market']
// 指定是否使用build版本號自增
buildNumberAuto = true
// 指定使用版本號自增的buildType,默認是全部
buildNumberTypeMatcher = ['release', 'beta']
}
android {
compileSdkVersion 21
buildToolsVersion "21.1.1"
defaultConfig {
applicationId "com.mcxiaoke.packer.sample"
minSdkVersion 15
targetSdkVersion 21
versionCode 12345
versionName "1.2.3"
}
signingConfigs {
release {
storeFile file("android.keystore")
storePassword "android"
keyAlias "android"
keyPassword "android"
}
}
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled false
}
beta {
signingConfig signingConfigs.release
minifyEnabled false
debuggable true
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:support-v4:21.0.2'
}
plugin目錄是插件的源代碼,用Groovy語言編寫,項目sample目錄是一個完整的Andoid項目示例,在項目根目錄有幾個腳本可以用於測試:
本項目參考了公司內部Android項目使用的多渠道打包工具,最初作者是 googolmo,文件名模板自定義部分的代碼修改自此項目 android-appversion-gradle-plugin
十大技巧優化Android App性能
無論錘子還是茄子手機的不斷冒出,Android系統的手機市場占有率目前來說還是最大的,因此基於Android開發的App數量也是很龐大的。那麼,如何能開發出更高性
Android 動態布局實現多主題切換
之前做過一個項目(隨心壁紙),主要展示過去每期的壁紙主題以及相應的壁紙,而且策劃要求,最好可以動態變換主題呈現方式,這樣用戶體驗會比較好。嗯,好吧,策劃的話,咱們
Win10想兼容安卓和iOS應用,你怎麼看?
在智能手機操作系統上,微軟公司的WP全球份額不到3%,業界普遍認為敗局已定、微軟回天無力。上個月,微軟令人吃驚對外宣布,將提供工具,讓開發者將自家的iOS和安卓軟
Android性能優化之加快應用啟動速度
應用的啟動 啟動方式 通常來說,在安卓中應用的啟動方式分為兩種:冷啟動和熱啟動。 1、冷啟動:當啟動應用時,後台沒有該應用的進程,這時系統會重新創建一個新的進