问题标签 [android-native-library]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
120 浏览

android - Android 库项目是否支持原生库?

我已阅读Android Library 项目的概述。我打算开发一个包含本机库和 JNI 包装器的 Android 项目库,这些库将包含在 Android 项目中。但是,该文档没有明确提及 Android 库项目是否可以包含本机库。

任何人都可以确认/确认 Android 库项目中对本机库的支持吗?

0 投票
0 回答
532 浏览

android - JNI Wrapping - 未导出的函数

我正在尝试包装 c-library (OpenAL-MOB) 的一些功能,以便在我的 Android 应用程序中使用它们。

我认为我的函数没有正确导出。

我采取的步骤:

  1. 我用我想在我的 Android 应用程序中使用的功能制作了一个 java 类,
  2. 使用 javah 和 javac 创建存根(在此之后我没有更改任何类名或包名),
  3. 将包装文件添加到 Android.mk
  4. 构建一个 .so 库(使用 ndk-build)
  5. 将 .so 文件复制到我的 android 项目的 libs/armeabi 文件夹中
  6. 在我的android代码中加载了库并调用了本机函数-> unsatisfiedinkerror。

当我尝试在我的 android 代码中使用该库时,我能够加载该库,但它找不到我的包装函数。

我认为我的函数实际上并没有导出。

为了添加我的包装函数,我修改了 OpenAL-MOB 项目中已经存在的 Android.mk。在构建过程中我没有收到任何错误。我唯一做的就是在 LOCAL_SRC_FILES 的末尾添加 2 个文件(由 javah 创建的 .c 和一个辅助类)。

安卓.mk

我使用 NM 查看导出了哪些函数(nm.exe -D libopenal.so)。结果是这样的:

我不确定我是否正确,但似乎我的功能丢失了。有人知道我可以做什么或检查吗?我的 .mk 文件有问题吗?

我现在尝试将这个库包装好几天,我变得非常绝望。很感谢任何形式的帮助!

编辑: 我相信它与首先将库构建为静态库然后作为共享库有关。如果我创建这样的共享库,似乎所有符号都会丢失。有人可以给我有关此的其他信息吗?

0 投票
1 回答
542 浏览

android - 尝试加载本机库(.so 文件)时出现 java.lang.UnsatisfiedLinkError

我正在 Android 中开发视频播放器。因为我需要使用具有 LGPL 许可证的代码,所以我必须将本机库放在某个地方。

要加载 jniLibs,我正在尝试使用System.load(). 使用项目结构中的 jniLibs文件夹,一切正常,但在不同的位置,程序以以下错误结束

做了以下事情:

显现:

主要活动:

我收到此错误:

我在google上研究了很多,但我仍然不知道如何解决它。

0 投票
3 回答
21585 浏览

android - Android 活动崩溃 (DeadObjectException)

这是我的 logcat 详细信息。请帮我解决这个问题:

当我开始滚动 RecyclerView 时,我也遇到了这个异常。我正在这个 RecyclerView 视图中加载图像。任何解决方案表示赞赏。

这是更新的崩溃报告:

0 投票
1 回答
770 浏览

android - 使用 dexguard 加密时,在运行时加载本机库需要更多时间

我在我的 android 应用程序中集成了 dexguard。一切正常。

我还使用 dexguard 加密了本机库。这里的问题是,当我应用 dexguard 时,加载本机库需要几秒钟,而没有 dexguard 它会立即加载。如果我-encryptnativelibraries从 dexguard 属性文件中删除,它会立即加载。

我猜想在运行时解密 .so 文件需要几秒钟?或者不应该花这么长时间?

0 投票
1 回答
1292 浏览

android - 从 android 的 obb 文件夹加载 .so 本机库

我有一个 .so 文件,我将其打包到 obb 扩展中。它大约是 20 兆字节。

我正在尝试使用

加载库。但我得到了错误:

dlopen(“/storage/emulated/0/Android/obb/com.mypackage.myapp/libtest.so”,RTLD_LAZY)失败:dlopen 失败:无法映射“/storage/emulated/0/Android/obb/com. mypackage.myapp/libtest.so”段 2:权限被拒绝

type=1400 audit(0.0:8):avc: denied { execute } for path="/storage/emulated/0/Android/obb/com.mypackage.myapp/libtest.so" dev="fuse" ino=367663176224 scontext =u:r:untrusted_app:s0 tcontext=u:object_r:fuse:s0 tclass=文件许可=0

所以我意识到我们不允许在那里有可执行文件。

所以我的问题是,

1-应该在哪里提取文件才能做到这一点?

2-我应该调用什么函数?

谢谢你。

0 投票
1 回答
889 浏览

xamarin - 有什么方法可以使用 EmbeddedNativeLibrary?

在 XamarinSolution中,我有:

  • 项目 1:一个Android应用项目(应用程序)。Android我有一个使用三个的旧应用程序.so,构建为AndroidNativeLibrary. 这运作良好.so并被发现。我想用它做一个图书馆。出于这个原因,我做了一个新Library项目。现在,在我的解决方案中,我有第二个项目:

  • Library项目2:.so构建为EmbeddedNativeLibrary. 这是行不通的。DLL不包含.so也不.so复制到引用它的 Android 应用程序项目中。(我不知道/lib在构建过程中将它们放在应用程序文件夹中的通常过程是什么)所以 .so 库无处可寻,Dalvik找不到它。我知道如果我直接将它们放在应用程序项目中它会起作用,但这是一个丑陋的解决方案。

在我看来EmbeddedNativeLibrary,从名字来看,应该对我有所帮助。但它没有效果。

如何将我的.so文件嵌入.DLL Library或自动复制到应用程序/lib目录中?

[编辑]

我之前应该验证过,但这些库确实包含在 APK 中。只是在运行应用程序时找不到它们。就像丢失或错误引用的库一样。也许有一个额外的步骤可以使它们可见?

他们在那里为适当的 ABI

0 投票
0 回答
1972 浏览

java - 从 Android System App 的数据中获取 Native Lib

我想从将安装在系统中的应用程序的数据中获取本机库路径,我尝试了以下代码:

但它给出了这个错误:

java.lang.UnsatisfiedLinkError: dlopen failed: library /data/data/xxxx/lib/lib.so not found

我试图不使用硬编码

但如果我使用此代码,则会显示相同的错误:

该应用程序将尝试从系统/应用程序获取本机库并显示相同的错误,有人可以帮助强制从数据中获取本机库吗?也许是这样的

context.getApplicationInfo().nativeLibraryDir

但是强制数据,而不是系统,因为当我尝试在日志中显示 libpath 时(当我尝试在数据中安装时),它会显示

/data/app/apppackage-1/lib/arm/libname.so

包名后有一个数字,有时-1,有时-2。

0 投票
0 回答
1248 浏览

android - 更改权限 Android system/lib 以加载原生库数据

我制作了一个安装在 Android 系统中的应用程序,我的应用程序使用本机库,我尝试使用此代码加载本机库:

起初出现此错误:

java.lang.RuntimeException:java.lang.UnsatisfiedLinkError:dlopen 失败:无法映射“/system/lib/liblinphone-armeabi-v7a.so”段 2:权限被拒绝

之后我尝试输入这段代码:

但是同样的错误又出现了,是系统中的android应用程序无法访问系统/库还是我的代码错误?

0 投票
0 回答
161 浏览

android - Java Binding Library 原生 Thumbnailator Lib Xamarin Android

我正在尝试将此lib添加到我的项目中。
所以我在我的Xamarin.Android项目中添加了Java 绑定库,编译后,我遇到了一些问题。

试图自己解决,但没有得到运气。
所以我通过删除节点删除了我不会使用的包,并且一切正常,但我有奇怪的行为。

类,我想使用的是空的(他是如何在程序集浏览器上显示的):

原来的(源 .java 版本)是这样的。
为什么会发生这种情况?它无法使用。
谢谢!