在app的gradlew文件中设置变量appModelCode,设置manifestPlaceholders
android {
def appModelCode = 1 //1:模式1 2:模式2
def appModelName = "model1"
if (appModelCode == 1) {
...
}
defaultConfig {
applicationId appId
minSdk 26
targetSdk 32
versionCode appVerCode
versionName appVerName
testInstrumentationRunner "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;
}