gpt4 book ai didi

java - DexGuard - 使用 Robolectric 加密类 NullPointerException

转载 作者:行者123 更新时间:2023-11-30 01:55:48 25 4
gpt4 key购买 nike

我在为某些类运行带有 -encryptclasses 的 DexGuard 时遇到问题。该问题仅在运行 Robolectric 单元测试时发生。我从任何被 DexGuard 混淆和加密的类中得到一个 NullPointerException。如果我关闭 encryptclasses 标志,它在 Robolectric 中工作。

该配置也适用于设备和模拟器:在 Android 环境中运行应用程序(在 Dalvik 和 ART 设备和模拟器中测试)工作正常。 Android Instrumentation 测试也可以。只有在通过 Robolectric 运行时,我才会得到 NullPointerException。如果我禁用 DexGuard encryptclasses,一切在 Robolectric 中也能正常工作。

DexGuard 正在我依赖的库中使用。该库已添加到我的 gradle 模块的 libs 文件夹中。

我会将此作为 Robolectric 问题发布,但如果没有 DexGuard 工具的许可,他们可能无法复制。

设置是:

  • Android Studio 1.3.2
  • Android Gradle 插件 1.3.1
  • Android 构建工具版本 23.0.0
  • Android compileSdkVersion 22
  • 甲骨文 JDK 8
  • Ubuntu 15.04 64 位
  • DexGuard 版本:5.5.00

最佳答案

Robolectric 相当密集地使用反射,任何类型的混淆都非常容易破坏此功能。

我会创建构建配置用于测试目的,我会关闭 dexguarding。默认情况下与调试相同,默认情况下不会混淆您的代码。

单元测试的目的是测试一小部分功能,而不是测试构建过程与混淆和代码功能的组合。

我还会写信给 DexGuard 人员,检查 dexguard 是否在正确的位置进行混淆。我的理解是,在 VM 上运行 Robolectric 测试不应该受到任何形式的混淆

关于java - DexGuard - 使用 Robolectric 加密类 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32257355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com