问题标签 [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.
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" 强制使用
我该怎么办这个错误
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。
android - 基于 Build Variant 修改 App 名称的 Gradle-only 解决方案
我正在尝试修改我的 gradle 文件以允许我的应用程序基于Flavor
和使用不同的名称Build Type
。到目前为止,我已经成功地通过Android Gradle Plugin Docs使用技术进行Flavor
基于命名的简洁明了Manifest Merging
当前的
这些是我的主屏幕上我的debug
和release
构建的应用程序的名称。
它很近,但是...
期望的
我想要这个,所以我知道debug
在我的主屏幕上哪种口味。我不关心区分release
口味,因为用户在他们的设备上只会有一种(可能有不止一种,但我不关心)
鉴于 Gradle 的可扩展性,我认为这是可能的;但是,我不是高级 Gradle 用户。
那么,我怎样才能简洁地(尽可能)扩展我的代码以获得我想要的输出?
注意:以上表格versionNameSuffix
用作我的应用名称的后缀;但是,它可以是任何东西(另一个添加的变量??),它可以让我知道我只在我的调试构建类型中使用了哪种风格。
非目标
对Android/Gradle
String Resource
的答案中的解决方案不感兴趣: App name based on build type *and* product flavor 。首选纯基于 Gradle 的解决方案。Manifest Merger
对放弃我目前实施的方法不感兴趣。https://stackoverflow.com/a/28465883/2333021的答案是实现我已经完成的工作的另一种方式,并且不允许我只在调试版本上执行此操作(我可以看到。如果确实如此,然后让我知道)。
代码
显现
更新
新输出
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上的说明
有人知道如何解决这个问题吗?谢谢你。
android - Android清单合并删除属性
我正在使用 groovy 生成一个部分清单,其中包含来自我的构建配置文件的应用程序链接的意图过滤器声明。在 apk 中找到的合并清单看起来符合预期,但有一个问题:android:debuggable
尽管在 build.gradle 中设置了该属性,但该属性正在被删除。如果我删除部分清单并重建 apk,android:debuggable="true"
将按预期设置。
我的主要清单如下所示:
我生成的部分清单如下所示:
并在build.gradle
文件debuggable true
中设置。
该属性android:debuggable
正在从 apk 中找到的合并清单中删除,我该怎么做才能确保正确设置它而不将其添加到部分清单中(我不知道它在脚本运行时的 gradle 同步时间并且不要'不想将其硬编码为真)?
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?- 如果是这样,我需要进行哪些更改才能使其正常工作?
- 如果没有,是否有其他方法可以在我的库中配置文件共享以避免诸如此类的冲突?
android - Instant Apps 功能模块中的资源合并
在 Instant App 功能模块中,我正在导入一个 aar(使用 maven 存储库中的“api”语句),其中包含其清单中的活动声明和此声明中使用的“样式”资源。生成的清单合并失败,因为在基本功能项目中找不到样式资源。似乎功能模块中导入的 aar 资源不包含在基本功能模块中。
由于插件仍处于 alpha 模式,我不确定我是否做错了什么,是错误还是预期的行为。
对此有何建议?
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 的元素以覆盖。
如何解决此错误?