androidStudio编译so库


在androidstudio工程配置了NDK前提下:
1.创建本地方法调用类
在该类中声明一个静态的native方法 
{
public static native int Add(int a,int b);
}


在terminal中利用jni命令获取头文件 javah -d jni -classpath +debug(build目录-intermidates-classes-debug)目录的绝对路径+包名+native方法调用类名;


2.make project 获得上述本地方法调用类的classes文件


3.在main目录下创建jni Folder,将在build-intermicate-classes-debug下生成的头文件移动到jni文件夹中
4.在jni目录中创建.cpp文件,实现具体的c方法
5.通过运行程序或者rebuild项目,在build-intermediates-ndk目录中将找到生成的libs(在build前需要在gradle中声明ndk配置(so库名称和平台类型))
ndk{
            moduleName "jniSo"
            abiFilters "armeabi-v7a","armeabi"
        }


6.so库的使用:放在libs文件夹中需要在项目gradle中声明jniso库的目录位置
:sourceSets {
        main {
            jniLibs.srcDirs = ['libs']  /**在libs文件夹下找so文件*/
        }
    }


如果so库放在main下的jniLibs下则不用声明so库目录


so库放在so库生成项目以外的项目中使用,需配置native方法调用类,类的类名和包名需和so库生成项目保持一致。
在改类中需要静态加载so库
static {


        System.loadLibrary("MySo");//NDKDEMO可以随便取,但是必须和moduleName "NDKDEMO"  的名字一样
    }




android和unity调用so库的c方法格式有所不同 需要作出区别:


android调用android so库的c方法格式:


#include <com_example_test_Load.h>


JNIEXPORT jint JNICALL
Java_com_example_test_Load_Add(JNIEnv *env, jclass type, jint a, jint b) {


    // TODO


}




unity调用android so库 c方法的格式:


#include <com_example_test_Load.h>




 int Add(int a,int b) {


    // TODO
    return a+b;


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值