我在此帖AndroidTest Manifest permission not detected
中提到了同样的问题和这篇文章AndroidManifest in androidTest directory being ignored
- >如果我将测试清单放在androidTest
,debugAndroidTest
,androidTestDebug
中,它就永远不会被选中并合并。
将AndroidManifest.xml放在debug
文件夹中的答案是正确的;这似乎确实有效。 (将测试清单放在src/debug
我想知道为什么你不能把它放在androidTest
目录中?我试图解决这个问题时所阅读的所有文档都让你听起来像是应该的,如果你不能,那么我认为这听起来像是清单合并中的一些错误。
对于它的价值,我正在使用Android Studio
答案 0 :(得分:2)
这是正确的,完全同意你对令人困惑的文件。 AndroidManifest.xml
源androidTest*
下的debug
包将用于在您的实际应用APK上进行测试的工具APK。如果您使用命令androidTest
编译app模块后,在build/outputs/apk/
下打开生成的gradlew assembleDebugAndroidTest
和testBuildType
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:sharedUserId
和AndroidManifest.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>