Articles of android ndk

如何在android上运行USSD命令?

有谁知道如何运行USSD命令检查电话的信用余额(数字是* 123#)并获得结果(贷方余额)进一步处理? thankss

Android Studio,Gradle,OpenCV和NDK

我试图在Android Studio上测试OpenCV Android,我对如何包含NDK感到困惑。 我想要做的是运行OpenCV附带的样本。 在提供的6个样本中,我成功地运行了4个样本。 面部检测和原生活动除外。 我怀疑原因是我没有正确设置我的NDK。 谷歌搜索我发现了一堆讨论,但并不真正了解它们。 这是我第一次尝试使用NDK和OpenCV,我的Gradle理解是有限的。 我在.bash_profile中设置了一个环境variables export ANDROID_NDK = pathTo / android-ndk-r9 我不明白如何把它带到工作室。 我看到jniFolder的引用,但不明白这些是什么,我现在应该关心。 Stackoverflow.com/questions/17767557 tasks.withType(com.android.build.gradle.tasks.PackageApplication) { pkgTask -> pkgTask.jniFolders = new HashSet() pkgTask.jniFolders.add(new File(projectDir, ‘native-libs’)) } 在build.gradle文件的末尾,我应该怎么做这个粘贴? 总之,我的问题是。 如何让Android Studio读取NDKvariables? 什么是jniFolders? 仅仅粘贴在build.gradle文件的末尾就足够了吗? 谷歌集团关于Gradle和NDK的讨论 对于遇到这种情况的人来说,除了Xaviers anwser之外我是如何解决它的。 首先,我在docs目录中阅读NDK附带的OVERVIEW.html。 然后我将.mk和.cpp文件编译成.so文件。 我在示例jni目录中进行了此操作。这在libs文件夹中创建了.so文件,我将其复制到Xavier给出的目标位置。

如何在cocos2d-x中使用android ndk检查崩溃日志

我使用cocos2d-x来开发游戏,在iOs完美运行后,我转向Android平台。 但它在android中运行,我只收到一些错误日志: 08-26 10:49:23.823: A/libc(2884): Fatal signal 11 (SIGSEGV) at 0x0000000c (code=1), thread 2917 (Thread-285) 有了这个,我无法修复崩溃日志。 所以我的问题是如何检查崩溃日志的堆栈? 在SO中,有一些类似的问题,但对我没有任何有用的答案。 使用ndk-stack读取崩溃日志 无法从android ndk中的堆栈跟踪中获取行号 如何获得有用的崩溃日志信息Android Cocos2dx C ++

Android API 16 NDK cwctype和字符串构建错误

Android NDK新手问题。 我正在尝试使用Android NDK编译库。 我正在为API16构建并在构建中获得以下错误: 在文件中包含/ Volumes / MacAirExt / Android / android-ndk-r10e / sources / cxx-stl / llvm-libc ++ / libcxx / include / cwchar:107:/ Volumes / MacAirExt / Android / android-ndk-r10e / sources / cxx-stl / llvm-libc ++ / libcxx / include / cwctype:88:9: 错误:全局命名空间中没有名为’iswblank’的成员; 你的意思是’isblank’吗? using :: iswblank; 和 在文件中包含/ Volumes / […]

Android中没有哪些最重要的POSIXfunction?

我即将把一个大型的C ++项目(某种types的Library Project,它完全没有GUI)移植到Android上。 它实际上是一个Visual C ++项目,但它将作为中间步骤移植到Linux。 我知道Android不是一个“完整的”Linux并且不声称提供所有POSIXfunction,但我也知道Android上有很多“POSIXishfunction”使用NDK。 现在我的实际问题是: 与完整的POSIX集相比,Android上没有哪些最大/最重要的function? 因此,在从Visual C ++移植到Linux GCC时,我可以牢记这一点。 我试图在谷歌上find一些东西,但没有发现任何真正有用的东西,只是在这里和那些提到Android上有一些POSIXfunction的东西……

是否可以在Android上访问扬声器信号?

将音频发送到扬声器以便在Android上播放很容易,但是是否可以获得实际最终数字信号的副本? 假设我有两个运行“MyApp”和“SomeOtherApp”的应用程序。 我的应用程序向扬声器发送音频,但“SomeOtherApp”也是如此。 “SomeOtherApp”不是我的应用程序 – 它是第三方应用程序。 是否有可能获得操作系统播放到扬声器的混合音频信号的副本? 也就是说,音频信号是来自我的app的扬声器信号和来自“SomeOtherApp”的扬声器信号的混合。 总结一下:我正在寻找一种方法来连接低级音频路径(HAL音频流输出 – 混音后!)所以我可以获得“最终”扬声器信号的副本(实时)。 最理想的情况是,我还想加入低级麦克风路径,但现在这不是一个问题。

在Activity中调用本地方法的第三方库两次会导致Android应用程序关闭

我在我的应用程序中集成了两个本机库(.so)。 库编译得很好,我也可以在我的应用程序中加载它们。 我第一次调用库的本机方法时工作正常,但如果我在Activity中再次调用相同的方法,应用程序将关闭。 我面临的问题与此处提到的完全相同: http://grokbase.com/t/gg/android-ndk/1226m68ydm/app-exit-on-second-native-call 有效的解决方案是在另一个Activity中调用本机方法,并通过System.exit(0)强制关闭它。 在文章之后,我尝试在成功操作后将指针设置为NULL,但这对我没有帮助。 一旦由System.loadLibrary()加载库,也无法卸载库。 我想在不创建新Activity的情况下多次调用本机方法。 任何想法如何解决这个问题? (我最终find了一个解决方案……就在这里) 好的,我终于find了解决这个问题的方法。 解决方案实际上非常简单。 构建另一个独立的本机库(实用程序库)来加载和卸载其他库。 我们需要做的是在实用程序的本机方法中使用dlopen()和dlclose()。 我们可以通过System.loadLibrary()像以前一样加载实用程序库。 因此,在实用程序库的本机方法中,我们需要做的是: 使用#include //这是调用dlopen()和dlclose()函数所必需的。 提供处理程序和函数原型: void *handle; typedef int (*func)(int); // define function prototype func myFunctionName; // some name for the function 通过dlopen()打开库: handle = dlopen(“/data/data/my.package.com/lib/somelibrary.so”, RTLD_LAZY); 获取并调用库的function: myFunctionName = (func)dlsym(handle, “actualFunctionNameInLibrary”); myFunctionName(1); // passing parameters if needed in the […]

如何构建共享库并在其他ndk程序中调用它

我想构建一个共享库。 要构建它,我需要调用另一个共享库。 这是我做的: 1.创建一个名为“BuildLib”的Android项目,并在项目目录下添加一个新文件夹“jni”。 jni文件夹的内容: JNI – > Android.mk – > Application.mk – > add.cpp – > add.h add.cpp只做两个数字加法: add.h: int add(int a,int b); add.cpp: #include “add.h” int add(int a,int b){ return a+b;} Android.mk: LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES := add.cpp LOCAL_MODULE := add include $(BUILD_SHARED_LIBRARY) 构建项目后,我在目录$(BUILDLIB)/libs/armeabi/下获得了libadd.so。 创建另一个名为“CallLib”的Android项目。 将libadd.so和libadd.so复制到jni文件夹,创建Android.mk , Application.mk和call_add.cpp 。 Android.mk: […]

Android(ART)崩溃,错误JNI DETECTED ERROR IN APPLICATION:jarray是无效的堆栈间接引用表或无效的引用

我正在编写一个处理原生C(NDK r10d)图片的Android应用程序。 该代码运行良好,直到最近的ART介绍对JNI更严格。 所以代码与Dalvik一起工作正常(例如在Lolipop之前的设备上),但ii在最新的手机上创建了一个SIGENV。 我现在得到错误: 04-26 16:18:34.169: E/art(21443): 0xb4a2dd00 SpaceTypeMallocSpace begin=0x12c00000,end=0x12e01000,limit=0x32c00000,size=2MB,capacity=192MB,non_growth_limit_capacity=512MB,name=”main rosalloc space”] 04-26 16:18:34.170: E/art(21443): 0xb4ae5640 allocspace main rosalloc space live-bitmap 3[begin=0x12c00000,end=0x32c00000] 04-26 16:18:34.170: E/art(21443): 0xb4ae5660 allocspace main rosalloc space mark-bitmap 3[begin=0x12c00000,end=0x32c00000] 04-26 16:18:34.170: E/art(21443): 0xb4874120 SpaceTypeImageSpace begin=0x6f5ab000,end=0x6ff21e58,size=9MB,name=”/data/dalvik-cache/arm/system@framework@boot.art”] 04-26 16:18:34.170: E/art(21443): 0xb4875220 imagespace /data/dalvik-cache/arm/system@framework@boot.art live-bitmap 0[begin=0x6f5ab000,end=0x6ff21f00] 04-26 16:18:34.170: E/art(21443): 0xb4875220 imagespace /data/dalvik-cache/arm/system@framework@boot.art live-bitmap 0[begin=0x6f5ab000,end=0x6ff21f00] […]

android ndk开发中gnustl和stlport有什么区别?

我想知道他们的表现/稳定性是否彼此不同,他们的许可证简短解释。 欢迎真实世界的经历。