问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

AndroidStudio怎样使用NDK开发示例

发布网友 发布时间:2022-04-22 13:40

我来回答

1个回答

热心网友 时间:2023-08-22 06:06

  1、新建一个Android工程,这一步就不多说了;

2、在AndroidStudio中配置NDK路径,方法是:

(1)先下载NDK并安装(这句基本是废话);

(2)点菜单栏的File->ProjectStructure…->在打开的窗口中左侧选中SDKLocation->在右侧Android NDK Location中填入NDK目录所在路径

3、编译生成.class文件,方法是:

点菜单栏的Build->Make Project

这时,在工程的app/build/intermediates下就会生成classes文件夹,打开classes目录下的debug目录就会看到以你的包名命名的各级文件夹,最里边文件夹下有你的Java类对应的.class文件;

4、确定你要引用本地方法的类:

其实你也可以先生成jni目录,再去创建这个类,但是先Google显然建议先创建要引用C代码的Java类,因为AndroidStudio可以根据你在java类中定义的native方法的名称来自动生成.h头文件。

比如你想在MainActivity中引用本地方法,那么你先用

static {

System.loadLibrary("myNativeLib");

}

来声明本地代码库,然后定义几个natvie方法,比如

public native String getStringFromNative();

5、使用javah命令行生成jni目录及对应的头文件:

我用的是AndroidStudio 2.1.1,在主界面最下边就能找到Terminal,点一下就能打开系统的命令行工具,并且已经为你自动cd到当前工程所在目录

6、配置build.gradle文件

这里的build.gradle是指app模块下的build.gradle,不是整个工程的build.gradle文件。在模块的build.gradle的defaultConfig下加入以下idk配置:

ndk {

moleName"myNativeLib"

ldLibs "log", "z", "m"

abiFilters "armeabi", "armeabi-v7a", "x86"

}

7、配置local.properties文件

打开工程目录下的local.properties,感觉这一步是自动配置的,或者说在你一开始在AndroidStudio中指定NDK目录时已经自动生成了。我的AndroidStudio在打开local.properties已经有了

ndk.dir=/Develop/Android/android-ndk-r10e

这一行,所以就不用配了;

8、配置gradle.properties

打开工程目录下的gradle.properties文件(注意不是build.gradle,而是gradle.properties),在文件的最后一行加入

android.useDeprecatedNdk=true

这句的作用是允许我们使用已经过时的NDK版本,不知道AndroidStudio要求使用哪个版本的NDK才不会报错,总之只要配置了这一句就可以使用比较旧的NDK版本了,我用的r10;

至此我们在AndroidStudio中就完成了NDK环境的配置,接下来就可以写Native代码了;

9、写一个.c文件测试一下是否运行正常

(1)在我们之前生成src/main/jni目录下新建一个.c文件,方法是在jni文件夹上点鼠标右键,选择New->C/C++ Source File,然后在弹出的对话框中填入.c或.cpp文件的文件名就可以了,比如说mail.c

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...结构的施工分包给其他单位那么是不是EPC总承包就不能分包 Win11玩不了地平线4如何解决_Win11玩不了地平线4怎么办 Win11玩不了地平线4如何解决_Win11玩不了地平线4怎么解决 地平线5警告显卡内存过低怎么办 极限竞速地平线5闪退怎么解决 极限竞速地平线5闪退解决方法 怎样册除手机屏幕上(精品游戏)图标 烧结普通砖有哪些 烧结普通砖都有哪些 ...4年后的年龄与弟弟3年前的年龄和是35岁。今年哥与弟各几岁??_百度... ...等于弟弟7年后的年龄,哥哥4年后与弟弟3年前的年龄的和是35岁。哥哥... android studio怎么设置布局 如何搭建android studio开发环境 Android studio 如何启动 android studio怎么支持.c文件 浦发抖音联名信用卡好申请吗 android studio可以用c++吗 android studio开发工具编译C、c++代码生成so文件 抖音小号批发,平台自动发卡,包售后? 电信、移动联通在抖音免费发卡,我66岁了,能不能领到卡? androidstudio怎样创建c文件 C盘下.AndroidStudio可以删除吗 怎样可以集到抖音里发财中国年的发卡? 如何在android studio中安装cmake 如何在Android的Studio中使用原生的C库 发卡怎么集齐 如何领取QQ分享的抖音发卡? 湖南一猴子拦游客翻包后叼走钱包,如何应对旅途中被猴子抢劫? 六耳猕猴是如何被收服的 如何防止被猕猴伤害? 南湾猴子才是真正的霸主游客是客人,那经营管理者是什么? Android studio 怎么通过使用C本身的函数 如何把android studio变成中文版 android studio 怎样进行jni开发 蛇的第一大克星 蛇獴和平头哥哪个对蛇更致命 苏通卡充值未找到卡片信息 在农村,除了青桩鸟外,还有哪些喜欢吃蛇的动物? 对蛇毒免疫的动物有哪些 平头哥那么难缠,为何狮子豹子却从来不咬死它? 平头哥蜜獾为什么不怕蛇毒? 请教各位怎么预防蛇,蛇怕什么 平头哥和眼镜蛇打架,到底谁更厉害 蛇的天敌是什么,蛇最爱吃什么 转出去的钱能追回吗 狼獾和“平头哥”蜜獾谁的实力更强一些? 我微信转账一笔钱,人家还没收,我能马上收回来吗? 澳大利亚毒蛇有天敌吗? 把钱转出去了还能要回来吗? 网银农行转出去的钱可以追回来么 建行跨行刚刚转出的钱可以要的回来吗?