生活随笔
收集整理的這篇文章主要介紹了
Gradle常用配置-版本号自增
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Android Studio使用Gradle進(jìn)行構(gòu)建,不僅可以非常方便的管理依賴,還可以自定義一些實(shí)用的功能,例如多渠道打包,自動(dòng)簽名apk等。
多渠道打包
上線一款app后需要統(tǒng)計(jì)分析各個(gè)渠道的使用數(shù)據(jù),這就需要對(duì)渠道進(jìn)行標(biāo)示,這里以友盟統(tǒng)計(jì)為例
-
在AndroidManifest中加入占位符
<meta-dataandroid:name="UMENG_CHANNEL"android:value="${UMENG_CHANNEL}"/> -
在module的build.gradle中加入
android?{defaultConfig?{applicationId?"com.linkzhang.gradlesample"minSdkVersion?15targetSdkVersion?23versionCode?1versionName?"1.0"manifestPlaceholders?=?[UMENG_CHANNEL:?"example"]//默認(rèn)渠道}??//自動(dòng)多渠道打包productFlavors?{xiaomi?{}_360?{}baidu?{}wandoujia?{}?????//...添加其它渠道}productFlavors.all?{flavor?->?flavor.manifestPlaceholders?=?[UMENG_CHANNEL:?name]}
}
自動(dòng)簽名apk
使用命令行進(jìn)行打包,需要讀取簽名配置并自動(dòng)對(duì)apk進(jìn)行簽名
android?{signingConfigs?{debug?{}release?{storeFilestorePasswordkeyAliaskeyPassword}}getSigningProperties()
}//讀取簽名配置文件def?getSigningProperties(){????def?propFile?=?file('signing.properties')????if?(propFile.canRead()){????????def?Properties?props?=?new?Properties()props.load(new?FileInputStream(propFile))????????if?(props!=null?&&?props.containsKey('STORE_FILE')?&&?props.containsKey('STORE_PASSWORD')?&&props.containsKey('KEY_ALIAS')?&&?props.containsKey('KEY_PASSWORD'))?{android.signingConfigs.release.storeFile?=?file(props['STORE_FILE'])android.signingConfigs.release.storePassword?=?props['STORE_PASSWORD']android.signingConfigs.release.keyAlias?=?props['KEY_ALIAS']android.signingConfigs.release.keyPassword?=?props['KEY_PASSWORD']}?else?{println?'signing.properties?found?but?some?entries?are?missing'android.buildTypes.release.signingConfig?=?null}}else?{println?'signing.properties?not?found'android.buildTypes.release.signingConfig?=?null}
}
android?{buildTypes?{release?{minifyEnabled?true??//開(kāi)啟代碼混淆zipAlignEnabled?trueshrinkResources?true????//?移除無(wú)用的resource文件signingConfig?signingConfigs.releaseproguardFiles?getDefaultProguardFile('proguard-android.txt'),?'proguard-rules.pro'}
}
版本號(hào)自增
每次編譯release版本時(shí),版本號(hào)自動(dòng)增加
def?getVersionCode()?{????def?versionFile?=?file('version.properties')????if?(versionFile.canRead()){????????def?Properties?versionProps?=?new?Properties()versionProps.load(new?FileInputStream(versionFile))????????def?versionCode?=?versionProps['VERSION_CODE'].toInteger()????????def?runTasks?=?gradle.startParameter.taskNames????????//僅在assembleRelease任務(wù)是增加版本號(hào)if?('assembleRelease'?in?runTasks)?{versionProps['VERSION_CODE']?=?(++versionCode).toString()versionProps.store(versionFile.newWriter(),?null)}????????return?versionCode}?else?{????????throw?new?GradleException("Could?not?find?version.properties!")}
}
android?{????def?currentVersionCode?=?getVersionCode()defaultConfig?{applicationId?"com.linkzhang.gradlesample"minSdkVersion?15targetSdkVersion?23versionCode?currentVersionCodeversionName?"1.0"manifestPlaceholders?=?[UMENG_CHANNEL_VALUE:?"example"]//默認(rèn)渠道}
}
自定義apk名稱
導(dǎo)出的apk以app名版本號(hào)打包時(shí)間_渠道名_release.apk格式命名
//?獲取當(dāng)前系統(tǒng)時(shí)間def?releaseTime()?{????return?new?Date().format("yyyy-MM-dd",?TimeZone.getTimeZone("UTC"))
}//?獲取程序名稱def?getProductName(){????return?"gradlesample"}
android?{buildType?{????????release?{//修改生成的apk名字,格式為?app名_版本號(hào)_打包時(shí)間_渠道名_release.apkapplicationVariants.all?{?variant?->variant.outputs.each?{?output?->????????????????????def?oldFile?=?output.outputFile????????????????????if?(variant.buildType.name.equals('release'))?{????????????????????????def?releaseApkName?=?getProductName()?+?"_v${defaultConfig.versionName}_${releaseTime()}_"?+?variant.productFlavors[0].name?+?'_release.apk'output.outputFile?=?new?File(oldFile.parent,?releaseApkName)}}}}}
}
代碼
完整代碼
不足
每次新建項(xiàng)目都要復(fù)制一份,準(zhǔn)備寫(xiě)成Gradle插件發(fā)布到maven這樣就能很方便的引用了
參考和感謝
-
Android Studio Gradle實(shí)踐之多渠道自動(dòng)化打包+版本號(hào)管理
-
使用 Xcode 和 Android Studio 管理 iOS 和 Android 項(xiàng)目版本
-
Android Studio系列教程六--Gradle多渠道打包
本文轉(zhuǎn)自ljianbing51CTO博客,原文鏈接: ,http://blog.51cto.com/ljianbing/1744928如需轉(zhuǎn)載請(qǐng)自行聯(lián)系原作者
總結(jié)
以上是生活随笔為你收集整理的Gradle常用配置-版本号自增的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。