安卓应用开发之Android studio JNI开发的三种方式
小标 2018-05-23 来源 : 阅读 1428 评论 0

摘要:本次的安卓应用开发,向大家讲述了Android studio JNI开发的三种方式,通过具体的讲解,让大家能够认识到这三种方式,希望对大家学习安卓应用开发有所帮助。

本次的安卓应用开发,向大家讲述了Android studio JNI开发的三种方式,通过具体的讲解,让大家能够认识到这三种方式,希望对大家学习安卓应用开发有所帮助。

第一种

第一步: 创建natice本地方法

第二步: 在工程App模块目录下创建jni文件夹

第三步: 在jin文件夹中创建.c结尾的c文件,编写c代码,在c语言中定义在Java代码中创建的本地方法(natice方法)

,要按照jni的规范定义方法(Java_包名_类名_natice方法名,其中包名中的点用_代替)

第四步: 在jni文件夹中创建Android.mk文件,文件内容如下

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := hello #指定生成的库名 lib库名.so

LOCAL_SRC_FILES := hello.c #指定要编译的C语言源文件 多个空格排开

include $(BUILD_SHARED_LIBRARY) #指定生成库类型(静态库 动态库 独立程序) 动态库

第五步: 在src文件夹下创建Application.mk,内容如下

APP_ABI := all #指定生成库平台

第六步: 编译c代码生成so库,到c代码所在的目录里面按住shift点击鼠标右键,

选中在此处打开命令窗口(首先你要把ndk-build配置到环境变量中),执行ndk-build,

会自动生成Application.mk配置的so库

第七步: 在App模块下配置jinLibs的路径执行libs

sourceSets{
main{
jniLibs.srcDirs=[“libs”]
}
}

第八步: 静态代码块加载

Static{
System.laodLibrany(“hello”)
}

第九步:运行

第二种

第一步: 创建natice本地方法

第二步: 选中APP模块点击鼠标依次选择new->folder->JNI folder->finish

会在main目录下生成一个jni文件夹

第三步: 在jin文件夹中创建.c结尾的c文件,编写c代码,在c语言中定义在Java代码中创建的本地方法(natice方法),

要按照jni的规范定义方法(Java_包名_类名_natice方法名,其中包名中的点用_代替)

第四步: 在模块的build.gradle deflautConfig标签中配置库名和指定生成的平台

ndk{
moduleName “hello”//生成的库名
abiFilters “armeabi”,”armeabi-v7a”,”x86”//生成的平台
}

第五步: 静态代码块加载

Static{
System.laodLibrany(“hello”)
}

第六步:运行

第三种(Cmake)as版本2.2之后才可以使用

第一步: 创建natice本地方法

第二步:在main下面创建cpp文件夹,再在cpp文件夹中穿件c源文件

按jni规范编写被java调用的方法

第三步:创建CMakelists.txt文件,里面配置了生成的库名和连接的库名还有c代码的路径(CMakelists.txt生成方式

,要新建一个项目一定要选中include c++ suppot,选中之后创建的工程中就会有CMakelists.txt文件,

并且还有Google给出的例子)

第四步: 选中模块点击鼠标右键,选中link c++ progect with gradle之后弹出Cmake对话框,选择CMake方式,

再找到模块下生成的CMakeLists.txt之后ok

如果报错了检查CMakeLists.txt是否配置错了,如果没有报错就添加成功了,会在build.gradle生成externalNativeBuild标签

第五步:配置生成的so库平台,在deflautConfig标签下面创建externalNativeBuild标签

externalNativeBuild{
cmake{
abiFilters “armeabi”,”armeabi-v7a”,”x86”//生成的平台
}
}

配置完成用静态代码块的方式加载so库

Static{
System.laodLibrany(“hello”)
}

可能出现的错误

1, No implementation found for

意思是函数没有实现,

1,检查c中的方式是否正确(按jni规范)

2,是否静态加载了库,库名是否写错

2, > Error: Your project contains C++ files but it is not using a supported native build system.

Consider using CMake or ndk-build integration with the stable Android Gradle plugin:

大概意思是你的ndk不是最新的

1,下载一个最新版本的ndk

2,在gradle.properties中配置

Android.useDeprecatedNdk=true(允许使用过时ndk)

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发Android频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved