gpt4 book ai didi

引用动态库的 Android NativeActivity 部署失败

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:45:46 26 4
gpt4 key购买 nike

环境……

我有一个全新的 Visual Studio 2015 Android NDK 解决方案。这包含 2 个项目(由 visual studio 生成的默认模板代码):

  • 原生 Activity 。这是我想放置 Android 特定代码的地方。它有一些默认代码,可以在绿色和黑色之间淡化屏幕颜色。
  • 帮助部署的“打包”项目。

我已将其成功部署到英特尔 HAXM 虚拟设备以及通过 USB 连接的真实设备。到目前为止一切都很好。

然后我添加了一个 Android 动态库项目 (.so) - 这是我要放置核心代码的地方(与平台无关)。我从 native Activity 项目中添加了对此核心库的引用。

一切都可以正常编译和链接。我仍然可以创建 .APK 文件。

其他信息:

  • Android SDK 5.1 (Android-22)
  • 安卓 NDK 21
  • x86
  • clang 3.8
  • C++ 11
  • 不使用 Make 文件或 Gradle

问题...

现在每当我部署到虚拟/真实设备时,我都会收到以下错误(取自 logcat)

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.NATester/android.app.NativeActivity}: java.lang.IllegalArgumentException: Unable to load native library: /data/app/com.NATester-2/lib/x86/libNATester.so

我尝试过的事情......

  • 将核心库更改为静态 (.a)
  • 检查 android 设备以查看文件是否存在 - 它确实存在。
  • 手动将 .APK 部署到 android 设备。

有些文章建议使用 Java 代码加载库 - 我想避免调用 Java 代码,例如System.LoadLibrary 因为这看起来像是一个 hack - 我觉得应该可以在 android 上拥有一个纯 C++ 应用程序。我不能是唯一遇到这个问题的人吗?!

这看起来很相关但是很旧,而且对于一定很常见的情况来说又是一个不必要的 hack - Can't load native shared library with dependencies in a native activity app - https://github.com/ikonst/android-dl

就其值(value)而言,我是一名使用 Visual Studio 的经验丰富的 C# 开发人员(15 年)。因此,在开发应用程序时,我认为很多事情都是理所当然的——这是我使用 C++/Android 的第一个项目,似乎更像是一场让一切正常工作的手动战斗!

最佳答案

努力了一段时间,但最终成功地部署了这些库,非常容易。

在解决方案资源管理器中右键单击项目 [theProject (Andorid-xx)] 并选择添加新项目,添加您的 .so 库。

右键单击新添加的库并选择属性,项类型应为库,将内容设置为是,这将部署库。

关于引用动态库的 Android NativeActivity 部署失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38980993/

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