android利用jni实现一个ping的功能
android中jni开发怎么生成头文件 总共有三种方式生成Jni头文件,但归根结底只有一种,只是操作方法不一样,我在这里做一下记录,方便下次使用。1.11.利用Android Studio的Terminal,进入你自己的Android工程文件的app/src/main目录,例如(D:\\Users\\AndroidStudio\\Application\\app\\src\\main)在Terminal中输入命令cd app\\src\\main这样就进入到了main目录,可以使用dir命令查看当前目录有哪些文件总共有三种方式生成Jni头文件2.在Terminal中输入命令javah-d jni-jni-classpath.\\.\\build\\intermediates\\classes\\debugcom.example.lenovo.application.JniClass解释:d输出目录,后面跟上要生成的目录名jni 生成Jni样式的标头文件classpath指定加载类的路径,后面跟上你要生成头文件的这个类的路径,例如:\\.\\.\\build\\intermediates\\classes\\debug(这个是类所在的路径)com.example.lenovo.application.JniClass(类的包名)注意,要生成.class文件,要Make Project3.如果前面没有出错的话,就能看到jni文件和生成的头文件其实jni目录可以不用命令生成,Android Studio已经为我们准备好了。这样就能快速的生成jni目录了。然后在Terminal中进入到该目录,输入命令cd app\\src\\main\\jni在。
android 怎么调用jni里面的方法 调用jni里面的方法,过程如下:第一步:使用Java编写HelloWorld 的Android应用程序:packagecom.lucyfyr;import android.app.Activity;import android.os.Bundle;import android.util.Log;public class HelloWorld extends Activity {Called when the activity is first created.*/Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);Log.v(\"dufresne\",printJNI(\"I am HelloWorld Activity\"));}static{加载库文件System.loadLibrary(\"HelloWorldJni\");}声明原生函数 参数为String类型 返回类型为Stringprivate native String printJNI(String inputStr);}这一步我们可以使用eclipse来生成一个App;因为eclipse会自动为我们编译此Java文件,后面要是用到。第二步:生成共享库的头文件:进入到eclipse生成的Android Project中:/HelloWorld/bin/classes/com/lucyfyr/下:可以看到里面后很多后缀为.class的文件,就是eclipse为我们自动编译好了的java文件,其中就有:HelloWorld.class文件。退回到classes一级目录:/HelloWorld/bin/classes/执行如下命令:javah 。
android使用jni开发,能不能使用信号的 可以。实现JNI原生函数源文件:新建com_lucyfyr_HelloWorld.c文件:includedefine LOG_TAG\"HelloWorldincludeNative interface,it will be call in java code*/JNIEXPORT jstring JNICALL Java_com_lucyfyr_HelloWorld_printJNI(JNIEnv*env,jobject obj,jstring inputStr){LOGI(\"dufresne Hello World From libhelloworld.so。从 instring 字符串取得指向字符串 UTF 编码的指针const char*str=(const char*)(*env)->;GetStringUTFChars(env,inputStr,JNI_FALSE);LOGI(\"dufresne->;%s\",(const char*)str);通知虚拟机本地代码不再需要通过 str 访问 Java 字符串。(*env)->;ReleaseStringUTFChars(env,inputStr,(const char*)str);return(*env)->;NewStringUTF(env,\"Hello World。I am Native interface\");}This function will be call when the library first be load.You can do some init in the libray.return which version jni it support.jint JNI_OnLoad(JavaVM*vm,void*reserved){void*venv;LOGI(\"dufresne->;JNI_OnLoad。if((*vm)->;GetEnv(vm,(void*)&venv,JNI_VERSION_1_4)。JNI_OK){LOGE(\"dufresne->;ERROR:GetEnv failed\");return-1;} return 。