标签: ndk-build

NDK r10 b 32位或64位或同时使用两者编译以及如何实现

当我使用R10B 64位生成器编译项目时,它编译良好,没有任何问题

我能够在Lollipop中成功运行该项目,并且应用程序按预期运行

但是,当我在运行时在JellyBean中运行项目时,出现以下错误

无法加载“ /data/data/de.blinkt.openvpn/cache/pievpn.armeabi-v7a”所需的库“ libopenvpn.so”;由soinfo_relocate(linker.cpp:987)引起:无法找到由“ libopenvpn.so”引用的符号“随机” ...无法链接执行

所以当我研究时,我发现其归因于使用64位构建器,而解决方案是使用32位构建器。

当我使用32个生成器时,在编译过程中会出现以下错误。

Android NDK:NDK应用程序“本地”针对未知的ABI:arm64-v8a x86_64 Android NDK:请在./jni/Application.mk
/ Users / ShajilShocker / Documents / Android / NDK / android-ndk-中修复APP_ABI定义r10b / build / core / setup-app.mk:112:*** Android NDK:正在中止。停止。

因此,如果我省略了arm64-v8a和x86_64,那么它可能会编译,但看起来无法在64位设备上运行。

是否有可能我可以先使用32位(注释64个体系结构)编译同一个项目,然后使用64位(不注释64种体系结构)编译并同时在两者上运行。

任何帮助都非常感谢!

谢谢 !

android openvpn android-ndk android-studio ndk-build

3
推荐指数
1
解决办法
9039
查看次数

APP_ABI被忽略了

我使用了android-ndk-r13b,我直接从Android网站下载(而不是从SDK管理器),并在Android Studio中设置了Project Structure的路径.

它能够检测到我的Android.mk和Application.mk(都在我的jni文件夹中),我从控制台日志中看到它.在我的Application.mk中,我定义了这个:APP_ABI:= armeabi-v7a

但是从控制台日志中,我可以看到每次执行ndk-build时,总会有APP_ABI:= mips64作为参数.所以,始终存在错误.(我想这是因为这个错误的参数,我得到错误"链接器命令失败...",因为我编译了.a和.so for armeabi-v7a而不是mips64)

所以,我想知道是什么让我的Application.mk定义APP_ABI被忽略了?(无论如何,我已经将C++链接到了我的gradle)

我尝试在ndkBuild {}中使用:参数"APP_ABI:= armeabi-v7a"但它说,没有像arguments()这样的方法

我错过了什么 ?

android android-ndk android-studio ndk-build

3
推荐指数
1
解决办法
889
查看次数

在 mac (NDK) 中构建电报源时出错

我正在尝试在 OS X El Capitan 中构建电报源,但我看到了这个错误。

我尝试安装 NDK、CMake、LLDB。

我在 Android studio 2、android studio 3 中尝试过。

我尝试将这些添加到~/.bash_profile

export ANDROID_SDK=/Users/aaa/Library/Android/sdk
export ANDROID_NDK=/Users/aaa/Library/Android/sdk/ndk-bundle
export PATH="$PATH:$ANDROID_SDK/tools:$ANDROID_SDK/platform-tools:$ANDROID_NDK"
Run Code Online (Sandbox Code Playgroud)

但是,我遇到了与其他 NDK 项目相同的错误,但仍然有错误。

我试图在 pastebin.com 上传完整的日志,...但我不能总大小约为 7mb。我上传到我的服务器,链接是:https : //static.sajadabasi.ir/ask.txt

错误(它太长了,所以我发布了一些包含error我希望它有用的部分。):

    External Native Build Issues
    Build command failed.
    Error while executing process /Users/aaa/Library/Android/sdk/ndk-bundle/ndk-build with arguments {NDK_PROJECT_PATH=null APP_BUILD_SCRIPT=/Users/aaa/Downloads/Telegram-master/TMessagesProj/jni/Android.mk NDK_APPLICATION_MK=/Users/aaa/Downloads/Telegram-master/TMessagesProj/jni/Application.mk APP_ABI=x86 NDK_ALL_ABIS=x86 NDK_DEBUG=0 APP_PLATFORM=android-16 NDK_OUT=/Users/aaa/Downloads/Telegram-master/TMessagesProj/build/intermediates/ndkBuild/fat/foss/obj NDK_LIBS_OUT=/Users/aaa/Downloads/Telegram-master/TMessagesProj/build/intermediates/ndkBuild/fat/foss/lib NDK_APPLICATION_MK:=jni/Application.mk APP_PLATFORM:=android-14 APP_SHORT_COMMANDS=false LOCAL_SHORT_COMMANDS=false -B -n}
    rm -f /Users/aaa/Downloads/Telegram-master/TMessagesProj/build/intermediates/ndkBuild/fat/foss/lib/x86/*
    rm -f /Users/aaa/Downloads/Telegram-master/TMessagesProj/build/intermediates/ndkBuild/fat/foss/lib/x86/gdbserver
    rm -f /Users/aaa/Downloads/Telegram-master/TMessagesProj/build/intermediates/ndkBuild/fat/foss/lib/x86/gdb.setup
    mkdir -p /Users/aaa/Downloads/Telegram-master/TMessagesProj/build/intermediates/ndkBuild/fat/foss/obj/local/x86/objs/tmessages.27/./opus/src
     Build command …
Run Code Online (Sandbox Code Playgroud)

macos android android-ndk ndk-build telegram

3
推荐指数
1
解决办法
682
查看次数

如何解决 Android NDK 构建命令失败的问题?

我正在Android Studio中使用 Android NDK 开发一个简单的 NDK 示例示例。运行我的应用程序工作室时,它显示以下错误。

\n
Build command failed.\nError while executing process D:\\Sdk\\cmake\\3.6.4111459\\bin\\cmake.exe with\narguments {--build D:\\Android Studio\\Workspace\\NDKSample\\app\\.externalNativeBuild\\cmake\\debug\\arm64-v8a --target native-lib}\n[1/2] Building CXX object CMakeFiles/native-lib.dir/src/main/cpp/native-lib.cpp.oFAILED: D:\\Sdk\\ndk-bundle\\toolchains\\llvm\\prebuilt\\windows-x86_64\\bin\\clang++.exe  --target=aarch64-none-linux-android --gcc-toolchain=D:/Sdk/ndk-bundle/toolchains/aarch64-linux-android-4.9/prebuilt/windows-x86_64 --sysroot=D:/Sdk/ndk-bundle/sysroot  -Dnative_lib_EXPORTS -isystem D:/Sdk/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/include -isystem D:/Sdk/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/libs/arm64-v8a/include -isystem D:/Sdk/ndk-bundle/sources/cxx-stl/gnu-libstdc++/4.9/include/backward -isystem D:/Sdk/ndk-bundle/sysroot/usr/include/aarch64-linux-android -D__ANDROID_API__=21 -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -Wa,--noexecstack -Wformat -Werror=format-security  -frtti -fexceptions -O0 -fno-limit-debug-info  -fPIC -MD -MT CMakeFiles/native-lib.dir/src/main/cpp/native-lib.cpp.o -MF CMakeFiles\\native-lib.dir\\src\\main\\cpp\\native-lib.cpp.o.d -o CMakeFiles/native-lib.dir/src/main/cpp/native-lib.cpp.o -c "D:\\Android Studio\\Workspace\\NDKSample\\app\\src\\main\\cpp\\native-lib.cpp"\nerror: error reading \'D:\\Android Studio\\Workspace\\NDKSample\\app\\src\\main\\cpp\\native-lib.cpp\'\n1 error generated.ninja: build stopped: subcommand failed.\n
Run Code Online (Sandbox Code Playgroud)\n

我搜索了很多,但找不到正确的答案。这就是我在这里问的原因。我还卸载了所有组件并在我的工作室实例中重新安装,但错误仍然存​​在。

\n

另一件事:如果我将文件扩展名从 .CPP 更改为 …

android cmake android-ndk android-studio ndk-build

3
推荐指数
1
解决办法
5128
查看次数

Android Studio 错误:原因:为 cmake /path/to/project/app/tools/CMakeLists.txt 执行外部本机构建

我在 android studio 运行应用程序后从 Github(链接)下载了 WireGuard,但出现此错误:

\n\n
ERROR: Cause: executing external native build for cmake  /path/to/project/app/tools/CMakeLists.txt\n
Run Code Online (Sandbox Code Playgroud)\n\n

android_gradle_generate_cmake_ninja_json_x86.stderr.txt显示这个:

\n\n
    CMake Error at CMakeLists.txt:11 (add_executable):\n    Cannot find source file:\n\n    wireguard-tools/src/wg-quick/android.c\n\n    Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp\n    .hxx .in .txx\n\n\n    CMake Error: CMake can not determine linker language for target: libwg-quick.so\n
Run Code Online (Sandbox Code Playgroud)\n\n

wireguard-tools 文件夹为空。也许它的内容必须由 cmake 从 CMakeLists.txt 构建。\n我不明白 cmake。\nCMakeLists.txt 内容是:

\n\n
# SPDX-License-Identifier: Apache-2.0\n#\n# Copyright \xc2\xa9 2018-2019 WireGuard LLC. …
Run Code Online (Sandbox Code Playgroud)

android cmake android-ndk android-studio ndk-build

3
推荐指数
1
解决办法
3128
查看次数

在Android.mk中使用$(warning)在Eclipse中显示错误错误。我怎样才能解决这个问题?

我正在使用Google提供的Eclipse ADT环境进行Android项目。该项目的Android.mk文件有些复杂,很容易配置错误。为了确保正确的构建流程并将警告和诊断消息输出到控制台输出,我依靠该$warning()命令。

这些$warning()命令运行正常,预期的输出显示在Build控制台中。但是,Eclipse IDE将我调用$warning()命令的行标记为有错误。这些错误将逐步传播到Project Explorer的“导航”窗口,其中Android.mk和和jni文件夹也显示为有错误。

这是触发错误的命令的示例:

$(warning value of BUILD_CONFIG IS '$(BUILD_CONFIG)')
Run Code Online (Sandbox Code Playgroud)

尽管一切都按预期进行,但是我有点书呆子,想从IDE中删除这些错误。这可能吗?

android android-ndk eclipse-adt ndk-build android.mk

2
推荐指数
1
解决办法
2798
查看次数

本机组件,armeabi-v7a和拇指?

APP_ABI包含时armeabi-v7a,Android的构建系统将包含-mthumb为编译选项.

ARMv7-a是一个32位处理器系列.为什么Android使用-mthumb而不是-marm

使用NDK编译的本机组件必须使用-mthumb吗?或者可以使用-marm吗?

如果-marm可以,是否需要存在任何互通选项?

android android-ndk ndk-build

2
推荐指数
1
解决办法
1543
查看次数

Android.mk没有规则来制作目标'*.c','*.o'需要.停止

我有一些问题.

我使用ndk-build但我不能创建库*.so.

---------------------------------错误---------------- -----------------

nathaniel@Nathaniel-MSI /work/workspace/HealthCare $ ndk-build
 make: *** No rule to make target `jni/jni/src/filterData.c', needed by
 `obj/local/armeabi/objs/HealthCare/jni/src/filterData.o'.  Stop.
Run Code Online (Sandbox Code Playgroud)

根据我的Android.mk来源,请帮帮我

--------------------------------- Android.mk -------------- -------------------

LOCAL_PATH          := $(call my-dir)
SRCS                := $(wildcard $(LOCAL_PATH)/src/*.c)

include $(CLEAR_VARS)

LOCAL_MODULE        := HealthCare
LOCAL_SRC_FILES     := $(SRCS)

LOCAL_LDLIBS        := -llog

include $(BUILD_SHARED_LIBRARY)
Run Code Online (Sandbox Code Playgroud)

android android-ndk ndk-build android.mk

2
推荐指数
1
解决办法
7220
查看次数

如何使用自定义Android.mk与新的gradle构建系统

我知道如何使用Android.mk旧gradle 定制:

    sourceSets.main {
        jniLibs.srcDir 'src/main/jni'
        jni.srcDirs = [] //disable automatic ndk-build call
    }

    // call regular ndk-build(.cmd) script from app directory
    task ndkBuild(type: Exec) {
        commandLine '/.../android-ndk-r10e/ndk-build', '-C', file('src/main').absolutePath
    }

    tasks.withType(JavaCompile) {
        compileTask -> compileTask.dependsOn ndkBuild
    }
Run Code Online (Sandbox Code Playgroud)

它没有使用新的gradle com.android.tools.build:gradle-experimental:0.2.0::

Error:Cause: com.android.build.gradle.managed.AndroidConfig_Impl
Run Code Online (Sandbox Code Playgroud)

android-ndk android-gradle-plugin ndk-build

2
推荐指数
1
解决办法
4823
查看次数

Android:在 android studio 中进行 NDK-Build C/C++ 调试

在 Android studio(v4.1.2) 中尝试 ndk-build C 代码调试。下面是 build.gradle 设置。

  1. jni ,C/C++ 源文件 Dirs. 实际的 C 文件不在 jni 文件夹下,而是在其外部,但在 android.mk 文件中引用。

    sourceSets.main.jniLibs.srcDirs = ['D:/ccodefolder/jni/']

2)Android.mk 从 C、C++ 代码构建共享库,并链接内置共享库和静态库。

 externalNativeBuild {
           ndkBuild {
               path file('D:/ccodefolder/jni/Android.mk')
           }
       }
       ndkVersion '21.1.6352462'
Run Code Online (Sandbox Code Playgroud)
debug {
        debuggable true
        jniDebuggable true
        minifyEnabled false
        shrinkResources false
       //ndk.debugSymbolLevel = 'FULL'
    }
Run Code Online (Sandbox Code Playgroud)

4)项目结构如图所示。

在此输入图像描述

能够运行项目并生成共享库以及其他预构建的 .SO 和 apk 作品,还创建了 CPP 文件夹并能够查看我的项目的 C 代码文件。

调试问题:

LLDB 服务器启动并且调试器附加到进程,但是调试任何 C 文件都失败并出现以下错误。

当前不会命中断点。没有可执行代码与该行关联

在此输入图像描述

谢谢

android android-ndk android-studio ndk-build android-native-library

2
推荐指数
1
解决办法
2345
查看次数