Articles of Android的NDK

在Android Studio中调试本机代码

Google I / O 2015承诺在Android Studio中调试本机代码。 为此,您需要通过SDK管理器安装ndk-bundle并将Android Studio更新到最新版本(Canary分支)。 接下来要做什么? 怎么设置? 这是源的链接。 资源

Android NDK发布版本

我试图在发布模式下构建我的android项目。 为了在发布模式下构建我的项目,是否需要设置任何优化标志?

Android NDK溢出dalvik JNI本地参考表

我有以下问题,从c ++我发送巨大的字符串[]到java。 巨大的=最多20行; 我正在做以下事情 jint jtype = 2; jstring emptyString = env->NewStringUTF(“”); jobjectArray data = (jobjectArray)env->NewObjectArray(7, env->FindClass(“java/lang/String”), emptyString); env->SetObjectArrayElement( data,0,env->NewStringUTF(item->get_id().c_str()); env->SetObjectArrayElement( data,1,env->NewStringUTF(item->get_number().c_str()); env->SetObjectArrayElement( data,2,env->NewStringUTF(item->get_fullname().c_str()); env->SetObjectArrayElement( data,3,env->NewStringUTF(item->get_mf().c_str()); env->SetObjectArrayElement( data,4,env->NewStringUTF(item->get_dob().c_str()); env->CallVoidMethod(dao, jsaveItem, data, jtype); int i; for (i = 0; i GetObjectArrayElement(data, i); env->DeleteLocalRef(string); } env->DeleteLocalRef(emptyString); env->DeleteLocalRef(data); env->DeleteLocalRef(dao); 这是在一个循环中发生的所以我正在为我想要保存在数据库中的每个对象执行它,所以你可以想象,它发生了很多次。 所以我很考虑VM并删除我创建的每个字符串的本地引用,但我仍然得到: ReferenceTable overflow (max=512) Last 10 entries in […]

在尝试为Android示例构建OpenCV时运行构建器“CDT Builder”的错误

大家好我想在android中学习openCV我已经按照这里给出的指示了 但是当我想要编译时,我只会得到 01:50:14 **自动构建配置默认为项目org.opencv.samples.fd.FdActivity ** “C:\ Android \ android-ndk-r8 \ ndk-build.cmd”安装:libdetection_based_tracker.so =>库/ armeabi-V7A / libdetection_based_tracker.so 01:50:14建成(耗时184ms) 在控制台中,我也得到一个错误 构建期间发生错误。 在项目’org.opencv.samples.fd.FdActivity’上运行构建器’CDT Builder’的错误。 内部错误构建项目org.opencv.samples.fd.FdActivity配置缺省java.lang.NullPointerException内部错误构建项目org.opencv.samples.fd.FdActivity配置缺省java.lang.NullPointerException 以前有人遇到过这个问题吗? 请帮我解决这个问题 谢谢

如何从已编译的二进制文件中删除字符串(.so)

如何从/混淆编译的二进制文件中删除字符串? 目标是避免让人们阅读里面的函数/方法的名称。 它是一个动态库(.so),使用NDK工具(包括GCC)从Android的C ++代码编译 我用-O3编译并且已经使用arm-eabi-strip -g mylib.so来删除调试符号,但是当我执行strings mylib.so所有函数/方法的名称仍然可读。

Android NDK写文件

除了SD卡之外,还有其他方法可以在其他地方写入文件吗? 我在文件系统上尝试了很多不同的路径,但是fopen总是返回NULL,除了我在/ sdcard /中写入/读取的任何文件… 还有其他东西相当于: 那允许你在文件系统上写一些东西?

在Ubuntu终端中找不到ndk-build命令

我已经使用javah成功生成了.h文件,现在我想构建我的android-ndk hello world项目。 但它说找不到命令nespl @ nespl-pc:〜$ ndk-build ndk-build:command not found 这是我的道路 nespl@nespl-pc:~$ echo $PATH /home/nespl/android-ndk-r8/ndk-build:/home/nespl/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/nespl/adt-bundle-linux-x86/sdk/tools:/home/nespl/adt-bundle-linux-x86/sdk/platform-tools:/home/nespl/gsutil

未findAndroid NDK Native方法错误

我正在尝试使用本机代码构建android应用程序,所以我想测试ndk是否成功运行。当我尝试运行我的第一个hello world项目时,log cat说, 01-21 23:30:06.780: E/AndroidRuntime(939): FATAL EXCEPTION: main 01-21 23:30:06.780: E/AndroidRuntime(939): java.lang.UnsatisfiedLinkError: Native method not found: com.example.ndktesting.MainActivity.invokeNativeFunction:()Ljava/lang/String; 我检查了一些stackoverflow的答案,但找不到我的答案。这是我的java代码,我正在使用android ndk r8d版本。 //ndktest.c #include #include extern “C” { JNIEXPORT jstring JNICALL Java_com_example_ndktesting_ndktest_MainActivity_invokeNativeFunction(JNIEnv* env, jobject thiz) }; JNIEXPORT jstring JNICALL Java_com_example_ndktesting_ndktest_MainActivity_invokeNativeFunction(JNIEnv* env, jobject thiz) { return (*env)->NewStringUTF(env, “Hello from native code!”); } 这是我的MainActivity java代码 package com.example.ndktesting; public […]

NDK中的内存分配多少钱?

NDK下载页面指出,“NDK的典型优秀候选者是独立的,CPU密集型操作,不会分配太多内存,例如信号处理,物理模拟等等。” 我来自C背景,并很高兴尝试使用NDK来操作我的大部分OpenGL ES函数和任何与物理,顶点animation等相关的本机函数……我发现我依赖于它咬一下原生代码,想知道我是否犯了一些错误。 我在这一点上测试没有遇到任何麻烦,但我很好奇我将来是否会遇到问题。 例如,我定义了游戏结构(有点像在San-Angeles示例中看到的)。 我正在动态加载对象的顶点信息(正好是活动游戏区域需要的东西)所以对顶点,法线,纹理坐标,索引和纹理图形数据进行了相当多的内存分配…只是为了命名要点。 我非常小心释放游戏区域之间的分配。 我是否会更安全地设置arrays大小的上限或者我现在应该勇敢地向前冲锋?

调试Android NDK本机应用程序

我正在尝试调试并逐步执行段错误的Android应用程序。 我试过ndk-gdb ,但运气不好。 我还提到了Android NDK调试而无法调试我的应用程序。 当我尝试ndk-gdb –start ,我得到: $ ndk-gdb –start –verbose Android NDK installation path: /opt/android-ndk-r7 Using default adb command: /opt/android-sdk-linux/platform-tools/adb ADB version found: Android Debug Bridge version 1.0.29 Using final ADB command: ‘/opt/android-sdk-linux/platform-tools/adb’ Using auto-detected project path: . Found package name: com.example.native_plasma ABIs targetted by application: armeabi armeabi-v7a Device API Level: 10 Device […]