问题标签 [manifest-merging]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
862 浏览

android - 清单合并失败,使用工具:overrideLibrary

错误:任务“:app:processDebugManifest”执行失败。

清单合并失败:uses-sdk:minSdkVersion 10 不能小于库 [com.android.support:leanback-v17:23.2.1] C:\SampleforliveTVInputFrameworkTIFonTV\app\build\intermediates\exploded-aar\com 中声明的版本 17 .android.support\leanback-v17\23.2.1\AndroidManifest.xml 建议:使用 tools:overrideLibrary="android.support.v17.leanback" 强制使用

我该怎么办这个错误

0 投票
0 回答
190 浏览

android - AndroidManifest 合并路径权限合并失败

我已经将一些AOSP 代码导入到我的应用程序中,并且在执行processDebugAndroidTestManifest任务期间,它会抛出java.lang.RuntimeException

错误:任务 ':contacts_common:processDebugAndroidTestManifest' 执行失败。java.lang.RuntimeException:清单合并失败:来自 [gcs:contacts_provider:unspecified] 的属性 path-permission@pathPrefix value=(/search_suggest_query) AndroidManifest.xml:31:17-59 也存在于 [gcs:contacts_provider:unspecified] AndroidManifest.xml:34:17-62 值=(/search_suggest_shortcut)。建议:将 'tools:replace="android:pathPrefix"' 添加到 manifestMerger6750235787399637901.xml 中的元素以覆盖。

这很奇怪,因为我确信前一段时间的明显合并没有引起反对。

我无法添加'tools:replace="android:pathPrefix"'元素,因为我需要同时使用这两个权限,就像在 AOSP 中一样。

如何pathPrefixes在提供程序中使用两个不同的?

这是我的provider

使用./gradlew assembleDebug效果很好。仅在 Android Studio 中引发异常。

我正在使用 Android Studio 2.1.1,构建 gradle 工具 2.0.0 和 2.1.0。

0 投票
2 回答
3404 浏览

android - 基于 Build Variant 修改 App 名称的 Gradle-only 解决方案

我正在尝试修改我的 gradle 文件以允许我的应用程序基于Flavor和使用不同的名称Build Type。到目前为止,我已经成功地通过Android Gradle Plugin Docs使用技术进行Flavor基于命名的简洁明了Manifest Merging

当前的

这些是我的主屏幕上我的debugrelease构建的应用程序的名称。

它很近,但是...

期望的

我想要这个,所以我知道debug在我的主屏幕上哪种口味。我不关心区分release口味,因为用户在他们的设备上只会有一种(可能有不止一种,但我不关心)

鉴于 Gradle 的可扩展性,我认为这是可能的;但是,我不是高级 Gradle 用户。

那么,我怎样才能简洁地(尽可能)扩展我的代码以获得我想要的输出?

注意:以上表格versionNameSuffix用作我的应用名称的后缀;但是,它可以是任何东西(另一个添加的变量??),它可以让我知道我只在我的调试构建类型中使用了哪种风格。

非目标

  • 对Android/GradleString Resource的答案中的解决方案不感兴趣: App name based on build type *and* product flavor 。首选纯基于 Gradle 的解决方案。

  • Manifest Merger对放弃我目前实施的方法不感兴趣。https://stackoverflow.com/a/28465883/2333021的答案是实现我已经完成的工作的另一种方式,并且不允许我只在调试版本上执行此操作(我可以看到。如果确实如此,然后让我知道)。

代码

显现

更新

新输出

0 投票
1 回答
11690 浏览

android - 多个构建风格的 applicationId 清单占位符不起作用

我正在修改当前的 android 项目,以便它可以安装在同一设备上以实现多种风格和构建配置。

构建.gradle:

AndroidManifest.xml

当我编译相同风格的调试和发布版本时,我收到错误消息:

...

INSTALL_FAILED_DUPLICATE_PERMISSION

perm=com.myapp.permission.C2D_MESSAGE

pkg=com.myapp.dev

...

manifestApplicationId 占位符来自 OneSignal 库上的 AndroidManifest.xml,按照https://documentation.onesignal.com/docs/android-sdk-setup上的说明

有人知道如何解决这个问题吗?谢谢你。

0 投票
1 回答
79 浏览

android - 我可以对清单合并替换标签进行例外处理吗?

0 投票
1 回答
67 浏览

android - Android清单合并删除属性

我正在使用 groovy 生成一个部分清单,其中包含来自我的构建配置文件的应用程序链接的意图过滤器声明。在 apk 中找到的合并清单看起来符合预期,但有一个问题:android:debuggable尽管在 build.gradle 中设置了该属性,但该属性正在被删除。如果我删除部分清单并重建 apk,android:debuggable="true"将按预期设置。

我的主要清单如下所示:

我生成的部分清单如下所示:

并在build.gradle文件debuggable true中设置。

该属性android:debuggable正在从 apk 中找到的合并清单中删除,我该怎么做才能确保正确设置它而不将其添加到部分清单中(我不知道它在脚本运行时的 gradle 同步时间并且不要'不想将其硬编码为真)?

0 投票
2 回答
21712 浏览

android - 可以对 FileProvider 使用多个权限吗?

背景

我维护了一个,其核心功能涉及将程序捕获的屏幕截图共享给外部电子邮件应用程序。

我使用 aFileProvider来完成此操作,这意味着我的库的清单包含一个<provider>标签

filepaths.xml定义如下:

我的图书馆的消费者有一个应用程序,它本身使用 aFileProvider来共享文件。<provider>我的期望是,如果消费应用程序使用以下清单标记,则应该可以允许两个提供程序共享文件:

此清单条目:

  • 指定两个Provider权限,${applicationId}.fileprovider(用于应用程序文件共享)和${applicationId}.bugshaker.fileprovider(用于库文件共享);
  • 引用一个 updated filepaths.xml,其中包含应用程序生成的文件和库生成的文件的单独目录定义:

构建应用程序后,我们确认生成的清单已将正确的节点替换为这些更新的值。

但是,当使用此配置的应用程序被组装(成功)并运行时,我们会在启动时看到崩溃:

使用调试器,我可以看到该方法使用权限 stringFileProvider.parsePathStrategy调用。然后返回 null,导致这个 NPE。PackageManager.resolveContentProvider"${applicationId}.fileprovider;${applicationId}.bugshaker.fileprovider"resolveContentProvider

如果我在此指令处暂停时手动调用resolveContentProvider并传递"${applicationId}.fileprovider" or "${applicationId}.bugshaker.fileprovider"resolveContentProvider则返回一个非空ProviderInfo实例(这似乎是预期的结果)。

这种差异让我感到困惑,因为<provider>元素文档声明支持多个权限:

标识内容提供者提供的数据的一个或多个 URI 权限的列表。通过用分号分隔它们的名称来列出多个权威。为避免冲突,权限名称应使用 Java 风格的命名约定(例如 com.example.provider.cartoonprovider)。通常,它是实现提供程序的 ContentProvider 子类的名称

没有默认值。必须至少指定一个权限。

问题

  • 是否可以让单个应用程序公开FileProvider具有多个权限和文件路径的 a?
    • 如果是这样,我需要进行哪些更改才能使其正常工作?
    • 如果没有,是否有其他方法可以在我的库中配置文件共享以避免诸如此类的冲突?
0 投票
1 回答
41 浏览

android - Android中的清单合并失败错误

我对编程很陌生。添加谷歌地图活动后,我的清单文件出现此错误。我已经尽我所能尝试了,但事实证明这很困难。

提前致谢

是我的android清单文件

0 投票
1 回答
466 浏览

android - Instant Apps 功能模块中的资源合并

在 Instant App 功能模块中,我正在导入一个 aar(使用 maven 存储库中的“api”语句),其中包含其清单中的活动声明和此声明中使用的“样式”资源。生成的清单合并失败,因为在基本功能项目中找不到样式资源。似乎功能模块中导入的 aar 资源不包含在基本功能模块中。

由于插件仍处于 alpha 模式,我不确定我是否做错了什么,是错误还是预期的行为。

对此有何建议?

0 投票
4 回答
1566 浏览

android - 任务执行失败:app:processDebugManifest'

错误:任务“:app:processDebugManifest”执行失败。

清单合并失败:来自 [com.android.support:appcompat-v7:25.3.1] 的属性 meta-data#android.support.VERSION@value value=(25.3.1) AndroidManifest.xml:27:9-31 也是存在于 [com.android.support:recyclerview-v7:26.0.0-alpha1] AndroidManifest.xml:24:9-38 value=(26.0.0-alpha1)。建议:将 'tools:replace="android:value"' 添加到 AndroidManifest.xml:25:5-27:34 的元素以覆盖。

如何解决此错误?