日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Gradle常用配置-版本号自增

發布時間:2024/1/17 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Gradle常用配置-版本号自增 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.



Android Studio使用Gradle進行構建,不僅可以非常方便的管理依賴,還可以自定義一些實用的功能,例如多渠道打包,自動簽名apk等。

多渠道打包

上線一款app后需要統計分析各個渠道的使用數據,這就需要對渠道進行標示,這里以友盟統計為例

  • 在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"]//默認渠道}??//自動多渠道打包productFlavors?{xiaomi?{}_360?{}baidu?{}wandoujia?{}?????//...添加其它渠道}productFlavors.all?{flavor?->?flavor.manifestPlaceholders?=?[UMENG_CHANNEL:?name]} }

自動簽名apk

使用命令行進行打包,需要讀取簽名配置并自動對apk進行簽名

  • 在module的根目錄下新建signing.properties文件

    STORE_FILE?=?/keystore.jks STORE_PASSWORD?=?123456KEY_ALIAS?=?example KEY_PASSWORD?=?123456
  • 在module的build.gradle中創建

    android?{signingConfigs?{debug?{}release?{storeFilestorePasswordkeyAliaskeyPassword}} }
  • 讀取配置文件

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} }
  • 更改release設置

android?{buildTypes?{release?{minifyEnabled?true??//開啟代碼混淆zipAlignEnabled?trueshrinkResources?true????//?移除無用的resource文件signingConfig?signingConfigs.releaseproguardFiles?getDefaultProguardFile('proguard-android.txt'),?'proguard-rules.pro'} }

版本號自增

每次編譯release版本時,版本號自動增加

  • 在module的根目錄下新建version.properties文件

    VERSION_CODE=1
  • 讀取版本號

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任務是增加版本號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!")} }
  • 修改defaultConfig

android?{????def?currentVersionCode?=?getVersionCode()defaultConfig?{applicationId?"com.linkzhang.gradlesample"minSdkVersion?15targetSdkVersion?23versionCode?currentVersionCodeversionName?"1.0"manifestPlaceholders?=?[UMENG_CHANNEL_VALUE:?"example"]//默認渠道} }

自定義apk名稱

導出的apk以app名版本號打包時間_渠道名_release.apk格式命名

  • 獲取app名稱和當前時間

//?獲取當前系統時間def?releaseTime()?{????return?new?Date().format("yyyy-MM-dd",?TimeZone.getTimeZone("UTC")) }//?獲取程序名稱def?getProductName(){????return?"gradlesample"}
  • 替換文件名

android?{buildType?{????????release?{//修改生成的apk名字,格式為?app名_版本號_打包時間_渠道名_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)}}}}} }

代碼

完整代碼

不足

每次新建項目都要復制一份,準備寫成Gradle插件發布到maven這樣就能很方便的引用了

參考和感謝

  • Android Studio Gradle實踐之多渠道自動化打包+版本號管理

  • 使用 Xcode 和 Android Studio 管理 iOS 和 Android 項目版本

  • Android Studio系列教程六--Gradle多渠道打包












本文轉自ljianbing51CTO博客,原文鏈接: ,http://blog.51cto.com/ljianbing/1744928如需轉載請自行聯系原作者






總結

以上是生活随笔為你收集整理的Gradle常用配置-版本号自增的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。