android - 使用 ReLinker 加载库时 Android Studio 中的测试出错
问题描述
当我尝试运行我的单元测试时,ReLinker 正在抱怨。我添加了 Bugsnag,它可以正常工作。后来我在这里添加了 ReLinker:https ://docs.bugsnag.com/platforms/android/faq/ 添加这两行之后,我不再能够运行我的测试。
我的应用程序 onCreate 包含:
ReLinker.loadLibrary(this, "bugsnag-ndk")
ReLinker.loadLibrary(this, "bugsnag-plugin-android-anr")
Bugsnag.start(this, config)
每当我尝试使用 RobolectricTestRunner 运行测试时,都会收到以下错误:
[Robolectric] WARN: Android SDK 29 requires Java 9 (have Java 8). Tests won't be run on SDK 29 unless explicitly requested.
[Robolectric] WARN: Android SDK 30 requires Java 9 (have Java 8). Tests won't be run on SDK 30 unless explicitly requested.
Could not find 'bugsnag-ndk.dll'. Looked for: [armeabi-v7a], but only found: [java.util.regex.PatternSyntaxException: Unmatched closing ')' near index 10
lib\([^\\]*)\bugsnag-ndk.dll
^].
com.getkeepsafe.relinker.MissingLibraryException: Could not find 'bugsnag-ndk.dll'. Looked for: [armeabi-v7a], but only found: [java.util.regex.PatternSyntaxException: Unmatched closing ')' near index 10
lib\([^\\]*)\bugsnag-ndk.dll
^].
at com.getkeepsafe.relinker.ApkLibraryInstaller.installLibrary(ApkLibraryInstaller.java:173)
at com.getkeepsafe.relinker.ReLinkerInstance.loadLibraryInternal(ReLinkerInstance.java:180)
at com.getkeepsafe.relinker.ReLinkerInstance.loadLibrary(ReLinkerInstance.java:136)
at com.getkeepsafe.relinker.ReLinker.loadLibrary(ReLinker.java:70)
at com.getkeepsafe.relinker.ReLinker.loadLibrary(ReLinker.java:51)
at com.roardam.vvitas.Vvitas.onCreate(Vvitas.kt:19)
at org.robolectric.android.internal.AndroidTestEnvironment.lambda$installAndCreateApplication$0(AndroidTestEnvironment.java:288)
at org.robolectric.util.PerfStatsCollector.measure(PerfStatsCollector.java:86)
at org.robolectric.android.internal.AndroidTestEnvironment.installAndCreateApplication(AndroidTestEnvironment.java:288)
at org.robolectric.android.internal.AndroidTestEnvironment.setUpApplicationState(AndroidTestEnvironment.java:171)
at org.robolectric.RobolectricTestRunner.beforeTest(RobolectricTestRunner.java:319)
at org.robolectric.internal.SandboxTestRunner$2.lambda$evaluate$0(SandboxTestRunner.java:269)
at org.robolectric.internal.bytecode.Sandbox.lambda$runOnMainThread$0(Sandbox.java:89)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
我添加了 ReLinker 和 Bugsnag:
implementation 'com.github.KeepSafe:ReLinker:1.4.3'
implementation 'com.bugsnag:bugsnag-android:5.+'
我不完全确定问题出在 ReLinker,但是当我删除加载库的两行时,我能够运行测试。
如果我没有显示足够的代码,请告诉我,我会用任何需要的代码更新我的帖子。谢谢你。
解决方案
来自 Bugsnag 支持团队的 John 在这里。
正如通过您提出的支持票和更广泛的受众所讨论的那样,这看起来是一个 Relinker 问题,因为它在加载各种其他本机库时发生,而不仅仅是 Bugsnag。
推荐阅读
- json - Ansible 从文件中获取类似字典的值到剧本或循环
- c# - 无法加载文件或程序集“CsvHelper”(C#、VS2019、CSVHelper)
- ios - 测试飞行 - 本地网络权限,TestFlight 构建中的 NSBonjourServices 错误
- python-3.x - 在 docker 容器中运行时加载预训练的 torch 和 sentence_transformers 模型失败
- typescript - 打字稿函数在浏览器中返回“不是函数”
- c# - 尽管在返回之前有值,但方法返回空值
- javascript - 将函数的值分配给javascript中的同名变量
- visual-studio-code - VSCode 中使用较小字体大小的模糊字体渲染
- regex - 推送标签时构建的 Cloudbuild 触发器不会自动调用
- python - 查找 List["str"] 但不是 List[str] = ["a"] 的情况