Как сделать андроид: используетCleartextTraffic = "true" только для инструментальных тестов? - PullRequest
0 голосов
/ 16 декабря 2018

Я использую 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 поддерживает https начиная с версии 0.3.2, но я бы предпочел не иметь с этим дело.Я на самом деле следовал их руководству и в конечном итоге с этой ошибкой из 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.

Любые идеи?


РЕДАКТИРОВАТЬ:

Iпоследовал этот ответ и переместил этот манифест, который я создал, в исходную папку debug, и затем он заработал.Теперь опция android:usesCleartextTraffic="true" применяется только к моей отладочной сборке, которая используется инструментальными тестами, поэтому она работает, но все равно не выглядит как правильное решение.

1 Ответ

0 голосов
/ 08 января 2019

Для меня решение состоит в том, чтобы добавить простой 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>
...