如何根据构建变体更改 AndroidManifest.xml 文件?

2024-01-10

我有一个具有多个构建变体的应用程序。这些变体用于为不同公司构建同一应用程序的版本。因此,我有几个不同的变体来构建不同的应用程序:

  • com.acme.app1
  • com.schmoe.app2
  • com.yop.app3
  • etc...

build.gradle 文件很好地处理了这个问题:

     productFlavors {
    app1 {
        applicationId "com.acme.app1"
    }

    app2 {
        applicationId "com.schmoe.app2"
    }

    app3 {
        applicationId "com.yop.app3"
    }

}

这是我的问题。我正在将 Dropbox 集成到我的应用程序中。必须针对每个变体更改 AndroidManifest.xml 文件以包含适当的应用程序密钥(存储在我的字符串文件中)。 Dropbox 在清单文件中添加了以下内容:

         <activity
        android:name="com.dropbox.client2.android.AuthActivity"
        android:launchMode="singleTask"
        android:configChanges="orientation|keyboard">

        <intent-filter>
            <!-- Change this to be db- followed by your app key -->
            <data android:scheme="db-abcdef" />
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.BROWSABLE"/>
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

每个构建变体都需要更改以下行:

 <data android:scheme="db-abcdef" />

为每个应用程序变体设置适当的值。换句话说,我需要根据构建变体替换上述字符串的一部分。例如

App1

 <data android:scheme="db-111111" />

App2

 <data android:scheme="db-222222" />

App3

 <data android:scheme="db-333333" />

对于每个变体,直到文本“db-”,该行都是相同的。

我需要的是用我的字符串文件中的字符串动态替换字符串的变量部分(x 值)“db-xxxxxx”。

我认为这可以通过 gradle 脚本来完成,但我是 gradle 的新手。帮助!

如果您能提供帮助,请非常具体地说明内容在哪里,因为我对 gradle 文件和脚本很糟糕。提前致谢!


您可以将字符串保存在build.gradle too:

productFlavors {
    app1 {
        applicationId "com.acme.app1"
        resValue "string", "my_app_key", "db-abc"
    }

    app2 {
        applicationId "com.schmoe.app2"
        resValue "string", "my_app_key", "db-def"
    }

    app3 {
        applicationId "com.yop.app3"
        resValue "string", "my_app_key", "db-ghi"
    }
}

然后像这样使用它:

<data android:scheme="@string/my_app_key" />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何根据构建变体更改 AndroidManifest.xml 文件? 的相关文章

  • 设置文本视图 Android 的文本颜色

    在 string xml 文件中我使用以下标签
  • 如何从 SDK 实现每个会话的 Google Places 自动完成功能?

    是否可以从 Android 和 iOS 应用程序的 place sdk 实现基于会话的自动完成 根据 6 月 11 日生效的新 Google 地图框架定价 对自动完成的请求可以分为基于击键 会话的请求 我找不到描述实施步骤的文档 除了这个参
  • Android 中多个蓝牙连接的自定义 UUID

    我有一个 Android 设备作为服务器连接到多个蓝牙 Android 客户端 我了解 UUID 的概念以及它的独特之处 我的问题是 我可以为连接到我的服务器的所有客户端使用相同的 UUID 吗 如果没有 我如何以编程方式为我的客户端生成
  • AdapterContextMenuInfo 始终为 null

    我尝试通过 android 开发文档中的书来做到这一点 this didn t create a menu i don t know why registerForContextMenu getListView setListAdapter
  • Android Q:file.mkdirs() 返回 false

    我们有一个应用程序 使用外部存储来存储一些临时文件 图像 二进制数据 该代码已经运行了几年 直到最近才发生重大变化 在 Android Q 上它不起作用 File f new File Environment getExternalStor
  • Android:后台Activity可以执行代码吗?

    后台的活动是否被视为 正在运行 并且可以执行代码 还是处于挂起状态 他们暂停了 活动生命周期 http developer android com reference android app Activity html ActivityLi
  • 为什么是 javascript:history.go(-1);无法在移动设备上工作?

    首先 一些背景 我有一个向用户呈现搜索页面 html 表单 的应用程序 填写标准并单击 搜索 按钮后 结果将显示在标准部分下方 在结果列表中 您可以通过单击将您带到新页面的链接来查看单个结果的详细信息 在详细信息页面中 我添加了一个 返回结
  • 对于一个单元格,RecyclerView onBindViewHolder 调用次数过多

    我正在将 RecyclerView 与 GridLayoutManager 一起使用 对于网格中的每个项目 我需要调用 REST api 来检索数据 然后 从远程异步获取数据后 我使用 UIL 加载 显示图像 一切似乎都很好 但我发现 on
  • okhttp 获取失败响应

    我已经在我的 android 客户端中实现了 okhttp 来进行网络调用 当我收到失败响应时 我会收到失败代码以及与该代码相关的文本作为消息 但我没有收到服务器发送给我的自定义失败响应 在我实施的代码中的失败响应中 我收到的消息只是 错误
  • Android 2.3 模拟器在更新位置时崩溃

    我正在使用 Eclipse 编写和调试 Android 应用程序 我需要做的事情之一是更新设备的位置 因此我尝试使用模拟器控制窗口中的位置控制面板 在 手动 选项卡上 我选择 十进制 输入有效的纬度和经度 然后单击 发送 不幸的是 接下来发
  • OnLongClickListener 不工作

    我有一个ImageView 我需要使用onLongClickListener对于图像视图 当我使用这段代码时 什么也没有发生 Code gallery Gallery findViewById R id gall1 gallery setA
  • 如何在 Android 中从 WorkManager 取消工作?

    我已经保存了 WorkManagerUUID转换成String在领域数据库中 这是代码 Constraints constraints new Constraints Builder setRequiredNetworkType Netwo
  • Android 如何将总天数准确更改为年、月、日?

    我正在做一个应用程序 该应用程序与根据给定的生日日期输入获取一个人的年龄有关 为此 我从下面的代码中获取从该日期到当前日期的总天数 String strThatDay 1991 05 10 SimpleDateFormat formatte
  • 上网本上可以进行Android开发吗? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我想使用我的上网本进行 Android 开发 但是当我尝试使用 Eclipse 运行 SDK 时 没有加载任何内容 上网本对于 Android 开发来
  • 如何检查 Android 中的同步设置

    我正在构建一个 Android 应用程序 我需要检查设备中注册的每个单独帐户的同步设置 我知道我可以通过 ContentResolver 类来做到这一点 但我遇到了一些问题 我已设法获取设备上所有帐户的列表 但我不知道在运行时从哪里获取特定
  • 问题:为什么React Native Video不能全屏播放视频?

    我正在react native 0 57 7 中为android和ios创建一个应用程序并使用反应本机视频 https github com react native community react native video播放上传到的视频
  • 没有支持 FEATURE_CAMERA_EXTERNAL 的 Android 设备

    根据this doc https source android com devices camera external usb cameras一些 Android 设备允许使用 Camera2 API 访问外部 USB 摄像头 我检查了大约
  • 如何使用 AccessibilityService 在 Android 中模拟按键

    我正在编写一个辅助服务 我一直在尝试在应用程序上进行一些自动搜索 我使用accessibilityservice action paste来填充EditText 然后我需要模拟软键盘上的按键 但我不知道如何做 你们能帮我一下吗 你可以尝试A
  • 我的应用程序中的后退按钮出现问题[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想在手机关闭时清除共享首选项值 你
  • 发布的 Android apk 出现错误“包文件未正确签名”

    我最近将我的应用程序上传到 Android 市场 但是由于错误 下载时它拒绝运行 包文件未正确签名 我首先使用 eclipse 发布了数据包 右键单击导出 创建密钥库然后发布 但它拒绝工作 然后我下载了 keytool 和 jarsigne

随机推荐

  • Numpy 中从一个音高到另一个音高的正弦波滑奏

    我一直在开发一个程序 我需要缓慢而平稳地将正弦波的音调从一个音调更改为另一个音调 我能够获得在任何给定时刻音调应有的频率数组 例如 440 526 5 634 2 794 8 880 尽管更长很多 但似乎我无法实际应用该频率来一波 我最好的
  • 如何从 coverity-scan 中删除项目

    我已经注册了一个项目覆盖扫描 https scan coverity com在过去 我现在想从覆盖扫描中删除该项目 或者至少从我的仪表板上删除该项目 但最好我想完全删除该项目 我被困住了 因为网络界面中似乎没有这样的选项 我错过了什么吗 你
  • RxJS first() for Observable.of() - 序列中没有元素

    对于我的测试 我试图用以下方法模拟事件流Observable of 但当我尝试时 const actions Observable of in the function that is tested actions filter actio
  • VS 2015编译cocos2d-x 3.3错误“fatal error C1189: #error: MacroDefinition of snprintf与标准库函数声明冲突”

    当我使用Visual Studio 2015编译cocos2d x 版本3 3 时 出现错误 说 致命错误 C1189 error snprintf 的宏定义与标准库函数声明冲突 编译源文件 base s3tc cpp 源代码是 ifdef
  • 使用Delphi消费oData服务建议

    我即将启动一个需要 Delphi XE Windows 32 客户端来使用的项目oData http www odata org 网络服务 我可以使用一些粗略和可读的测试代码正确查询服务 但是编写一个框架来处理 oData 协议 所有过滤
  • 如何使用 Kotlin 修复此错误,找不到 Fragment 构造函数?

    我正在开发Android使用 Kotlin 的应用程序 在我的应用程序中包含Tab with ViewPager所以我实现了两个选项卡 当我移动到另一个活动并压缩到选项卡视图活动时 应用程序将停止并且logcat显示下面的错误 java l
  • 如何使用模板创建排序映射整数索引

    我有数据结构 template
  • 使用 C# 删除换行符

    我从名为 Description 的数据库字段获取一个字符串 它有换行符 它看起来像这样 项目标题 此处为描述 这是项目的描述 我怎样才能删除换行符 我尝试了以下功能 但它不起作用 public string FormatComments
  • 设置div动态填充剩余高度?

    所以 我的代码类似于 div style width 100 min height 1 display block background color 000 img src header image svg div div Some con
  • 在 Python 中检测 NUMLOCK / CAPSLOCK / SCRLOCK 按键/按键

    在我正在开发的游戏中 我想检测NUMLOCK keypress or keyup 就像在按下时注册一个 回调 函数 我并不是要求阅读它state在某一特定时刻 我已经可以做到了 https github com MestreLion pyr
  • 有没有办法在设置类的任何属性时调用方法?

    因此 我想做的是在设置 C 类中的任何属性时调用单个 propertyWasSet 函数 相反 在获取属性时调用 propertyWasGot 我还想知道调用了哪个属性的 get 我想维护一个 设置 属性的字典 并检查 获取 操作是否已设置
  • Angular 库包依赖项

    我使用 CLI 创建并捆绑了一个 Angular 7 2 0 库 ng g 库 MyLibrary ng 构建 MyLibrary 这给了我my libary umd js我需要的捆绑包 目前 所有依赖项都作为peerDependency
  • 如何在同一场战争的多个 jar 中使用相同的 CamelContext

    我使用的是camel 2 16 2 我需要在多个jar 中使用一个 CamelContext 因为我需要将所有 Camel 路由器放入一个 CamelContext 中 所以我的战争将把所有这些罐子作为 Maven 工件 请告诉我如何处理上
  • 设施位置的动态规划算法

    沿着一条线 在位置 a 1 a 2 a n 处有 n 栋房屋 我们希望沿着同一条线设置移动便盆 以便每间房屋都位于至少一个移动便盆的距离 R 内 这些便携式便盆仅限于指定位置 b 1 b 2 b m 令 c i 为在位置 b i 设置移动便
  • openapi-generator 复制 swagger-ui 中的端点

    openapi generator maven plugin 版本 6 3 0 在 Spring Boot 3 应用程序中配置如下
  • 分区比排序更容易吗?

    这是一个在我脑海里徘徊了一段时间的问题 假设我有一个项目列表和它们的等价关系 并且比较两个项目需要恒定的时间 我想退回一部分物品 例如链表的列表 每个链表包含所有等效项 实现此目的的一种方法是将等价性扩展到项目的排序并对其进行排序 使用排序
  • 在无向图中记录 DFS 搜索中的前驱

    我试图使用此线程中的代码 提升DFS back edge https stackoverflow com questions 19346820 boost dfs back edge 19391511 noredirect 1 commen
  • String.count() 是如何工作的? [复制]

    这个问题在这里已经有答案了 我是 python 和学习的新手 如所给出的here https www tutorialspoint com python string count htm count 方法在字符串上使用时给出子字符串在字符串
  • 如何为Java类创建两个接口,一个只读,一个读写?

    我正在用 Java 为一款两人纸牌游戏编写一个游戏引擎 我的学生将为该游戏编写 AI 玩家 人工智能玩家将轮流在他们面前的 桌子 的 场地 上打牌 他们可以用自己场上的牌攻击对方场上的牌 卡片可以面朝上或面朝下 GameEngine 类允许
  • 如何根据构建变体更改 AndroidManifest.xml 文件?

    我有一个具有多个构建变体的应用程序 这些变体用于为不同公司构建同一应用程序的版本 因此 我有几个不同的变体来构建不同的应用程序 com acme app1 com schmoe app2 com yop app3 etc build gra