我正在使用RESTMock进行仪器测试,但只有在清单中将usesCleartextTraffic
设置为true
时,此方法才有效。不过,我只希望对仪器测试如此。有办法吗?
我尝试在androidTest
文件夹中创建一个新的清单文件。测试可以运行,但是它们失败,就像usesCleartextTraffic
仍然是false
。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="my.package">
<application android:usesCleartextTraffic="true" />
</manifest>
我知道RESTMock从版本0.3.2开始支持https,但是我宁愿不必处理它。我实际上遵循了他们的指南,并最终遇到OkHttp3的错误:
java.lang.AssertionError: java.security.NoSuchAlgorithmException: The BC provider no longer provides an implementation for KeyPairGenerator.RSA. Please see https://android-developers.googleblog.com/2018/03/cryptography-changes-in-android-p.html for more details.
有什么想法吗?
我遵循了this的回答,并将我创建的此清单移动到了debug
源文件夹中,然后它起作用了。现在android:usesCleartextTraffic="true"
选项仅适用于我的调试版本,由工具测试使用,因此可以正常工作,但仍然感觉不合适。
答案 0 :(得分:1)
对我来说,解决方案是在AndroidManifest.xml
中添加一个简单的androidTest/AndroidManifest.xml
。您所参考的答案中也提到了这一点,但是在那种情况下,它不起作用,因为旧工具没有合并此AndroidManifest.xml
。
因此,在androidTest
目录中,并且在java
目录旁边,我有以下内容:
~/source/my-library/src/androidTest develop*
❯ ls
AndroidManifest.xml java
使用此AndroidManifest.xml
文件:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mypackage.mylibrary">
<application
android:usesCleartextTraffic="true" />
</manifest>