代码之家  ›  专栏  ›  技术社区  ›  Fred Porciúncula

如何使android:usesCleartextTraffic=“true”仅用于检测测试?

  •  1
  • Fred Porciúncula  · 技术社区  · 6 年前

    RESTMock 对于我的仪器测试,但只有当我设置 usesCleartextTraffic true

    我试图在 androidTest 文件夹。测试运行但失败 仍然 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" 选项只应用于我的调试构建,它由检测测试使用,因此它可以工作,但它仍然感觉不是正确的解决方案。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Xavier Rubio Jansana    6 年前

    对我来说,解决方法是添加一个简单的 AndroidManifest.xml androidTest/AndroidManifest.xml . 在您引用的答案中也提到了这一点,但在这种情况下,它不起作用,因为旧的工具没有合并这个 .

    androidTest java 目录,我有以下内容:

    ~/source/my-library/src/androidTest develop*
    ❯ ls
    AndroidManifest.xml java
    

    带着这个 文件:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
              package="com.mypackage.mylibrary">
    
        <application
            android:usesCleartextTraffic="true" />
    
    </manifest>
    
    推荐文章