问题标签 [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 投票
0 回答
528 浏览

android - Android 的本机 Web 浏览器版本是否依赖插件?

我一直在尝试 Google 为浏览器插件提供 Android 源代码的代码,更具体地说,按照这个自述文件,

https://www.codeaurora.org/git/projects/qrd-gb-dsds-7225/repository/revisions/cc99b832a941dc8cbb86f1607d04eb87935ddbfd/entry/android/development/samples/BrowserPlugin/README

我的问题是,我需要为每个平台(Froyo、Gingerbread、Honeycomb 等)分发一个单独的插件吗?我打算在插件中包含本机代码。

提前致谢!

0 投票
1 回答
12779 浏览

android - 如何在不使用 NDK 的情况下将 Andrioid NDK 构建的共享库添加到我的 APK?

Add a native lib to an APK 的几乎完全相同的副本。由于没有答案,我决定再问一次。

我有一个安卓项目。我有一个用 android NDK 构建的 .so 库。我想在我的项目中使用这个 .so ,最好 - 不使用 NDK。

那么,我如何告诉 Eclipse(或 Android 工具)我需要将某些 .so 构建到我的 APK 中?

0 投票
1 回答
894 浏览

android - 构建 APK 会从文件名中删除本机库版本号

我有一个使用自动工具构建共享库的遗留代码。这些库需要在 Android 应用程序中使用,因此我为它创建了一个简单的 Java 类和 JNI 包装器(作为共享的 .so 库)。

我已经有 Android.mk 脚本,可以正确执行旧版构建系统,为 Java 程序构建本机库并链接它。

输出文件如下:

lib-wrapper.so取决于库lib-alib-b. 请注意,旧版 autotools 设置将版本号添加到共享库文件名中 - 作为依赖项嵌入到lib-wrapper.so.

问题:

在 APK 构建期间(例如,从 Eclipse 导出未签名的包)版本号
从文件名中删除。这会导致错误:

无法加载库:link_image [1721]:30 无法为“lib-wrapper.so”加载所需的库“lib-b.so.2”

因为 APK 包含文件lib-b.so.

如何在 APK 构建期间强制保留版本号?

修改遗留构建系统是不可能的(除非它是必须的),因为相同的设置用于构建 x86 库/执行程序。

谢谢你。

0 投票
1 回答
1184 浏览

android - 安卓 4.x。通过 apk 部署本机库并从其他应用程序加载

我有几个本机库,我想通过 apk 包部署它们(即将它们复制到 libs 文件夹或资源)。然后我需要安装单独的应用程序并使用以下方法加载这些库:

可以通过哪种方式实现?据我了解,出于安全原因,我不能只使用 /data/data/libs_package/lib/native_lib.so 路径加载库。还有其他方法吗?

提前致谢。

0 投票
0 回答
1414 浏览

android - 如何在android中解压.7z文件

我想解压缩从服务器获取的 .7z 文件。
为此,我在项目 libs 目录中添加了 Sevenzipjbinding.jar 库及其共享库 Sevenzipjbinding-AllLinux.jar,
但出现错误“库 'sevenzipjbinding-AllLinux.jar' 包含无法在设备上运行的本机库”在运行应用程序时在控制台中。

我尝试system.loadLibrary(sevenzipjbinding-AllLinux.jar);在活动中使用,但再次给出同样的错误。

请告诉我如何实现它。如何解压缩 tar.7z

0 投票
1 回答
5129 浏览

java - CANNOT LINK EXECUTABLE 错误与加载所需的库。如何正确链接它们?

编辑:我知道可能重复,但答案并不直接适用。我正在使用 ProcessBuilder 而不是 Runtime.getRuntime().exec:


我在为 android 编译的 FFmpeg 上有两个版本:启用和不liblame启用。

当我加载/data/data/<<my-package-name>>/app_bin/不支持不支持编译的 FFmpeg 二进制文件时,它可以毫无问题地从视频中提取音频。但是,当我使用启用了蹩脚支持的那个时,我在日志中收到了以下错误。

所需的库(也是为 android 编译的)在libs使用System.loadLibrary("lame").

我想知道是否还有其他事情要做才能正确地使 FFmpeg 二进制文件找到库。这些是提供给 NDK 以构建 FFmpeg 二进制文件的相同库。

我没有附加代码,因为它相当简单:

  • 下载 FFmpeg 二进制文件(应用程序不附带);
  • 将下载文件夹中的二进制文件复制到/data/data/<<my-package-name>>/app_bin/
  • chmod 755;
  • 从那里执行并读取输出。

如果需要其他内容,请发表评论。

0 投票
1 回答
2603 浏览

android - android应用程序中的预构建本机库

我有一个 android 应用程序,它使用一些预构建的本机库(Osmand 预构建库)。问题是当我在手机上运行应用程序时,它说这些库丢失了。当我查看 .apk 文件时,没有“lib”文件夹 - 如何设置 eclipse 来导出它们?

0 投票
3 回答
4469 浏览

android - android .so 文件未在 /data/data/ 中提取/lib

我正在开发一个原生 android 应用程序,并使用一个生成 .so 文件的开源库。面对奇怪的行为。前几次,应用程序运行良好,库被加载。但现在它无法找到图书馆并给出 -

java.lang.UnsatisfiedLinkError:无法加载:findLibrary 返回 null

.以下是一些观察: 1. 当我提取 .apk 文件时,库 (.so) 存在于“lib/armeabi”文件夹下。2.但是当我尝试将库(.so)搜索到设备提取路径中时

/data/data//lib/ ,它不存在。关于为什么会发生这种奇怪行为以及为什么 .so 文件没有被提取到 /data/data/com.ibm.homeScreen/lib/ 文件夹下的任何建议。

提前致谢!

0 投票
1 回答
4215 浏览

android - 64 位安卓、32 位应用程序和 32 位本机库

假设我们有 64 位硬件,带有 64 位 linux 内核和 64 位 android。
因此 Zygote 将作为具有自己的 DVM 实例的 64 位进程运行。

现在假设有一个第三方应用程序包含一个 32 位本机库,该库在运行时使用system.loadlibrary调用加载。

我认为当我们尝试运行这个应用程序时,zygote 将能够启动进程并且 DVM 将能够解释 classes.dex 文件,即使 apk 是为 32 位机器构建的。但是当应用程序尝试加载 32 位本机库时会发生故障,因为设备上的仿生 libc 和其他库都是 64 位的。

这种理解正确吗?

0 投票
0 回答
171 浏览

java - 在使用 Eclipse 的 android 应用程序中包括 *.so lib?

我想在我的 android 应用程序中使用 *.so 文件,所以我按照某些网站的建议将文件复制到“libs\armeabi\libctrl_gpio.so”。当我运行并创建 apk 文件时,Eclipse 会创建这个文件夹(在 apk 内)!

当应用程序想要使用此代码加载库时,它将“libs”更改为“lib”:

我得到错误:

您在第一行看到路径是“lib/libctrl_gpio.so”,而不是 apk 文件中的“lib\armeabi\libctrl_gpio.so”!

同样在第 4 行,路径是“/dev/ctrl_gpio”!!!!!!!!!!!!

我不明白为什么会发生这种情况,这是我阻止加载库的问题吗?我搜索并看到了很多网站和问题,但没有一个能解决我的问题。任何帮助将不胜感激。我是android的新手,所以请提供详细信息。谢谢。