使用Robolectric时如何加载.so?

2024-04-03

W/环境:EXTERNAL_STORAGE 未定义;回到默认状态

java.lang.UnsatisfiedLinkError: com.autonavi.amap.mapcore.MapCore.nativeNewInstance(Ljava/lang/String;)J
    at com.autonavi.amap.mapcore.MapCore.nativeNewInstance(Native Method)
    at com.autonavi.amap.mapcore.MapCore.<init>(MapCore.java:62)
    at com.amap.api.mapcore.AMapDelegateImpGLSurfaceView.<init>(AMapDelegateImpGLSurfaceView.java:356)
    at com.amap.api.mapcore.AMapDelegateImpGLSurfaceView.<init>(AMapDelegateImpGLSurfaceView.java:318)
    at com.amap.api.mapcore.ak.a(MapFragmentDelegateImp.java:123)
    at com.amap.api.maps.MapView.onCreate(MapView.java:131)
    at com.e.activity.DriverReleaseActivity.initData(DriverReleaseActivity.java:179)
    at com.e.base.BaseActivity.onCreate(BaseActivity.java:29)
    at android.app.Activity.performCreate(Activity.java:5933)
    at org.robolectric.util.ReflectionHelpers.callInstanceMethod(ReflectionHelpers.java:195)
    at org.robolectric.util.ActivityController$1.run(ActivityController.java:122)
    at org.robolectric.shadows.ShadowLooper.runPaused(ShadowLooper.java:304)
    at org.robolectric.shadows.CoreShadowsAdapter$2.runPaused(CoreShadowsAdapter.java:45)
    at org.robolectric.util.ActivityController.create(ActivityController.java:118)
    at org.robolectric.util.ActivityController.create(ActivityController.java:129)
    at com.enjoytech.ecar.carpooling.activity.DriverReleaseAcitivityTest.init(DriverReleaseAcitivityTest.java:87)
    at com.enjoytech.ecar.carpooling.activity.DriverReleaseAcitivityTest.test(DriverReleaseAcitivityTest.java:79)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
    at org.robolectric.RobolectricTestRunner$2.evaluate(RobolectricTestRunner.java:251)
    at org.robolectric.RobolectricTestRunner.runChild(RobolectricTestRunner.java:188)
    at org.robolectric.RobolectricTestRunner.runChild(RobolectricTestRunner.java:54)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.robolectric.RobolectricTestRunner$1.evaluate(RobolectricTestRunner.java:152)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)

进程完成,退出代码 -1

它无法加载 .so 文件。

当我使用

try {      
    System.loadLibrary("libamapv304");
    System.loadLibrary("libamapv304ex");
} catch (UnsatisfiedLinkError e) {
    e.printStackTrace();
}

它导致java.lang.UnsatisfiedLinkError: no libamapv304 in java.library.path

我怎样才能使用.so使用 Robolectric 完成单元测试?


我会以某种受控的方式加载本机库。为简单起见,假设它位于Application:

public class NativeLibApplication extends Application {
    ...
    protected void loadNativeLibraries() {
        try {      
            System.loadLibrary("libamapv304");
            System.loadLibrary("libamapv304ex");
        } catch (UnsatisfiedLinkError e) {
            ...
        }
    }
    ...
}

机器人电动让您可以在测试下调整您的应用程序。你应该创建TestNativeLibApplication在测试文件夹下的同一包中并禁止加载本机库:

public class TestNativeLibApplication extends NativeLibApplication {
    ...
    @Override
    protected void loadNativeLibraries() {
        //do nothing
    }
    ...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用Robolectric时如何加载.so? 的相关文章

随机推荐

  • 如何反转 go 中的切片?

    如何反转任意切片 interface 在 Go 中 我宁愿不必写Less and Swap to use sort Reverse 有没有一种简单的内置方法可以做到这一点 Use 切片 反转 https pkg go dev slices
  • 错误:我们没有使用 Azure CLI 的有效访问权限

    我是 Azure CLI 的新用户 所以 我昨天开始使用它 一切正常 直到我在控制台上收到一条消息 要求我使用 Azure 登录命令再次登录 我按照消息所说的做了 打开我的浏览器并输入代码 浏览器加载页面 一切正常 但是 当我进入控制台窗口
  • 如何在 Maven 中创建校验和然后将其输出到文本文件?

    还在学习如何使用Maven 我想知道是否有办法做到checksum在生成的WAR file The Maven目标是package 我想要实现的是得到一个checksum价值 包装的WAR文件 与打包文件一起放入文本文件中 提前致谢 让它与
  • 当我移动轨迹栏时,如何防止 Windows 通用控件 6.0 中的控件(选项卡)闪烁和消失?

    滑动滑动条并释放鼠标按钮时 整个窗口都会闪烁 并且选项卡会消失 当我使用旧版本时 一切正常 当我使用新的 Microsoft Windows Common Controls ver 6 0 时 出现此问题 include
  • Flink 检查点到 Google Cloud Storage

    我正在尝试为 GCS 中的 flink 作业配置检查点 如果我在本地运行测试作业 没有 docker 和任何集群设置 一切正常 但如果我使用 docker compose 或集群设置运行它并在 flink 仪表板中使用作业部署 fat ja
  • Android 中的文本转语音完成后立即播放音频文件

    我正在尝试开发一个 Android 应用程序 一旦文本到语音完成 就必须播放音频文件 这个怎么做 如果我没有理解错的话 您想使用文本转语音来读取一些文本 同时将语音音频存储到手机中 然后再播放音频 你检查过吗录音测试 http develo
  • Mesos 任务 - 无法接受套接字:未来已丢弃

    我只是想将 mesos 版本从 1 0 3 升级到 1 3 1 Chronos 调度程序能够通过 mesos 调度作业 该作业运行良好并且能够查看 mesos 标准输出日志 但是 仍然在 mesos stderr 日志中看到以下内容 doc
  • 使用 MySQL 进行 SVN 身份验证

    我正在尝试通过 MySQL 设置每个存储库 SVN 身份验证 但遇到一些问题 首先 两者有什么区别mod authn dbd and mod auth mysql 其次 我已经有一个 MySQL 数据库设置 其中包含用户 组和权限的表 是否
  • 如何从 Amplify 生成的 Lambda 函数中访问其他 AWS 资源?

    我一直在使用 AWS Amplify 作为 AWS 的新手 我非常喜欢 Amplify 如何在 AWS 上为我配置必要的资源和 IAM 角色 我的问题是关于将 Lambda 与 GraphQL 结合使用 按照文档 我可以创建一个自定义 Gr
  • 可以使用反射覆盖 IEnumerable 中的项目吗?

    不顾任何合理的理由这样做 只是出于好奇是否可以获取任何给定的 IEnumerable T 并覆盖其中包含的项目 例如 给定 IEnuemrable String 是否可以完全替换 IEnumerable 中的所有字符串 正如其他人所说 如果
  • 背景尺寸:包含

    我想要一个带有背景图像的 div 保持图像的纵横比 固定高度为 500px 并且我不希望该 div 的背景上有 填充 这可以吗 我可以获得一个具有固定高度和保持宽高比的背景图像的 div div style background url s
  • 如何使用 Google 字体更改 Bootstrap 默认字体系列?

    我正在创建一个博客网站 我想更改 Bootstrap 字体 在 header 中的 import CSS 中我添加了这个字体 如何使用它作为我的引导程序默认字体 首先 你不能通过这种方式将字体导入到 CSS 中 您可以在 HTML 头中添加
  • Swift 中的元组是否可以完全替代 C# 中的匿名类型

    Like C 中的匿名类型 http msdn microsoft com en us library bb397696 aspx 新推出的语言 Swift 中的元组可以做 C 中的匿名类型可以做的事情吗 在学习 swift 时 我发现了一
  • 如何打开图像并在其上绘图

    我正在创建一个应用程序 人们可以在其中绘制草图并保存到图库中 这我已经完成并且运行良好 我希望能够从画廊中获取一张图像并能够在其上进行绘制 我已经能够打开图库来选择图像 但我无法弄清楚如何将该图像嵌入到画布上然后进行绘制 但问题是 它打开了
  • 存储过程返回 int 而不是结果集

    我有一个包含动态选择的存储过程 像这样的事情 ALTER PROCEDURE dbo usp GetTestRecords p1 int 0 p2 int 0 groupId nvarchar 10 0 AS BEGIN SET NOCOU
  • ES6 类中的 ES6 函数、箭头函数和“this”[重复]

    这个问题在这里已经有答案了 class App extends Component constructor props onChange e gt this setState term e target value onSubmit e e
  • CouchDB 和 Couchbase 有什么区别?

    之间有什么本质区别吗CouchDB http couchdb apache org and 沙发底座 http www couchbase com 我认为CouchDB和Couchbase Server之间有一些本质的区别需要指出 我不会写
  • 在自定义大小的浏览器窗口中使用批处理文件打开链接

    我想创建一个批处理文件 它将打开一个应用程序和一个链接 我们的想法是在桌面上的快捷方式文件中使用此批处理文件 以便一键单击应用程序和 URL 链接示例 www google com 应打开 但浏览器大小应自定义 例如 600 600 请建议
  • Spark中saveAsTextFile时如何命名文件?

    在 Spark 版本 1 5 1 中另存为文本文件时 我使用 rdd saveAsTextFile
  • 使用Robolectric时如何加载.so?

    W 环境 EXTERNAL STORAGE 未定义 回到默认状态 java lang UnsatisfiedLinkError com autonavi amap mapcore MapCore nativeNewInstance Ljav