最近項(xiàng)目中要實(shí)現(xiàn)一個需求鸿脓,打出不同資源文件的安裝包抑钟,之前有過項(xiàng)目經(jīng)驗(yàn),但是是通過前端大佬編寫linux腳本來實(shí)現(xiàn)資源替換野哭,現(xiàn)在采用jenkins來實(shí)現(xiàn)在塔,jenkins通過實(shí)現(xiàn)gradle腳本動態(tài)實(shí)現(xiàn)多渠道資源文件的可視化界面選擇功能拨黔,最終打出多個渠道不同資源文件的安裝包蛔溃,閑言少敘,進(jìn)入正篇篱蝇。
jenkins的安裝:
1.我這里采用的是.msi文件進(jìn)行服務(wù)搭建贺待,.msi安裝成功后,需要在后臺啟動服務(wù)零截;(通過localhost:8080瀏覽器進(jìn)行訪問)
2.然后進(jìn)行插件更新狠持,這個需要很久,樓主都是更新了好長時間瞻润,各種失敗,小伙伴們不要擔(dān)心,就算失敗绍撞,最終進(jìn)去還是可以更新的正勒,更新完了我們就可以申請賬號,進(jìn)行項(xiàng)目的構(gòu)建了傻铣;
3.在workspace(工作空間下創(chuàng)建自己的項(xiàng)目),然后就可以配置多渠道打包的構(gòu)建環(huán)境了非洲,看看我的配置屬性:
注意:如果如果要選擇打多個渠道的包鸭限,賦值為空;
4.最后就可以進(jìn)行項(xiàng)目可視化構(gòu)建了
5.再來看看項(xiàng)目結(jié)構(gòu)與配置 簽名文件配置、多渠道資源文件配置梦染、自定義輸出app名字與目錄:
注意:渠道的名字一定要與app目錄下文件的名字一致赡麦,要么無法找到;
apply plugin: 'com.android.application'
android {
? ? compileSdkVersion rootProject.ext.compileSdkVersion
? ? buildToolsVersion rootProject.ext.buildToolsVersion
aaptOptions.cruncherEnabled = false
? ? aaptOptions.useNewCruncher = false
? ? dataBinding {
? ? ? ? enabled = true
? ? }
signingConfigs {//簽名的配置
? release {
? storeFile file("F:/OA-HLW/xxx.jks")
? storePassword '123456'
? keyAlias 'key0'
? keyPassword '123456'
? v1SigningEnabled true
? }
? }
? productFlavors {//多渠道配置 包名帕识、版本號泛粹、版本名、manifest文件中icon與app名字配置肮疗;
? ? ? ? hbws {
? ? ? ? ? ? applicationId "com.tjhq.oa.hbws"
? ? ? ? ? ? versionCode 1
? ? ? ? ? ? versionName "1.0"
manifestPlaceholders = [MTA_CHANNEL_VALUE: "hbws",app_icon: "@mipmap/oa_icon",app_name: "@string/app_name"]
? ? ? ? }
? ? ? ? fjoa {
? ? ? ? ? applicationId "com.tjhq.oa.fjoa"
? ? ? ? ? ? versionCode 1
? ? ? ? ? ? versionName "1.0"
manifestPlaceholders = [MTA_CHANNEL_VALUE: "fjoa",app_icon: "@mipmap/oa_icon",app_name: "@string/app_name"]
? ? ? ? }
hblcj {
? ? ? ? ? applicationId "com.tjhq.oa.hblcj"
? ? ? ? ? ? versionCode 1
? ? ? ? ? ? versionName "1.0"
manifestPlaceholders = [MTA_CHANNEL_VALUE: "hblcj",app_icon: "@mipmap/oa_icon",app_name: "@string/app_name"]
? ? ? ? }
? ? }
? ? defaultConfig {
? ? ? ? applicationId "com.tihq.oa"
? ? ? ? minSdkVersion rootProject.ext.minSdkVersion
? ? ? ? targetSdkVersion rootProject.ext.targetSdkVersion
? ? ? ? versionCode? APP_CODE as int
? ? ? ? versionName? APP_VERSION
? ? ? ? testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
? ? ? ? multiDexEnabled true //分包配置
flavorDimensions "default"
? ? }
? ? buildTypes {
? ? ? ? release {
? ? ? ? ? ? minifyEnabled false
? ? ? ? ? ? proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release //自定義apk的輸出目錄
applicationVariants.all { variant ->
? ? ? ? ? ? variant.outputs.all {
variant.getPackageApplication().outputDirectory = new File(project.rootDir.absolutePath +File.separator+"app"+File.separator + "outputs"+File.separator+"apk")
? ? ? ? ? ? outputFileName = "${variant.productFlavors[0].name}_" +
? ? ? ? ? ? ? ? "${this.android.defaultConfig.versionName}_" +
? ? ? ? ? ? ? ? "${releaseTime()}.apk"
? ? ? ? }
? ? }
}
}
}
def releaseTime() {? ? return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC"))}
動態(tài)配置manifest中icon晶姊、app名字、進(jìn)行文件讀寫作者權(quán)限設(shè)置伪货;
<application
? ? ? ? android:name="com.tjhq.basemodel.application.BaseApplication"
? ? ? ? android:allowBackup="true"
? ? ? ? android:icon="${app_icon}"
? ? ? ? android:label="${app_name}"
? ? ? ? android:supportsRtl="true"
? ? ? ? android:theme="@style/ActivityTheme">
<provider
? ? ? ? ? ? android:name="android.support.v4.content.FileProvider"
? ? ? ? ? android:authorities="${applicationId}.fileprovider"
? ? ? ? ? ? android:exported="false"
? ? ? ? ? ? android:grantUriPermissions="true">
? ? ? ? ? ? <meta-data
? ? ? ? ? ? ? ? android:name="android.support.FILE_PROVIDER_PATHS"
? ? ? ? ? ? ? ? android:resource="@xml/file_paths" />
? ? ? ? </provider>
補(bǔ)充:這里需要配置java的jdk環(huán)境们衙、android的sdk環(huán)境,gradle編譯的環(huán)境超歌,這里沒有進(jìn)行詳細(xì)描述砍艾,最后小伙伴也可以拿到j(luò)enkins的構(gòu)建腳本,進(jìn)行后臺多渠道一鍵打包功能巍举,
D:\gradle-4.4\bin>call gradle.bat -PPRODUCT_FLAVORS=hbws -PAPP_CODE=1 -PBUILD_TYPE=Release -PAPP_VERSION=1.0 assemblehbwsRelease -b "D:\Program Files (x86)\Jenkins\workspace\XTBG_OA\trunk\app\build.gradle"脆荷。
?動態(tài)替換掉其中資源文件以及編輯的哪個渠道文件,有好的建議或者方法的大神希望留言懊悯,寫的不夠完整蜓谋,望多多見諒。