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

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源码
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值