当我使用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-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()这样的方法
我错过了什么 ?
我正在尝试在 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) 我正在Android Studio中使用 Android NDK 开发一个简单的 NDK 示例示例。运行我的应用程序工作室时,它显示以下错误。
\nBuild 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 studio 运行应用程序后从 Github(链接)下载了 WireGuard,但出现此错误:
\n\nERROR: 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
显示这个:
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\nwireguard-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) 我正在使用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中删除这些错误。这可能吗?
当APP_ABI
包含时armeabi-v7a
,Android的构建系统将包含-mthumb
为编译选项.
ARMv7-a是一个32位处理器系列.为什么Android使用-mthumb
而不是-marm
?
使用NDK编译的本机组件必须使用-mthumb
吗?或者可以使用-marm
吗?
如果-marm
可以,是否需要存在任何互通选项?
我有一些问题.
我使用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.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 studio(v4.1.2) 中尝试 ndk-build C 代码调试。下面是 build.gradle 设置。
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
android-ndk ×10
ndk-build ×10
android ×9
android.mk ×2
cmake ×2
eclipse-adt ×1
macos ×1
openvpn ×1
telegram ×1