Android Gradle manifestPlaceholders 占位符详解
生活随笔
收集整理的這篇文章主要介紹了
Android Gradle manifestPlaceholders 占位符详解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Android Gradle manifestPlaceholders 占位符詳解
在實際項目中,AndroidManifest里十幾個地方的值是需要動態的改變(生成apk文件的時候).如果每次去改也可以,但是累啊,在我之前他們打包是用手動替換,但我覺得這是是在沒辦法的辦法,但是有了manifestPlaceholders占位符后就簡單的多了,只需要改一個地方就行了.
1. 概括
下面介紹下manifestPlaceholders占位符的使用,其實很好理解,你可以認為它可以在 build.gradle文件中定義字符串并將值映射到 AndroidManifest清單文件的指定位置.
下面說下使用方法:
2. AndroidManifest 文件定義占位符
部分代碼如下:
<applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/AppTheme"><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN"/><category android:name="android.intent.category.LAUNCHER"/></intent-filter>// 這是在Activity 標簽下<meta-data android:name="nameActivity" android:value="${test_value_activity}"/></activity>// 這是在Activity 標簽下<meta-data android:name="nameApplication" android:value="headword${test_value}append_word"/></application>總結如下:
${你定義名稱}
當然${}的前后面直接添加字符串.
例如:
android:value="${test_value_activity}"android:value="headword${test_value}append_word"3. build.gradle 給占位符賦值
部分代碼如下:
defaultConfig {applicationId "com.didikee.wififriend"minSdkVersion 15targetSdkVersion 24versionCode 1versionName "1.0"testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"manifestPlaceholders = [test_value: "這是測試值",test_value_activity:"Activity 中的測試值"]}總結如下:
manifestPlaceholders = [symbol1: "value1", symbol2:"value2"]
多個值時用,分隔開.
4. 在Java代碼獲取占位符的值
在獲取值的時候是區分占位符在 Activity標簽,Application標簽,service標簽,receiver標簽下,所以有兩種獲取方式:
在Activity標簽下:
ActivityInfo activityInfo = null;try {activityInfo = getPackageManager().getActivityInfo(getComponentName(), PackageManager.GET_META_DATA);} catch (PackageManager.NameNotFoundException e) {e.printStackTrace();}if (activityInfo == null)return;String value = activityInfo.metaData.getString("nameActivity");在 Application標簽下:
ApplicationInfo applicationInfo = null;try {applicationInfo = getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);} catch (PackageManager.NameNotFoundException e) {e.printStackTrace();}if (applicationInfo == null)return;String value = applicationInfo.metaData.getString("nameApplication");同理,在service標簽,receiver標簽下分別為:
String value= MainActivity.this.getPackageManager().getServiceInfo(ComponentName,PackageManager.GET_META_DATA).metaData.getString("symbol");String value= MainActivity.this.getPackageManager().getReceiverInfo(ComponentName,PackageManager.GET_META_DATA).metaData.getString("symbol");轉載于:https://www.cnblogs.com/didikee/p/6757072.html
總結
以上是生活随笔為你收集整理的Android Gradle manifestPlaceholders 占位符详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ESB--转
- 下一篇: python多线程和多进程使用