インストゥルメンテーションテストに 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"
オプションは、インストルメンテーションテストで使用されるデバッグビルドにのみ適用されるため、機能しますが、適切なソリューションのようには感じられません。
私にとっての解決策は、単純な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>