背景:爲了便於我們開發者的調試和產品測試人員的方便,由此產生需要在同一部機安裝多個APP的需求
同一套代碼打多個APP包並能夠在同一個手機上安裝運行,同時APP名稱、桌面icon圖標也都不同
首先在
app下的build.gradle中:
android {buildTypes { debug { applicationIdSuffix "debug" } release { /*//混淆 minifyEnabled false //前一部分代表系統默認的android程序的混淆文件,該文件已經包含了基本的混淆聲明,後一個文件是自己的定義混淆文件 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }productFlavors { // demo demo{ // 設置applicationId(這裏很重要,兩個相同applicationId的apk不同同時安裝在同一臺Android手機中) applicationId "com.xxx.cce" // 自動生成@string/app_name爲demo resValue "string","app_name","demo" // 定義app_icon字段,在AndroidManifest.xml文件中用到 manifestPlaceholders = [UMENG_CHANNEL_VALUE: "demo",app_icon : "@mipmap/ic_launcher"] } // demo2 demo2 { // 解釋同app1 applicationId "com.xxx.cce2" resValue "string","app_name","demo2" manifestPlaceholders = [UMENG_CHANNEL_VALUE: "demo2",app_icon : "@mipmap/ic_launcher1"] } }lintOptions { checkReleaseBuilds false abortOnError false }}
然後 使用
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"><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>
如果不配置一下FileProvider可能會出現提示安裝失敗的情況,所以儘量配置一下比較靠譜一點
原因:provider標籤的authorities屬性的值一定要是唯一的,如果兩個app的authorities屬性值一樣,就會提示安裝失敗,所以你懂得!
最後選擇Build---》Generate Signed APK --》Next--》
就會出現如下圖
兩個打包的方式,就是剛剛在build.gradle中配置的,應該不用多說吧,看的懂吧,然後選擇一個就打包成一個apk,然後繼續選擇另外一個繼續打包apk,然後安裝手機桌面就出現兩個apk了