所有的ndk样本只使用头文件中声明为extern的基本C函数,并在cpp文件中定义。 然后在包含jnicallback的C文件中包含头文件后,一切正常。 有没有可能使用android ndk的C + +类? 我的应用程序不会是一个本地的活动,它仍然有一个重要的Java部分,但它会调用CPU密集型计算的本地C代码(已经用C ++编写,有类和其他C ++的东西)。 这里是我的你好,像现在strcuture世界: 文件“first.h” #ifndef FIRST_H #define FIRST_H class Test {}; #endif /* FIRST_H */ 文件“second.cpp” #include <jni.h> #include "first.h" #ifdef __cplusplus extern "C" { #endif jint Java_com_example_twolibs_TwoLibs_add( JNIEnv* env, jobject this, jint x, jint y ) { Test t; return 0; } #ifdef __cplusplus } #endif 最后是Android.mk […]
我需要使用NDK和JNI来实现一些Android应用程序的function。 这里是C代码,我的担心,我写道: #include <jni.h> #include <stdio.h> jobject Java_com_example_ndktest_NDKTest_ImageRef(JNIEnv* env, jobject obj, jint width, jint height, jbyteArray myArray) { jint i; jobject object; jmethodID constructor; jobject cls; cls = (*env)->FindClass(env, "com/example/ndktest/NDKTest/Point"); //what should put as the second parameter? Is my try correct, according to what //you can find in .java file? I used this documentation: http://download.oracle.com/javase/6/docs/technotes/guides/jni/spec/functions.html#wp16027 […]
虽然有关于将jstring转换为本地string的文档( string nativeString = env->GetStringUTFChars(jStringVariable, NULL); )我找不到将jboolean转换为bool或jint为int的示例。 任何人都可以build议如何实现?
我在Android NDK中使用C ++设置日志logging。 我可以打印一条消息logcat像这样: __android_log_write(ANDROID_LOG_INFO, "tag here", "message here"); 现在让我们说我有一个整数称为testint 。 我怎样才能打印这个int的值? 这样的东西打印的地址,但我想要的价值。 我还没有find任何关于如何做到这一点的C ++ 。 谢谢你的帮助! __android_log_print(ANDROID_LOG_INFO, "sometag", "%p", *test);
我正在从Android中的本机代码以long或int的forms接收返回值,我想要转换或与枚举匹配,为处理目的。 可能吗 ? 怎么样?
作为OpenGL ES 1.x的这个页面 ,我在这个页面上收集了Android设备的OpenGL ES 2.x扩展。 列表可以用我的基准工具gpubenchfind 。 这些信息可以帮助许多游戏开发者。 谢谢你的帮助,
我正在创build一个我们将提供给开发人员最终用户的小部件,它包含一个.jar和使用NDK构build的本地库( .so )。 JAR具有到dynamic库的JNI接口。 如何在项目中包含一个外部的.jar非常清楚,而不是如何包含一个依赖的dynamic库。 如何打包并生成.jar和.so ? 这里最好的做法是什么? 我可以使用JDK的jar命令创buildJAR文件。 我需要在jar上运行dx.bat来转换为Dalvik字节码吗? 我需要创build一个示例项目来显示小部件的操作。 如何在演示如何使用小部件的示例项目中包含这个.jar和.so ?
我想通过向logcat插入日志消息来debugging一个JNI C应用程序。 什么是C API来做到这一点?
我试图运行NDK编译本机代码,以运行Atom(x86)处理器以及ARM。 不pipe我怎么设置APP_ABI,NDK都在生成armeabi库。 即使我只把APP作为APP_ABI。 而文件大小总是一样的。 这里是我的Application.mk文件: LOCAL_PATH := $(call my-dir) APP_ABI := x86 include $(CLEAR_VARS) LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog LOCAL_MODULE := myjni-jni LOCAL_SRC_FILES := myjni-jni.c include $(BUILD_SHARED_LIBRARY) 不pipe我在APP_ABI之后放什么,我得到的是armeabi和它的大小一样。 这里怎么了? 我正在使用最新的NDK。
几天后,我正在为Android构buildOpenALPR示例项目 。 它build立并启动,但在调用本地方法来识别它之后例外: java.lang.RuntimeException: An error occured while executing doInBackground() at android.os.AsyncTask$3.done(AsyncTask.java:299) at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352) at java.util.concurrent.FutureTask.setException(FutureTask.java:219) at java.util.concurrent.FutureTask.run(FutureTask.java:239) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) at java.lang.Thread.run(Thread.java:838) Caused by: java.lang.UnsatisfiedLinkError: Native method not found: org.openalpr.AlprJNIWrapper.recognizeWithCountryRegionNConfig:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String; at org.openalpr.AlprJNIWrapper.recognizeWithCountryRegionNConfig(Native Method) at org.openalpr.app.AlprFragment$AlprTask.doInBackground(AlprFragment.java:78) at org.openalpr.app.AlprFragment$AlprTask.doInBackground(AlprFragment.java:1) at android.os.AsyncTask$2.call(AsyncTask.java:287) at java.util.concurrent.FutureTask.run(FutureTask.java:234) … 4 more 我什么都做不了,它一直都是。 Application.mk APP_ABI := armeabi-v7a APP_CPPFLAGS := […]