问题标签 [android.mk]

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 回答
2165 浏览

android - 从 Java 文件调用 C++ 文件中的 C++ 方法时出现 UnsatisfiedLinkError

看来这是一个流行的问题,

而且我仍然没有找到解决方案。

package nameapp.cloudstringers

Java file : Completed.java

C++ file : ffmpeg.cpp

Android.mk file

我运行应用程序但仍然收到错误异常UnsatisfiedLinkError : getString

知道如何解决这个问题的人,

请告诉我,

谢谢

更新 关注@dextor 的回答。对不起,因为我弄错了。对于这个问题,我唯一需要的就是从 更改public native int getString()public native String getString()

现在可以了。

0 投票
2 回答
8273 浏览

android - java.lang.IllegalArgumentException:无法加载本机库

我在我的项目(原生活动)中使用纯原生 NDK。当我在 Android.mk 文件中添加带有我的 .so 的预构建静态库时,它工作正常。但是当我尝试链接 Prebuilt 共享库时,它显示以下异常:

这是我的 Android.mk 文件:

在我的 AndroidManifest.xml 中:

最后在 Application.mk 中:

我也尝试将最后一行替换为,

我还应该怎么做才能将预构建的共享库与我的本机库链接?我在这里想念什么?任何帮助将不胜感激。

编辑:

0 投票
1 回答
5645 浏览

android - Android NDK - 没有此类文件或目录编译终止 - 头文件导出问题

我正在尝试使用 NDK 将 TagLib C++ 库 ( http://taglib.github.io/ ) 导入 Android。

/jni/taglibroot/通过将所有源代码放在下面的图片中,我能够成功编译库:

在此处输入图像描述

ndk-build/jni文件夹上运行。

但是,我还创建了tag_lib_personal.cpp下面的文件(使用 TagLib API):

但我无法编译它。当我尝试ndk-build再次运行时,出现以下错误:

该错误表明它无法从 TagLib 库中找到一些 .h 文件。这是我的Android.mk文件:

如您所见,我将 TagLib 库的每个目录都放在了LOCAL_EXPORT_C_INCLUDES指令中,其中至少有一个 .h 文件,但由于某种原因它仍然找不到tfile.h(在里面$(LOCAL_PATH)/taglibroot/taglib/toolkit)。我错过了什么?

0 投票
0 回答
93 浏览

android - Android NDK:指令对静态库的包含不可见

我只是想为 NDK 项目使用静态库。该库适用于 automake 等构建系统,但在 Android.mk 中,源文件存在问题。由于某种原因,指令不适用于不同的头文件,我收到以下错误:

似乎 file1.hpp 中定义的指令在包含 file1.hpp 的 file2.hpp 中不可见(正如我所说,其他构建系统(如 automake)不会出现此问题。

我在这里做错了什么?

安卓.mk:

src 包括所有头文件和源文件。任何提示将不胜感激。

0 投票
0 回答
210 浏览

android - StagefrightRecorder.so 的 Android.mk 文件在哪里

我正在使用 Android 4.4.2 源代码。

编译源代码后,我注意到StagefrightRecorder.soout 文件夹中有文件。我现在正在学习StagefrightRecorder.cpp,我打算重写它。所以我想知道 . 的Android.mk文件在哪里StagefrightRecorder.so。(我不熟悉源代码,所以我认为这Android.mk可能会有所帮助。)

StagefrightRecorder.cpp和都StagefrightRecorder.h在文件夹中frameworks/av/media/libmediaplayerservice。该文件夹中有一个Android.mk 文件,但该文件用于创建libmediaplayerservice模块,它调用LOCAL_SHARED_LIBRARIES StagefrightRecorder.

有人知道吗?谢谢!

0 投票
1 回答
1888 浏览

android - 当原生共享库依赖静态库时,如何将基于 Android.mk 文件的 Android NDK 项目迁移到 Gradle?

我有一个 Android NDK 项目,它使用 Android.mk 文件构建和运行良好,它包含我作为共享库构建的本机代码(一个 C 文件),此代码依赖于第三方静态库(.a 文件) .

现在我正在尝试将其迁移到 Gradle。我目前的配置如下:

下的静态库Android.mk /static_libs folder

主模块Android.mk文件:(在通常的jni/文件夹下)

当我ndk-build在主模块上运行时,唯一的输出是一个文件libopus_jni.so,它是唯一用于构建最终 APK 的文件。

现在在 Gradle 上,我现在唯一想做的就是使用相同的预构建共享库和相同的代码创建一个 APK,所以我将生成的库复制到jniLibs/文件夹中(我知道从 0.9 开始,Gradle 已经支持 JNI 库,如果文件放在这里)。项目构建,最终的 APK 确实包含.so文件夹内的libs/文件。 (我通过解压生成的APK进行了验证)

问题是,当我尝试使用任何本机方法时,都会出现以下错误:

如您所见,.so文件已找到并加载,但对本机函数的调用失败。Java 代码与原始项目中的代码相同,运行良好,基本上对库的调用如下所示:

似乎当需要静态库时,Gradle 需要将其他内容复制到jniLibs文件夹中,我尝试将 .a 文件也复制到该文件jniLibs/夹​​中,但没有任何成功。

对于在 Gradle 上正确构建具有静态库依赖项的预构建共享库还有其他要求吗?

0 投票
1 回答
496 浏览

java - 如何在我的 Android.mk 中使用 Android tesseract Android.mk 文件?

我正在研究android tesseract api在我的项目中使用。

https://github.com/rmtheis/tess-two

我将com_googlecode_leptonica_androidcom_googlecode_tesseract_android目录从tess -two复制到我的项目jni 目录,我的jni 文件夹结构

我不确定如何在jni 目录中的Android.mk 文件包含 com_googlecode_leptonica_androidcom_googlecode_tesseract_android中的Android.mk文件。

这是行不通的。

如何得到这份工作?

0 投票
1 回答
464 浏览

c++ - Android ndk 编译 SoundTouch 库报错

我有一个 Android NDK 项目在 SoundTouch 库的 NDK_Build 期间失败。

构建日志

我知道它有一个未定义的参考错误,但我不明白。RateTransposer.cpp 包括 InterpolateLinear.h

这是失败的代码

这是我的 Android.mk 文件

谢谢你的帮助,乔

0 投票
1 回答
254 浏览

android - Android.mk 输出函数信息只打印单行

我在 Android.mk 中使用了一些 shell 命令,比如

我想看看在构建过程中发出的命令。但是,当我使用任何一个时,输出总是单行

或者

结果就像

代替

有谁知道如何解决这一问题?

0 投票
2 回答
2634 浏览

android - How do I make ndk-build create executable named like a library?

I want my native executable to be auto-populated to /data/data/.../lib/. For this it is to be named like lib*.so. But if I try to set this name, Android NDK complains: