马甲包、多渠道打包 demo
gradle文件
apply plugin: 'com.android.application' def app_label //app名字 def app_icon //app图标 def app_applicationId //app id def app_main //main页面 全路径 def app_name //app的application全路径 android { defaultConfig { flavorDimensions("app") productFlavors { main_ { //空文件夹 做主包 dimension "app" app_applicationId = "com.example.main"//马甲包应用id app_label = "@string/main" app_icon = "@drawable/main" app_main = "com.example.win10_jycainiao.test.MainActivity" app_name = "com.example.win10_jycainiao.test.MainApp" applicationId app_applicationId versionCode 1 versionName "1.0" manifestPlaceholders = [ //AndroidMainfest.xml文件拿值 MY_LABEL: app_label, //马甲包 应用名称 MY_ICON : app_icon, //马甲包 应用图标 MY_MAIN : app_main, //马甲包 主页面全路径 MY_NAME : app_name, //马甲包 application全路径 ] buildConfigField("String", "APPTAG", "\"main\"")//代码拿值 } majiabao1 { //马甲包1 dimension "app" app_applicationId = "com.example.majiabao1"//马甲包应用id app_label = "@string/majiabao1" app_icon = "@drawable/majiabao1" app_main = "majiabao1.MainActivity1" app_name = "com.example.win10_jycainiao.test.MyApp1" applicationId app_applicationId versionCode 1 versionName "1.0" manifestPlaceholders = [ //AndroidMainfest.xml文件拿值 MY_LABEL: app_label, //马甲包 应用名称 MY_ICON : app_icon, //马甲包 应用图标 MY_MAIN : app_main, //马甲包 主页面全路径 MY_NAME : app_name, //马甲包 application全路径 ] buildConfigField("String", "APPTAG", "\"majiabao1\"")//代码拿值 } majiabao2 { //马甲包2 dimension "app" app_applicationId = "com.example.majiabao2"//马甲包应用id app_label = "@string/majiabao2" app_icon = "@drawable/majiabao2" app_main = "majiabao2.MainActivity2" app_name = "com.example.win10_jycainiao.test.MyApp2" applicationId app_applicationId versionCode 11 versionName "121.0" manifestPlaceholders = [ //AndroidMainfest.xml文件拿值 MY_LABEL: app_label, //马甲包 应用名称 MY_ICON : app_icon, //马甲包 应用图标 MY_MAIN : app_main, //马甲包 主页面全路径 MY_NAME : app_name, //马甲包 application全路径 ] buildConfigField("String", "APPTAG", "\"majiabao2\"")//代码拿值 } } compileSdkVersion 29 minSdkVersion 19 targetSdkVersion 29 } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { majiabao1Implementation 'com.android.support:appcompat-v7:28.0.0' majiabao1Implementation 'com.android.support:support-compat:28.0.0' majiabao2Implementation 'com.android.support:appcompat-v7:28.0.0' majiabao2Implementation 'com.android.support:support-compat:28.0.0' main_Implementation 'com.android.support:appcompat-v7:28.0.0' main_Implementation 'com.android.support:support-compat:28.0.0' }
main目录里面AndroidMainfest.xml内容,引用了gradle配置的一些字段
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.win10_jycainiao.test"> <application android:name="${MY_NAME}" android:icon="${MY_ICON}" android:label="${MY_LABEL}" android:supportsRtl="true" android:theme="@style/Theme.AppCompat.Light.NoActionBar"> <activity android:name="${MY_MAIN}" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
main_用来做main的完全维度包
马甲包如果有新加或者更改 application、activity,要对gradle中的字段进行赋值,并且在AndroidMainfest.xml中添加activity