当前位置: 首页 > 面试题库 >

Android Gradle Manifest合并:覆盖来自库的“ uses-permission”属性

胡利
2023-03-14
问题内容

对于我正在使用最新的Android Studio开发的应用程序,我正在其gradle文件中使用以下依赖项:

dependencies {
    compile 'com.android.support:support-v4:21.0.+'
    compile 'com.helpshift:android-aar:3.7.1'
}

com.helpshift:android-aar:3.7.1对于我在主应用程序中未使用的功能,该库需要以下权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

如此处和此处所述,我可以从导入的库的 活动 XML声明中覆盖属性。

但是我也可以像上述那样重写 清单 XML声明uses-permission吗?

我已经在我的主清单中尝试过类似的方法,但是没有用:

<permission
    android:name="android.permission.WRITE_EXTERNAL_STORAGE"
    tools:node="remove"
    tools:selector="com.helpshift">
</permission>

也将<permission>元素更改为<uses-permission>没有帮助。 该应用程序仍在请求访问SC卡的许可

我的主要 AndroidManifest.xml 现在看起来像这样:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:installLocation="auto"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.bmi.rechner" >

    <uses-permission
        android:name="android.permission.WRITE_EXTERNAL_STORAGE"
        tools:node="remove"
        tools:selector="com.helpshift">
    </uses-permission>

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="com.android.vending.BILLING" />

    <application
        ...

更新 :@CommonsWare建议的答案正在起作用。

只是我tools:selector="com.helpshift"不对。我将其遗漏了,因为我确定我会在一段时间内不需要任何其他库中的许可。

他还提出了一项功能请求,以改进“清单合并报告”,这可能会有助于将来找到合适的选择器。


问题答案:

这将是<uses-permission>您要remove<permission>元素,而不是元素。

并请注意,如果您的应用没有此权限,则该库可能会崩溃。



 类似资料:
  • 自从发布以来,我将大部分java测试代码从移到文件夹,因为JVM测试要快得多。但我不能移动所有的测试。我确实需要设备测试,因为有些的东西。 在我开始迁移之前,我已经有了100%的代码覆盖率。当我当前运行jacoco代码覆盖率时,文件夹的覆盖率为40%,文件夹的覆盖率为71%。我的代码是100%测试,但我没有报告证明这一点。 有没有办法把这两份报告结合起来?我找到了JacocoMerge,但无法让它

  • 问题内容: 我对react.js还是很陌生,并且正在通过构建砌体样式布局进行试验。 我将每个元素呈现给DOM,然后需要遍历每个项目并根据前面的元素应用x和y位置。 初始模型如下所示: (我只显示了一个项目以使内容简短)。 完成循环并获取x和y数据后,我想将其应用于podStyle对象。我用以下数据调用setState: 这似乎从模型中删除了所有当前数据,而只剩下了podStyle数据。我是否误解了

  • 错误:任务“app:processDebugManifest”的执行失败。 Manifest合并失败:uses-sdk: minSdkVersion 10不能小于库中声明的版本17[com.android.support: leanback-v17:23.2.1]C:\SampleforliveTVInputFrameworkTIFonTV\app\build\中间体\爆炸-aar\com.and

  • 在我的应用程序中,我有以下属性文件: application.properties application-prod.properties 在里面我有同样的财产 Spring数据源。password=my dev password#用于默认的 spring。数据源。password=${PROD_DATABASE_password}#用于PROD文件 在服务器上,我像这样运行应用程序: java-

  • 我有几个POJO,这将有一个货币数额。我的想法是创建一个通用对象(由货币和值组成),然后每当我想在我的POJOs中表示一个货币金额时,就会使用它: 由于将在多个POJO中使用,我无法用注释和属性,因为在所有情况下,列名并不总是相同的。有没有办法注释属性(如上例中的)以提供和属性的列名,以便jOOQ在映射/取消映射POJO时理解它们,类似于Hibernate解释请问?

  • 我们正在TeamCity中运行单元测试和验收测试,都是针对同一项目的Java。两者都使用JaCoCo生成测试覆盖率报告。 有没有一种方法可以合并测试覆盖率报告,这样我们就可以看到两个套件都没有覆盖哪些代码?