我理解AndroidManifest.xml
是在编译时准备的而不是运行时,有没有其他方法可以在不依赖硬编码字符串的情况下填充清单中的元数据?也许在编译时以某种方式填充它?
我目前在AndroidManifest.xml
<application
android:allowBackup="true"
android:icon="@drawable/dt_icon"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<meta-data
android:name="DataPath"
android:value=""
/> ...
我不想对该值进行硬编码,而是使用以下结果填充它:
Environment.getExternalStorageDirectory()
稍后,另一个应用程序将使用DataPath
的metaData属性检索ApplicationInfo
的值。
答案 0 :(得分:2)
我相信我在某处可以看到它可以在编译时分配值,但仍然没有硬编码
您可以做的最好的事情是通过manifest placeholders从gradle分配值。
示例:
android {
defaultConfig {
manifestPlaceholders = [hostName:"www.example.com"]
}
...
}
<intent-filter ... >
<data android:scheme="http" android:host="${hostName}" ... />
...
</intent-filter>