Android多渠道打包修改资源文件

公司到后面越来越多时候是在基础版本上做更改,提供出OEM版本Demo,网上有很多这样例子,自己也效仿者做了一个,写在这里做记录。

主要是通过在app/build.gradle配置

android {
***
    productFlavors {
        //开发环境
        develop {
            buildConfigField "int", "ENV_TYPE", "1"
            applicationId 'om.soubu.walledemo.develop'
            resValue("string","dynamic_text","oem1的动态文字")
            manifestPlaceholders = [
                    app_name: "开-WalleDemo",
                    app_icon: "@drawable/icon_develop",
                    oemImage : "@drawable/oem1"
            ]
        }
        //测试环境
        check {
            buildConfigField "int", "ENV_TYPE", "2"
            applicationId 'om.soubu.walledemo.check'
            resValue("string","dynamic_text","oem2的动态文字")
            manifestPlaceholders = [
                    app_name: "测-WalleDemo",
                    app_icon: "@drawable/icon_check",
                    oemImage : "@drawable/oem2"
            ]
        }
        //生产环境
        product {
            buildConfigField "int", "ENV_TYPE", "3"
            applicationId 'com.soubu.walledemo.product'
            resValue("string","dynamic_text","oem3的动态文字")
            manifestPlaceholders = [
                    app_name: "WalleDemo",
                    app_icon: "@drawable/icon_product",
                    oemImage : "@drawable/oem3"
            ]
        }
    }
}
配置完后在AndroidManifest.xml中填写String 或者ImageView的占位符

注意配置APP的logo与名字,还有资源文件的标签

    android:allowBackup="true"
    android:icon="${app_icon}"
    android:label="${app_name}"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    android:name=".MainActivity">
        
            android:name="android.intent.action.MAIN"/>

            android:name="android.intent.category.LAUNCHER"/>
        
    
            android:name="OEM_Image"
        android:resource="${oemImage}"
        />
在代码中去根据不同的版本信息进行

img.setImageResource(Util.getMetaDataInt(this,"OEM_Image"));
tvChannel.setText(R.string.dynamic_text);

参考了两个Demo.附上链接

Android利用Gradle多渠道打包如何动态替换资源,文字

还有一个好像是walle的一个Demo,但是我找不到地址了就把它github附上吧

walle


Demo下载

源码下载

你可能感兴趣的:(多渠道打包)