问题标签 [ndk-build]
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.
android - 使用 ndk-build 构建的 android studio 库在运行时未更新
我在我的项目中使用了 android studio,因为它现在支持 NDK,但我仍然使用 makefile,因为使用 gradle 仍然无法完成一些事情。
我在终端中使用 ndk-build 编译我的源 c/cpp 文件,但是当我随后在 Android Studio 中点击运行时,更改不会打包到 APK 中,直到我执行“构建”->“重建项目”(它使用旧的.so 文件)。
编译后的 .so 文件被放入 jniLibs/${arch} 文件夹。
有没有办法强制 gradle 重新打包我编译的 so 文件或强制“重建项目”。
提前致谢。
android-ndk - 使 ndk-build 仅删除触发构建的那些 libs 文件夹的方法
我们有两个单独的Application.mk
文件,一个有APP_ABI := armeabi armeabi-v7a
,另一个有APP_ABI := x86
. 这样做的原因是我们并不总是想为 X86 平台构建,而是只在满足某些条件时。因此,arm 构建由 shell 脚本无条件触发ndk-build
,如果满足条件,该脚本会再次触发 X86。我面临的问题是每次触发 ndk-build 时,它都会执行以下操作:
rm -f ./libs/arm64-v8a/lib*.so ./libs/armeabi/lib*.so ./libs/armeabi-v7a/lib*.so ./libs/armeabi-v7a-hard/lib*.so ./libs/mips/lib*.so ./libs/mips64/lib*.so ./libs/x86/lib*.so ./libs/x86_64/lib*.so
如果现在触发 X86 构建并且构建完成,我会看到armeabi
并armeabi-v7a
删除 libs 文件夹。ndk-build 不应该只删除我们当前通过的那些 libs 文件夹APP_ABI
吗?如果没有,有没有办法解决这个问题?
我认为build-all.mk
在 NDK 发行版clean: clean-intermediates clean-installed-binaries
中可能会清理所有库。
android-ndk - 错误:使用 openssl 库为应用程序提供 NDK 构建时未定义的引用
我遵循OpenSSL wiki 中的FIPS 库和 Android来构建 FIPS 对象模块。在libcrypto.a
为 ARM 和 x86 架构创建后,我将其包含libcrypto.a
在项目的 jni/include 文件夹中,然后执行 NDK 构建。
我每次都收到以下错误。无法解决问题。谁能告诉我哪里出错了。
这是我的 NDK_application/jni 文件夹中的 Android.mk
android-studio - gradle 实验库链接顺序
我正在尝试使用 android gradle 实验插件 0.7.0-alpha5 构建一个应用程序。
我有一个依赖于本机库“nativeLibrary”的应用程序“mainProject”,它本身依赖于其他几个库(预编译与否)
当我构建我的 nativeLibrary 项目时,一切都可以很好地编译和链接。图书馆按照我在
堵塞。
当我尝试构建我的 mainProject 时,该项目无法链接,因为将库传递给 g++ 编译器的顺序是错误的(以随机顺序),这里是主项目的 options.txt 的摘录:
为了让它链接,我必须手动添加标签
是否有使用 gradle 实验插件的自动方式来指定库链接的顺序?或者我是否必须在尝试链接之前创建一个任务来编辑 options.txt 文件?
谢谢!!
编辑:
我在 gradle 论坛上找到了一些有用的东西,但它似乎不适用于 gradle-experimental:
c++ - 'va_start' 用于具有固定 args 错误的函数
我的 nullPointcheck 函数:
但我收到如下 ndk 构建错误:
当我将 va_start 中的第二个参数更改为第一个参数时,如下所示:
ndk-build 导出错误如下:
vs2013没有错误,但是代码可以通过ndk-build阶段
android - Incorporate open source JniLibs into own android project
I have source code from a demo app that is involves some native coding. I'd like to integrate some part of that code into my own app.
This is how the code is structured:
Apparantly there are some parts in the native code which are specific towards the the app's package name, like in caffe_jni.cpp
:
How can I refactor those names such that it can be called from my app com.myUsername
?
Or is there another way to include code from another app in android studio?
android - Android Studio NDK:使用 ndk-build 编译并使用 Gradle Experimental 获得本机支持
为了在 Android Studio 编辑器中获得索引,我应该在 build.gradle 中添加以下代码:
但是 gradle 忽略了我的 Android.mk,如果我从 build.gradle 中删除这段代码,那么我将无法在编辑器中获得正确的索引,因为所有头文件都在这两个文件夹中。有谁知道如何让我的 Android.mk 编译 gradle 并且仍然获得本机编辑和调试?
我正在使用:Android Studio 2.1 stable gradle-experimental:0.7.0 my build.grade:
android-studio - 使用 Build:Gradle:2.1.0 在 Android Studio 中包含 .so
我知道有很多类似的问题,但我就是不明白。
我已经设法将 ndk-build 集成到 build.gradle 中,但似乎我不能在我的 .apk 中包含 .so。这是我的 build.grade:
这导致以下目录结构:
p>在我的应用程序运行时,我得到一个java.lang.UnsatisfiedLinkError:
调用本机函数时...
我发现了很多东西,比如:
但我不明白这一点,我觉得没有必要为本地代码创建 .jar 档案。还是我完全错过了什么?提前致谢!
android-ndk - ndk-build of static lib - 为什么要构建其他文件?
我有一个项目结构如下。我想要做的就是用 SQLite 源构建一个静态库,但是由于某种原因,当我运行 ndk-build 时,它也会构建其他源——就好像它在其他位置包含 Android.mk 文件一样。
TT 是指向 /work/TT 的符号链接,其中包含许多跨平台源文件,包括 SQLite、SDL2 和其他源。
这是 jni/SQLite/Android.mk
为什么要构建其他文件?仅构建 SQLite 我需要做什么?
在命令提示符下,我位于以下文件夹中:jni/SQLite
我运行 ndk-build(与上面的 Android.mk 内容相同的文件夹)
我希望看到 sqlite3.c 是唯一编译的文件。但是不,我看到所有 SDL2 项目文件都在构建中。
编译完所有文件后,如果我再次运行 ndk-build,我会看到:
这清楚地显示了正在构建的模块 SDL2 和 main.. 但是为什么呢?
也许我应该使用:
..构建我唯一想要的 Android.mk 而不是自动搜索/构建我的 jni 文件夹?
当我这样做时,我收到以下错误,但至少看起来好像它正在尝试运行一个特定的 Android.mk:
我的 Application.mk 如下,但这在我运行 ndk-build 的 SQLite 文件夹中不存在,这是 jni/Application.mk:
更新:我试过:
..并且调试输出显示 SDL2/Android.mk 和其他 .mk 文件仍在被调用。如何停止这种递归行为,使其仅在当前文件夹中构建 Android.mk?
这是我看到的调试输出的片段: