web-dev-qa-db-ja.com

インストゥルメンテーションテスト専用のAndroid:usesCleartextTraffic = "true"を作成する方法は?

インストゥルメンテーションテストに RESTMock を使用していますが、マニフェストで usesCleartextTraffictrueに設定した場合にのみ機能します。ただし、これはインストゥルメンテーションテストにのみ当てはまります。それを行う方法はありますか?

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

6

私にとっての解決策は、単純なAndroidManifest.xmlandroidTest/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>