在app的gradlew文件中设置变量appModelCode,设置manifestPlaceholders
android {def appModelCode = 1 //1:模式1 2:模式2def appModelName = "model1"if (appModelCode == 1) {...}defaultConfig {applicationId appIdminSdk 26targetSdk 32versionCode appVerCodeversionName appVerNametestInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"manifestPlaceholders = [appName : appModeName,appModelCode: appModelCode,appModeName : appModeName]}
}
在AndroidManifest.xml中的application标签中设置
<application><meta-data android:name="appModelCode" android:value="${appModelCode}"/><meta-data android:name="appModeName" android:value="${appModeName}"/>
</application>
代码中获取AndroidManifest.xml中的值
int code = (Integer) AppUtil.getApplicationPlaceholders(this, "appModelCode");
String name = (String) AppUtil.getApplicationPlaceholders(this, "appModeName");
getApplicationPlaceholders方法
/*** 在Application获取 manifestPlaceholders 的值** @param context* @param key* @return*/public static Object getApplicationPlaceholders(Context context, String key) {Object placeholdersValues = null;try {ApplicationInfo appInfo = context.getPackageManager().getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA);if (appInfo == null) {return placeholdersValues;}Bundle metaData = appInfo.metaData;if (metaData == null) {return placeholdersValues;}placeholdersValues = metaData.get(key);} catch (PackageManager.NameNotFoundException e) {e.printStackTrace();}return placeholdersValues;}