JNI开发的流程①
发布时间:2020-12-14 02:31:31 所属栏目:Windows 来源:网络整理
导读:? windows 平台下写 C的代码 ? ? ?运行在linux ? ? ? native 语言 ?平台相关性强? NDK ? native develop kit ? ? ? 交叉编译 ?在一个平台上模拟另外一个平台的特点来编译native 代码 平台 操作系统平台 ? ? ? ?windows ? ?mac os ? ? linux ? 类unix ?iOS ?
?
windows 平台下写 C的代码 ? ? ?运行在linux ? ? ?
native 语言 ?平台相关性强?
NDK ? native develop kit ? ? ?
交叉编译 ?在一个平台上模拟另外一个平台的特点来编译native 代码
平台
操作系统平台 ? ? ? ?windows ? ?mac os ? ? linux ? 类unix ?iOS ? android
CPU 平台 ? ? ? ? ? ? x86 pc(intel amd) ? ? ? ?arm ? ? ? ? mips
?
通用流程
① java代码中声明一个native方法 native方法不用实现
?
public native String hello(); ?
?
②在模块的根目录下创建一个jni目录 创建.c的源代码
JNIEXPORT jstring JNICALL Java_ngyb_jnihello_MainActivity_hello(JNIEnv *env,jobject thiz){ char* str = "hello c!!!!!!!"; return (*env)->NewStringUTF(env,str); } ?
③在jni的目录下创建一个Android.mk文件 ?.mk 是linux makefile 编译文件 向编译系统描述
要编译的源代码在什么目录下 叫什么名字 编译之后生成什么类型的文件 文件名是什么
?
LOCAL_PATH := $(call my-dir) #获取当前的路径 include $(CLEAR_VARS) LOCAL_MODULE := hello-jni #LOCAL_MODULE 生成的模块的名字 LOCAL_SRC_FILES := hello.c #LOCAL_SRC_FILES 指定要编译的代码的名字 include $(BUILD_SHARED_LIBRARY) #指定生成一个动态链接库 linux下就是.so windows下就是 .dll ?
?
④调用ndk-build来编译文件
在项目的根目录下来编译 如果找不到模块的话 通过NDK_PROJECT_PATH=app 来指定模块的名字
⑤编译成功之后会生成.so ? ?会放在模块的libs目录下 可以通过 模块的gradle配置 指定.so的位置
在模块的gradle中 android{}内写如下内容
sourceSets.main.jniLibs.srcDirs = [‘libs‘] ?
?
⑥项目运行之前通过 System.loadlibrary加载.so模块
需要注意 生成的.so文件系统会自动加上一个lib前缀
System.loadLibrary的时候 不要写lib前缀 去掉lib 去掉.so就是要加载的模块的名字
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 难道真的不可能写一个隐藏Windows密码的php cli密码提示吗?
- Windows手机 – 没有模拟器列出部署Windows Phone应用程序
- windows – 无法启动php-cgi.exe – 缺少MSVCR110.dll
- active-directory – Windows 10,RSAT工具缺少功能
- 使用Windows服务通过WCF处理MSMQ消息
- windows-phone-7 – UriKind在windows手机之间导航
- windows – 如何获取硬盘访问的跟踪文件?
- windows – 在登录之前如何让bginfo清除现有的壁纸?
- winforms – .NET ListView和Windows 7
- 如何在Windows下使用doMC或glmnet的替代并行处理实现?
推荐文章
站长推荐
- windows-server-2008 – 小型企业需要Active Dir
- windows-server-2003 – 诊断组策略对象无法访问
- windows-xp – 如何修复“TCP / IP已达到安全限制
- DirectX11--ComPtr智能指针
- 我们是否需要SCVMM才能在Windows Server 2016中测
- windows-server-2003 – 在小型企业环境中摆脱服
- 在Windows上使用.NET获取实际的文件名(具有正确的
- Win10中MySQL8.0.11的配置文件my.ini的位置
- windows10 启动安卓模拟器会蓝屏的解决方案
- active-directory – 将Windows Server 2016提升
热点阅读