我需要使用Android NDK builder r9构建我的代码.
但我没有窗户只有mac.
我能够找到它的窗户
http://dl.google.com/android/ndk/android-ndk-r9-windows-x86.zip
http://dl.google.com/android/ndk/android-ndk-r9-windows-x86_64.zip
但我找不到它的mac.
注意:我已经在stackoverflow上搜索了,谷歌没有任何帮助
任何帮助表示赞赏!
我正在尝试基于Miracl crypto lib(C/C++)构建一个Android应用程序.我已将他们的资源和我的资源添加到jni文件夹中.并编写了对函数的简单调用,该函数加载shared_library并返回字符串(withoud调用c ++函数,只返回一个字符串).但是应用程序在运行A/libc时崩溃了吗?致命信号11(SIGSEGV),代码1,故障地址0x0在tid 17711中
在Windows 7/x64 Android Studio 1.1.0 Android r10d NDK上工作
Application.mk
APP_PLATFORM := android-17
APP_ABI := armeabi-v7a
APP_STL := stlport_static
Android.mk
LOCAL_PATH := $(call my-dir)
# final lib, which will depend on others
include $(CLEAR_VARS)
LOCAL_CPPFLAGS := --std=c++11 -DMR_PAIRING_BLS
LOCAL_MODULE := CryptoLib
#find all the file recursively under jni/
LOCAL_C_INCLUDES := $(LOCAL_PATH)/miraclsources
LOCAL_CPP_EXTENSION := .cpp .c
LOCAL_SRC_FILES := miraclsources/mrcore.c \
miraclsources/mrarth0.c \
miraclsources/mrarth1.c \
miraclsources/mrarth2.c \
miraclsources/mralloc.c \
miraclsources/mrsmall.c \
miraclsources/mrio1.c \
miraclsources/mrio2.c \
miraclsources/mrgcd.c \
miraclsources/mrjack.c …
Run Code Online (Sandbox Code Playgroud) android shared-libraries android-ndk android-studio ndk-build
我一直在尝试在Windows上运行UIExplorer项目.我收到以下错误 -
...
...
make: *** [D:\react-native\ReactAndroid\build\tmp\buildReactNdkLib/local/
armeabi-v7a/objs/reactnativejni/JExecutorToken.o] Error 2
...
...
What went wrong: Execution failed for task ':ReactAndroid:buildReactNdkLib'.
> Process 'command 'C:\android-ndk-r11b\ndk-build.cmd'' finished with non-zero exit value 2
...
...
Caused by: org.gradle.process.internal.ExecException: Process 'command
'C:\android-ndk-r11b\ndk-build.cmd'' finished with non-zero exit value 2
Run Code Online (Sandbox Code Playgroud)
有没有机会克服这个问题?
我正在尝试将firebase c ++ sdk添加到我的cocos2d-x 3.14游戏中.到目前为止,我在firebase_cpp_sdk目录中创建了Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := firebase-prebuilt
LOCAL_SRC_FILES := libs/android/$(TARGET_ARCH_ABI)/c++/libapp.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := firebase-analytics
LOCAL_SRC_FILES := libs/android/$(TARGET_ARCH_ABI)/c++/libanalytics.a
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include
include $(PREBUILT_STATIC_LIBRARY)
Run Code Online (Sandbox Code Playgroud)
然后在Android.mk的项目中我添加了:
LOCAL_C_INCLUDES += /Users/piotr/Documents/pierdoly/firebase_cpp_sdk/include
LOCAL_STATIC_LIBRARIES += firebase-prebuilt firebase-analytics
$(call import-add-path, /Users/piotr/Documents/pierdoly/firebase_cpp_sdk)
Run Code Online (Sandbox Code Playgroud)
我可以同步gradle和构建项目.我也可以
#include <firebase/app.h>
Run Code Online (Sandbox Code Playgroud)
在AppDelegate.cpp(或h)中,它工作正常.即使Android工作室也能看到所有的firebase标题,我可以检查它们.
现在,在applicationDidFinishLaunching中我添加了这个:
#if (CC_TARGET_PLATFORM != CC_PLATFORM_ANDROID)
::firebase::App* app = ::firebase::App::Create(::firebase::AppOptions());
#else
::firebase::App* firebaseApp = ::firebase::App::Create(::firebase::AppOptions(), cocos2d::JniHelper::getEnv(), cocos2d::JniHelper::getActivity());
#endif
Run Code Online (Sandbox Code Playgroud)
还有来自AppActivity.java的JNICALL的替代版本(传递正确的活动,因为有人说上面的解决方案不起作用):
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
JNIEXPORT void JNICALL Java_org_cocos2dx_cpp_AppActivity_initFirebase(JNIEnv* env, jobject thiz)
{ …
Run Code Online (Sandbox Code Playgroud) 我们有一个用android ndk r10e构建的预建库.我们正在开发的项目正在使用ndk r13b进行构建.当尝试链接库时,我们的构建失败,并且包含ndk stl提供的类(如字符串)的库的所有函数都有未定义的引用错误.错误:
Foo.cpp:39: undefined reference to `namespaceFoo::Bar::fooBar(std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char> > const&)'
Run Code Online (Sandbox Code Playgroud)
我们通过使用ndk 13构建它来修复此问题与另一个库.不幸的是,对于其中一个必要的库,它是我们无法控制的.
我们将c ++ _ shared lib链接为stl.
有没有办法让这项工作?我们能以某种方式将库构建与ndk r10正确链接吗?
编辑:明确我们使用c ++ _ shared stl.这似乎是一个底层问题.
我有一个包含多个项目的大型源代码树.其中一个项目使用JNI.
当我尝试在整个源代码树上"清理"时,它会通过并删除所有目标文件和库.然后它进入我的应用程序目录以进行清理.
当它到达我的JNI项目时,它执行"ndk-build clean"失败,因为我链接的库已被删除作为清理的一部分:
ndk-build clean
Android NDK: ERROR:/Users/spartygw/xyz/src/applications/foo/jni/Android.mk:bar: LOCAL_SRC_FILES points to a missing file
Android NDK: Check that /Users/spartygw/xyz/src/applications/foo/jni/../../../../lib/libbar.a exists or that its path is correct
/Users/spartygw/android-ndk-r6b/build/core/prebuilt-library.mk:43: *** Android NDK: Aborting . Stop.
make[3]: *** [clean_android] Error 2
make[2]: *** [clean] Error 2
make[1]: *** [clean] Error 2
make: *** [clean] Error 2
Run Code Online (Sandbox Code Playgroud)
我已经尝试添加"ndk-build -k clean"和"ndk-build --ignore clean",但无论如何都要挽救.
如何让ndk-build忽略对尚未构建的库的依赖,只清理本地对象?
我有.so文件和jar,但是当我运行它时我得到错误:无法识别apk for variant arm-debug和device.我在这里是个菜鸟所以我一定做错了什么,但我似乎无法弄明白.有任何想法吗?我正在使用Android Studio 1.1.0和genymotion进行模拟.
这是我的构建文件的样子:
apply plugin: 'com.android.application'
android {
compileSdkVersion 22
buildToolsVersion "22.0.0"
defaultConfig {
applicationId "com.ctech.music.androidstreamer"
minSdkVersion 14
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
x86 {
ndk {
abiFilter "x86"
}
}
arm {
ndk {
abiFilters "armeabi-v7a", "armeabi"
}
}
mips {
ndk {
abiFilter "mips"
}
}
}
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/license.txt'
exclude 'META-INF/notice.txt' …
Run Code Online (Sandbox Code Playgroud) 这是我的build.gradle文件的一部分:
android {
//...
defaultConfig {
//...
externalNativeBuild {
ndkBuild {
targets "MyGame"
arguments "NDK_MODULE_PATH=$cocospath:$cocospath/cocos:$cocospath/external:$cocospath/cocos/prebuilt-mk:$cocospath/extensions"
arguments "-j" + Runtime.runtime.availableProcessors()
buildTypes {
debug {
abiFilters "armeabi", "armeabi-v7a", "arm64-v8a"
}
release {
abiFilters "armeabi"
}
}
}
}
}
//.........
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用三个abi过滤器,(armeabi, armeabi-v7a and arm64-v8a)
同时在调试模式下构建应用程序,并(armeabi)
在构建版本apk时仅使用一个.但它不起作用.调试版和发行版都使用了所有三个abiFilter.
我的gradle文件出了什么问题?
编辑:
事实证明,当我拥有所有三个abi过滤器并成功构建应用程序时,我想留下armeabi并且......仍然添加了所有三个.我不得不手动删除app/build目录的内容.
之前,我使用ndkBuld在Android上我构建本地代码的时候能够将参数传递到化妆定义要使用多个CPU内核。如果我想使用 4 个内核,我可以添加这样的东西
externalNativeBuild {
ndkBuild {
arguments "-j4", "APP_SHORT_COMMANDS=true"
abiFilters "armeabi-v7a"
}
}
Run Code Online (Sandbox Code Playgroud)
有人可以建议我如何用 Cmake 和 Ninja 做类似的事情吗?cmake 配置是否有一些等效参数?
externalNativeBuild {
cmake {
arguments "-DANDROID_STL=c++_static"
abiFilters getAbis()
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢。
在我的 Android 应用程序中,我想实现 libogg 和 libvorbis 库,以便我可以播放和操作 ogg 文件。
不幸的是,我还没有找到任何可以解释如何实现这一目标的教程。
也就是说,这是我发现最有趣的:https : //github.com/inetic/ogg-vorbis-for-android
但我真的不明白如何使用它来编译以下 ABI 的库:
有人可以解释我如何为 Android 编译这些库吗?
谢谢你的帮助。
ndk-build ×10
android ×9
android-ndk ×8
build.gradle ×1
c++ ×1
cmake ×1
firebase ×1
gradle ×1
ninja ×1
react-native ×1
stl ×1