多渠道包名配置 - ImVeryGood/Loan GitHub Wiki

Android studio 多渠道打包(用同一套代码,不同的包使用不同的资源文件,包名等等)

步骤:

1.首先准备好一个创建好的项目

2.在项目app-src下新建文件夹与main文件同级

如新建MApp

其中 assets与res 为资源文件,在res-values-strings 中修改项目名称.

3.在项目根目录下新建channel.gradle 文件

主要用于配置项目包名,以及一些第三方key

channel.gradle 配置内容:

   ext {
   productFlavors = [
            "MApp": [
                   applicationId       : "com.mapp",//设置包名
                   versionCode         : 100000,
                   versionName         : "1.0.0",
                   manifestPlaceholders: [
                          VERSION_CODE : "1.0.0",
                           //配置key
                           AMAP_KEY     : "727fbd7f8ddb。。。。1690a3f7b2",
                       
                   ]

            ],
    ]
}

4.在App-build.gradle中

4.1在android{}下定义

def flavors = rootProject.ext.productFlavors

4.2新建 productFlavors{}

flavorDimensions "release"//此定义必须要加,不然会报没有定义此值
def conf;
productFlavors {
    MApp {
        conf = flavors['MApp']
        applicationId conf.applicationId//调用channel中定义的包名值等
        versionCode conf.versionCode
        versionName conf.versionName
        manifestPlaceholders = conf.manifestPlaceholders
        signingConfig signingConfigs.MApp_release

    }
}

4.3新建 signingConfigs{}

signingConfigs {
    MApp_release {
        //            别名
        keyAlias TIANTIAN_ALIAS
        //            key 密码
        keyPassword TIANTIAN_ALIAS_PASSWORD
        //            签名路径
        storeFile file(TIANTIAN_PATH)
         //            签名密码
        storePassword TIANTIAN_STORE_PASSWORD
    }
}

** 4.3.1.签名文件别名密码可在gradle.properties 中定义**

  ![](https://i.imgur.com/rkRyqIP.png)

** 4.4在定义的productFlavors中对应的包调用**

4.5 在app-build.gradle android{}代码如下

android {
compileSdkVersion rootProject.ext.compileSdkVersion
def flavors = rootProject.ext.productFlavors
compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

defaultConfig {
    applicationId "com.appmuti"
    minSdkVersion rootProject.ext.minSdkVersion
    targetSdkVersion rootProject.ext.targetSdkVersion
    versionCode 1
    versionName "1.0"
}
splits {
    abi {
        reset()
        enable enableSeparateBuildPerCPUArchitecture
        universalApk false  // If true, also generate a universal APK
        include "armeabi-v7a", "x86", "arm64-v8a", "x86-64"
    }
}
signingConfigs {
    MApp_release {
        //            别名
        keyAlias TIANTIAN_ALIAS
        //            key 密码
        keyPassword TIANTIAN_ALIAS_PASSWORD
       //            签名路径
        storeFile file(TIANTIAN_PATH)
       //            签名密码
        storePassword TIANTIAN_STORE_PASSWORD
    }
}
flavorDimensions "release"
def conf;
productFlavors {
    MApp {
        conf = flavors['MApp']
        applicationId conf.applicationId
        versionCode conf.versionCode
        versionName conf.versionName
        manifestPlaceholders = conf.manifestPlaceholders
        signingConfig signingConfigs.MApp_release

    }
}
buildTypes {
    release {
        minifyEnabled enableProguardInReleaseBuilds
        proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
    }
}

}
}

4.6rebuild项目

根据图示选择完就可以直接跑你想要的包了

demo地址:https://github.com/ImVeryGood/AppMuti