第一个.so文件

第一次写博客,2017.12.14,纪念一下^-^

废话不多说,直接开搞:

如何生成你的第一个.so文件?


1、配置ndk
2、编辑源码
3、生成.so文件


一、配置ndk


参考:http://blog.csdn.net/tongseng/article/details/53005123


二、编辑源码

1、创建.so文件的工具类,并生成.h文件

这里写图片描述


2、创建jni文件

这里写图片描述


3、把.h文件拖进jni文件夹,并创建main.c文件

这里写图片描述


4、在main.c文件书写以下代码

#include "com_um_jkdemo_JniText.h"//注意替换成自己的   引入.h文件

JNIEXPORT jstring JNICALL Java_com_um_jkdemo_JniText_getJniString//注意替换成自己的
(JNIEnv *env, jclass jclz){
   return (*env)->NewStringUTF(env,"String from JNI");//返回值
}

5、配置gradle

 android {
    compileSdkVersion 26
    buildToolsVersion "27.0.1"
    defaultConfig {
        applicationId "com.um.jkdemo"
        minSdkVersion 15
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

        ndk{
            moduleName "jni_text"//moduleName 和System.loadLibrary("Name");中的Name要保持一致
            ldLibs"log","z","m"
            abiFilters"armeabi","armeabi-v7a","arm64-v8a","mips","mips64","x86","x86_64"
        }


    }
//防止报错(Error:(81) Android NDK: Application targets deprecated ABI(s): mips64 armeabi mips)
    splits {
        abi {
            enable true
            reset()
            include 'armeabi','armeabi-v7a', 'arm64-v8a',  'mips', 'mips64','x86', 'x86_64'  //select ABIs to build APKs for
            universalApk true //generate an additional APK that contains all the ABIs
        }
    }

sourceSets { main { jni.srcDirs = ['src/main/jni', 'src/main/jni/JniText'] } }

三、生成.so文件

1、直接运行项目得到.so文件
2、路径
这里写图片描述


注意事项

1、gradle中的moduleName 一定要和 System.loadLibrary(“Name”);中的name一摸一样,区分大小写。

2、main.c文件中的.h文件一定要替换成自己的,以及方法名

3、执行javah命令时区分大小写


参考

http://blog.csdn.net/sw5131899/article/details/77183352


end

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值