在Android清单中添加条件语句

在Android清单中添加条件语句,android,apk,android-manifest,android-package-managers,uid,Android,Apk,Android Manifest,Android Package Managers,Uid,我需要一种方法,在安装过程中根据设备型号将不同的共享用户ID(安装期间)分配给相同的Android应用程序(相同的APK)。 我找不到任何关于清单文件中支持的条件语句的文档。 任何帮助都将不胜感激。在清单中最接近条件的方法是不要将值作为常量包含,而是使用重定向到资源。然后为不同的语言、设备等提供不同的资源 manifest元素的文档说明共享用户id应该是字符串,但例如,共享用户标签必须是字符串资源(因为您通常需要翻译它)。很难猜测您是否可以通过将id作为一种资源来解决问题——文档对此往往不准确,

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

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


manifest元素的文档说明共享用户id应该是字符串,但例如,共享用户标签必须是字符串资源(因为您通常需要翻译它)。很难猜测您是否可以通过将id作为一种资源来解决问题——文档对此往往不准确,但请注意,在一个版本的Android上工作的内容可能并不适用于所有版本。

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


manifest元素的文档说明共享用户id应该是字符串,但例如,共享用户标签必须是字符串资源(因为您通常需要翻译它)。很难猜测你是否能通过将id作为一种资源而逃脱惩罚——文档中对此的描述往往不准确,但请注意,在一个版本的Android上工作的内容可能并不适用于所有版本。

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

android {
    defaultConfig {
        manifestPlaceholders = [hostName:"www.example.com"]
    }
    ...
}
然后在清单中作为-

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

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

android {
    defaultConfig {
        manifestPlaceholders = [hostName:"www.example.com"]
    }
    ...
}
然后在清单中作为-

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

使用产品口味。你们可以从这里开始(稍微不同的问题,但给你们基本的理解)。我只能有一个APK。所以,这需要在运行时发生,而不是在编译时。我认为在运行时不允许设置共享用户ID。由于安全原因,我认为这是不可能或禁止的。对不起,我想我不清楚。我的意思是这不是构建时特性。这需要在安装时进行(在安装过程中分配共享用户id是绝对受支持的)。我只需要一种在清单中使用条件语句的方法。使用产品风格。你们可以从这里开始(稍微不同的问题,但给你们基本的理解)。我只能有一个APK。所以,这需要在运行时发生,而不是在编译时。我认为在运行时不允许设置共享用户ID。由于安全原因,我认为这是不可能或禁止的。对不起,我想我不清楚。我的意思是这不是构建时特性。这需要在安装时进行(在安装过程中分配共享用户id是绝对受支持的)。我只需要一种在清单中使用条件语句的方法。