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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

RroductFlavors 多渠道打包 配置不同的包名、桌面图标、引导页、java代码等

發布時間:2023/12/14 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RroductFlavors 多渠道打包 配置不同的包名、桌面图标、引导页、java代码等 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這里寫自定義目錄標題

  • RroductFlavors
    • 然后就進行我們多個appid 及 icon等 配置
    • 清單文件
    • 更改資源文件
      • 動態java文件、代碼
    • 打包
      • 配置完key后 就輪到打包了
      • 打包

RroductFlavors

google 的 RroductFlavors 適用于app定制化等需求,可動態配置圖標、資源、代碼等

配置RroductFlavors 在AS3.0以上 需先設置 flavorDimensions

android {defaultConfig {flavorDimensions "App" // 這里的名字好像隨意,不是很清楚作用 -。-!} }

然后就進行我們多個appid 及 icon等 配置

android{productFlavors{app1{//如果這里沒有配置 appId、 versionCode等信息 則取“defaultConfig”里面的默認值applicationId "com.demo.one"versionCode 20190223versionName "1.1.4"// 動態添加字符串資源到 strings.xml 跟直接在strings.xml 用法一致resValue "string", "mapp_name", "App1"// 定義常量 相當于 public static final String 可通過代碼 “BuildConfig.APP_DIR” 調用buildConfigField "String" , "APP_DIR" , '"app1"'buildConfigField "int" , "APP_TYPE" , "1"buildConfigField "Boolean", "ENVIRONMENT", "true"// 清單文件 需要動態設置的內容 需在此配置manifestPlaceholders = [UMENG_CHANNEL_VALUE: "app1",app_icon : "@mipmap/logo",]}app2{applicationId "com.demo.two"versionCode 1versionName "1.2.1"resValue "string", "mapp_name", "App2"buildConfigField "String" , "APP_DIR" , '"app2"'buildConfigField "int" , "APP_TYPE" , "2"buildConfigField "Boolean", "ENVIRONMENT", "false"manifestPlaceholders = [UMENG_CHANNEL_VALUE: "app2",app_icon : "@mipmap/logo",]}} }

清單文件

如桌面圖標 可以通過 android:icon="${app_icon}" 設置 主題、應用名等均可動態配置,但清單文件里更換資源 需在build.gradle配置,其它布局資源則只需要放置在不同的res對應文件內即可

<applicationandroid:allowBackup="true"android:icon="${app_icon}"android:label="@string/mapp_name"android:roundIcon="${app_icon}"android:supportsRtl="true"android:theme="@style/AppTheme"><activity android:name=".MainActivity"></activity></application>

更改資源文件

如下圖 ,不同的appid 可創建文件夾與mian文件夾同級,且里面的文件夾路徑需與main文件夾里面的“完全一致”方可生效,在運行時相同名字的資源會自動覆蓋,諾在對應的文件夾找不到相應名稱的資源文件,則會自動匹配main文件夾下面的資源文件(例如: app1 的mipmap里面沒有bg.jpg , 則會自動采用main里面的pg.jpg作為app1的資源),注意:java文件不會自動合并,且不能重復,如果java文件也需要動態配置,則main里面不能有動態的java文件,動態的java文件在main以外的文件夾都需要包含有。

動態java文件、代碼

打包


配置完key后 就輪到打包了

配合打包后的apk的命名,那樣我們就不需要打包完后再自己去命名啦~

android{// 打包命名applicationVariants.all { variant ->variant.outputs.all { output ->def outputFile = output.outputFileif (variant.buildType.name.equals('release')) {//生成apk名字的格式:Channel1.0.0_2016-06-22_baidu.apk//可自定義自己想要生成的格式def fileName = "${variant.productFlavors[0].resValues.get("mapp_name").value}_V${variant.productFlavors[0].versionName}_${releaseTime()}.apk" // output.outputFile = new File(outputFile.parent, fileName)def outFile = output.outputFileif (outFile != null && outFile.name.endsWith('.apk')) {outputFileName = fileName // output.outputFile 改為 outputFileName}}else if(variant.buildType.name.equals('debug')){def fileName = "${variant.productFlavors[0].resValues.get("mapp_name").value}_V${variant.productFlavors[0].versionName}_${debugTime()}_debug.apk"def outFile = output.outputFileif (outFile != null && outFile.name.endsWith('.apk')) {outputFileName = fileName // output.outputFile 改為 outputFileName}}}} }def releaseTime() {return new Date().format("yyyyMMdd", TimeZone.getTimeZone("UTC+8")) } def debugTime() {return new Date().format("MMdd HH.mm", TimeZone.getTimeZone("UTC+8")) }

打包

雙擊對應的項就可以打包了

demo下載

總結

以上是生活随笔為你收集整理的RroductFlavors 多渠道打包 配置不同的包名、桌面图标、引导页、java代码等的全部內容,希望文章能夠幫你解決所遇到的問題。

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