androidTest AndroidManifest.xml忽略了

时间:2016-05-31 16:00:24

标签: android android-manifest android-testing

我在此帖AndroidTest Manifest permission not detected

中提到了同样的问题

和这篇文章AndroidManifest in androidTest directory being ignored

- >如果我将测试清单放在androidTestdebugAndroidTestandroidTestDebug中,它就永远不会被选中并合并。

将AndroidManifest.xml放在debug文件夹中的答案是正确的;这似乎确实有效。 (将测试清单放在src/debug

我想知道为什么你不能把它放在androidTest目录中?我试图解决这个问题时所阅读的所有文档都让你听起来像是应该的,如果你不能,那么我认为这听起来像是清单合并中的一些错误。

对于它的价值,我正在使用Android Studio

2 个答案:

答案 0 :(得分:2)

这是正确的,完全同意你对令人困惑的文件。 AndroidManifest.xmlandroidTest*下的debug包将用于在您的实际应用APK上进行测试的工具APK。如果您使用命令androidTest编译app模块后,在build/outputs/apk/下打开生成的gradlew assembleDebugAndroidTesttestBuildType APK(假设您没有更改build.gradle在您AndroidManifest.xml,更多信息here)中,您会发现在androidTest下添加的任何androidTest配置都在debug APK中,而不在您的AndroidManifrst.xml应用APK。

正如您所说,如果您需要测试特定配置(如额外权限),则必须将它们放在debug源代码集下的main而不是Select ssn from claim_a Union all select ssn from claim_b 因此,它们只能用于测试您的应用程序,但不能用于您的发布版本。当然,您可以通过在编译后打开生成的APK来进行双重检查,以确保配置适合每个构建变体。

答案 1 :(得分:-1)

如果您需要为测试添加额外的权限,则可以这样做。

您应在默认的android:sharedUserIdAndroidManifest.xml中设置相同的androidTest/AndroidManifest.xml

例如:

AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:sharedUserId="com.yourpackagename.uid">

    <application
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        tools:replace="android:allowBackup">

    </application>

</manifest>

androidTest / AndroidManifest.xml:

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

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

</manifest>

有关详细信息:https://stackoverflow.com/a/14196493/3901000