Android 通过配置 productFlavors 实现多版本差异化打包

0.效果

开发过程中,因为种种原因,有时需要在同一手机上安装测试版和生产版,所需效果如下:

1.创建productFlavors

在APP的gradle中添加:

android {
    ...
    //创建productFlavors
    productFlavors {
        ceshi{//配置测试版包名和应用名
            applicationId "ceshi.yb.com.wanandroid"
            manifestPlaceholders = [APP_NAME: "@string/app_name_ceshi"]
        }
        shengchan{//配置生产版包名和应用名
            applicationId "shengchan.yb.com.wanandroid"
            manifestPlaceholders = [APP_NAME: "@string/app_name_shengchan"]
        }

    }
}

此时应该报以下错误:
Error:All flavors must now belong to a named flavor dimension. Learn more at https://d.android.com/r/tools/flavorDimensions-missing-error-message.html

在defaultConfig 中加上:

defaultConfig {
        ...
        flavorDimensions "versionCode"
    }

再重新编译下就OK了.

2.创建统一文件夹

切换到Project模式的目录:

Android 通过配置 productFlavors 实现多版本差异化打包_第1张图片

在src目录下新建ceshi(/shengchan)包:

Android 通过配置 productFlavors 实现多版本差异化打包_第2张图片

再新建以下包和文件:

Android 通过配置 productFlavors 实现多版本差异化打包_第3张图片

资源文件同:

Android 通过配置 productFlavors 实现多版本差异化打包_第4张图片

调试时点击 Build Variant 选择自己需要的版本即可正常引用

Android 通过配置 productFlavors 实现多版本差异化打包_第5张图片


3.配置不同的应用名或其他属性

首先strings.xml中添加:

    测试版WanAndroid
    生产版WanAndroid

然后manifest中改下lable:

android:label="${APP_NAME}"//引用gradle中定义的变量
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        
            
                

                
            
        
        

    

打包时同时选择两个即可:

Android 通过配置 productFlavors 实现多版本差异化打包_第6张图片


源码已提交到GitHub,可以的话请顺便点个小星星。








你可能感兴趣的:(AS)