Android Studio JNI开发(2)------NDK 编译原生库

来源:互联网 发布:大数据经典案例 编辑:程序博客网 时间:2024/05/24 04:14
1.下载NDK开发包,或者直接从Android Studio中下载,配置NDK环境变量,环境变量配置成功后,终端中输入ndk-build会显示这样的提示
   
 
2.项目是在Project模式下,在项目中创建native方法
  1. public class MainActivity extends AppCompatActivity {
  1. private View viewById;
  2. @Override
  3. protected void onCreate(Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. setContentView(R.layout.activity_main);
  6. viewById = findViewById(R.id.tv_show);
  7. }
  8. /**
  9. * 本地方法
  10. * @return
  11. */
  12. public native String hiNDK();
  13. }
3.创建JNI function,终端定位到java目录下,使用javah工具生成.h的头文件
  
 4.生成的.h头文件在java目录下,有时候可能不会及时出来,只要javah不报错,稍等一下,或刷新一下就出来了,新建JNI forlder
    
 5.把.h头文件放到jni下,新建C/C++代码,里面生成的JNI function直接拷贝到c/c++代码中,添加上形式参数就可以了,剩下的就是转成JNI中的方法了
  1. #include "com_iteast_jni_ndk_MainActivity.h"
  2. JNIEXPORT jstring JNICALL Java_com_iteast_jni_1ndk_MainActivity_hiNDK
  3. (JNIEnv *env, jobject obj){
  4. char* str = "我是一个中国人";
  5. return (**env).NewStringUTF(env,str);
  6. }
6.在JNI中创建Android.mk文件与Application.mk文件,Application.mk是约束生成那些类型的动态库文件(可有可无),Android.mk则约束动态库文件名,和引用的c/c++源码
  
  
 7.终端定位到main目录下,或者java目录下,生成的.so文件所在的位置不同,自己体会,一般会在main目录生成.so
  
 8.在Android Studio中使用so文件,需要在main文件夹在创建jniLibs文件夹,把所有的so,连同其类型文件夹一同拷贝到jniLibs中,项目中使用动态库文件之前需要调用System.loadLibrary("jni_ndk");
 9.运行项目,需要把c代码都去掉,因为我还没有搞明白去如何直接通过AS通过ndk运行程序
   
源码地址:点击下载Demo源码
    

0 0
原创粉丝点击