【问题标题】:Testing permissions and an Android apps Manifest file测试权限和 Android 应用清单文件
【发布时间】:2014-09-30 02:38:29
【问题描述】:

我想知道是否有办法将某些权限(或任何东西)添加到 android 清单文件中,但它仅在测试运行期间使用 - 而不是生产。我正在寻找一些程序化的东西,而不是在测试时剪切和粘贴。

这里是上下文:

我正在阅读这篇文章:http://developer.android.com/training/location/location-testing.html,测试运行应用程序的最佳实践曾经是创建一个“测试应用程序”,但是对于 android studio,我们现在并不是要创建一个新应用程序 - 所有测试都应该通过应用程序完成。 (谢谢毕业)

问题在于,这篇文章是在其中包含测试许可 (ACCESS_MOCK_LOCATION) 的情况下编写的,我不希望它出现在我的应用程序中 - 如果有一个好的方法,我想这样做。

更新:我遇到这个问题的原因是因为迁移到 Gradle 后对 android studio 架构的设置存在误解。 我没有意识到构建类型共享“androidTest”和“main”源文件夹。因此,在测试或运行未完成的应用程序时,它会获取调试文件(如果有)并将所有生产内容添加到其中。所以在我的例子中,我在调试中添加了一个空的清单文件,并简单地添加了两个权限。当我运行或测试时,gradle 会将我所有的应用程序从它的其他清单添加到这个骨架文件中(反之亦然,我不确定)。

所以最后我们不需要修改 androidTest 文件夹(实际上我认为我们不允许在这里添加清单),因为它完全是根据用户是在调试还是部署运行而生成的.干杯! :-)

【问题讨论】:

  • 我不太了解它,但一个好的线索可能是通过 Android Studio 提供的称为“Flavors”的东西。 Here's a link.
  • 我看了一下,问题是我发现测试清单是自动生成的,所以现在我正在尝试找到一种方法来添加权限(通过gradle)来进行测试,但我认为它可能只是通过调试我会这样做。我会保持更新。

标签: android android-gradle-plugin


【解决方案1】:

假设您使用默认的 debugrelease 构建类型,并针对调试构建类型运行测试。 在这种情况下,您可以创建一个 src/debug/AndroidManifest.xml 并在调试版本中添加您需要的额外权限:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="your.package">

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

</manifest>

【讨论】:

  • 完美,我刚刚想通了。 :) 我很感激。
  • 是的,这行得通。所以我现在有 2 个清单:一个在 src/main/AndroidManifest.xml 和其他 src/debug/AndroidManifest.xml
【解决方案2】:

如果您的项目不遵循默认文件夹层次结构,并且您想向调试版本添加权限,请添加以下块。

sourceSets {
    debug {
        manifest.srcFile '<your folder>/AndroidManifest.xml'
    }
}

【讨论】:

    猜你喜欢
    • 2012-05-28
    • 1970-01-01
    • 2014-03-21
    • 1970-01-01
    • 2012-11-13
    • 1970-01-01
    • 2014-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多