我正在使用 Jenkins 在 AWS Device Farm 上运行测试构建后操作在Device Farm中的设备中运行 Espresso Android Instrumentation 测试。该应用程序使用本机 JNI 库从 JPEG 创建 TIFF 图像。
但是,一旦执行用于执行本机函数的代码,应用程序就会崩溃。即使我只是在设备农场中的某个设备中运行该应用程序,当我单击调用本机 JNI 函数的按钮时,该应用程序也会崩溃。
我在日志中收到以下错误: 由以下原因引起:java.lang.UnsatisfiedLink错误:dlopen 失败:找不到由"libtiff.so"引用的符号"rand"...
还可以在较早的时间点(当事情初始化时)跟踪与 JNI 相关的日志
- 在跳过初始化 libnativehelper.so 0x0中找不到JNI_OnLoad
- 尝试加载库 libjavacore.so 0x0
- 检查 JNI 已关闭
我想知道 JNI 库加载是否默认在 AWS 设备场中处于禁用状态。如果是,有没有办法启用它们。如果默认情况下支持 JNI 库,有人可以指出我正确的方向,以便我解决此问题。
我在 AWS Device Farm 团队工作。
- JNI 库加载未在设备场上禁用。
- 可能是您看到的问题的潜在原因的一件事是,我们在上传时最终会签署应用程序,这可能会破坏Google地图之类的内容。请参阅常见问题解答"是否修改我的应用程序 https://aws.amazon.com/device-farm/faq/?
还要确保您能够在本地真实设备上加载此应用程序并成功启动它。这将为您提供一个要比较的基线。
希望有帮助。