Android同一套程式碼打多個APP包並能夠在同一個手機上安裝執行
阿新 • • 發佈:2018-12-18
Android同一套程式碼打多個APP包並能夠在同一個手機上安裝執行
- Android同一套程式碼打多個APP包並能夠==在同一個手機上安裝執行==,同時==APP名稱、桌面icon圖示也都不同==
- 給同一套程式碼起不同的多個包名,並把APP名稱和桌面圖示設定為根據每個APP判斷顯示哪個的
- 使用
- 完成
- 其他
Android同一套程式碼打多個APP包並能夠在同一個手機上安裝執行,同時APP名稱、桌面icon圖示也都不同
需要能夠在同一個手機上執行:只有修改的包名不同,才能使同一套程式碼在同一個手機上執行。
給同一套程式碼起不同的多個包名,並把APP名稱和桌面圖示設定為根據每個APP判斷顯示哪個的
app下的build.gradle中:
apply plugin: 'com.android.application' android { compileSdkVersion 27 defaultConfig { applicationId "com.xxx.papplicationId1" minSdkVersion 14 targetSdkVersion 27 versionCode 1 versionName '1.0.0' // -------------------------- 注意這裡 ! ! ! -------------------------- // 版本名後面新增一句話,意思就是flavor dimension 它的維度就是該版本號,這樣維度就是都是統一的了 flavorDimensions "versionCode" // ----------------------------------------------------------------------- testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } buildToolsVersion '27.0.3' // -------------------------- 注意這裡 ! ! ! -------------------------- productFlavors { // 通用app app1 { // 設定applicationId(這裡很重要,兩個相同applicationId的apk不同同時安裝在同一臺Android手機中) applicationId "com.xxx.applicationId1" // 自動生成@string/app_name為 app1的名稱 // 注意,這裡是新增,在 string.xml 不能有這個欄位,會重名!!! resValue "string", "app_name", "app111" // 定義app_icon等欄位,在AndroidManifest.xml檔案中用到 manifestPlaceholders = [app_icon : "@mipmap/ic_launcher", app_roundicon: "@mipmap/ic_launcher", // 因為每個APP包名不同,所以需要單獨配置每個APP的第三方key // 修改 AndroidManifest.xml 裡 地圖appkey map_appkey : "xxxxxxxxxxxxxx"] } // app2 app2 { applicationId "com.xxx.applicationId2" resValue "string", "app_name", "app222" manifestPlaceholders = [app_icon : "@mipmap/ic_launcher2", app_roundicon: "@mipmap/ic_launcher2", map_appkey : "xxxxxxxxxxxxx"] } } // ----------------------------------------------------------------------- // 移除lint檢測的error lintOptions { checkReleaseBuilds false abortOnError false } sourceSets.main { jniLibs.srcDirs = ['libs'] } } dependencies { ...... } allprojects { repositories { flatDir { dirs 'libs' } } }
使用
AndroidManifest.xml中 :
<application android:name=".xxxxx" android:allowBackup="true" android:icon="${app_icon}" android:label="@string/app_name" android:roundIcon="${app_roundicon}" android:supportsRtl="true" android:theme="@style/AppTheme" tools:replace="android:allowBackup"> <!--tools:replace="icon,label,theme">--> <!-- 地圖appkey, 使用build.gradle中動態的值 --> <meta-data android:name="com.amap.api.v2.apikey" android:value="${map_appkey}"/>