AWS Device Farm + Espresso :运行涉及 AWS Device Farm 中的本机 JNI 方



我正在使用 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 团队工作。

  1. JNI 库加载未在设备场上禁用。
  2. 可能是您看到的问题的潜在原因的一件事是,我们在上传时最终会签署应用程序,这可能会破坏Google地图之类的内容。请参阅常见问题解答"是否修改我的应用程序 https://aws.amazon.com/device-farm/faq/?

还要确保您能够在本地真实设备上加载此应用程序并成功启动它。这将为您提供一个要比较的基线。

希望有帮助。

最新更新