在Android Manifest

时间:2015-07-16 07:22:06

标签: android apk android-manifest android-package-managers uid

我需要一种方法在安装期间根据设备型号将不同的共享用户ID(在安装期间)分配到同一个Android应用程序(相同的APK)。 我无法找到有关清单文件中支持的条件语句的任何文档。 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

清单中最接近条件的是不将值包含为常量,而是使用重定向到资源。然后,您可以为不同的语言,设备等提供不同的资源。

清单元素的文档指出共享用户标识应该是字符串,但是例如共享用户标签必须是字符串资源(因为您通常需要翻译它)。你是否能够将id作为资源也难以猜测 - 文档通常不准确,但请注意,对于所有版本而言,在某个Android版本上运行的内容可能并非如此。

答案 1 :(得分:0)

虽然这是一个很老的问题,但我最近偶然发现了一个类似的问题,这可能会对仍在寻找解决方案的人有所帮助。我的情况是我必须在运行时根据条件在 AndroidManifest.xml 中分配一些键。 虽然我找不到在 Manifest 中定义条件的方法,但我能够从 build.gradle 传递到 Manifest 的方法。如果在build.gradle中可以检查条件,那么你可以通过以下方式将值传递给Manifest

android {
    defaultConfig {
        manifestPlaceholders = [hostName:"www.example.com"]
    }
    ...
}

然后在 Manifest 中访问它 -

<intent-filter ... >
    <data android:scheme="https" android:host="${hostName}" ... />
    ...
</intent-filter>

文档 - https://developer.android.com/studio/build/manifest-build-variables 此外,您可以从 build.gradle 生成字符串、bool 和其他值,然后可以在应用程序范围内使用。

buildConfigField "int", "FOO", "42"
resValue "string", "app_name", "My App Name Debug"