NDK笔记(二)-在Android Studio中使用ndk-build(转)

摘要:
效果如下:3.创建一个新的C文件并实现本机方法。4.创建Android。jni路径下的mk文件。5.创建Android。模块构建中的mk文件gradle中的ndk构建配置有两个主要配置点:在defaultConfig节点中添加ndk,在此处创建abi筛选器,在android节点中添加externalNativeBuild节点,并在其中配置ndkBuild的makefile路径。以下是在此期间使用的一些体验:如果有多个文件夹,则需要使用Android。mk文件以包含Android的所有子文件夹。mk文件:该文件是build.gradle中配置的文件。

前面一篇我们接触了CMake,这一篇写写关于ndk-build的使用过程。刚刚用到,想到哪儿写哪儿。

环境背景

Android开发IDE版本:AndroidStudio 2.2以上版本(目前已经升级到2.2.3)

计算机环境:Window 64位系统

Demo工程的创建与设置

1.新建一个工程,并在app/src/main路径下新建jni文件夹。

image

2.在java代码中,新建NdkBuildTest类(包含native方法),并用javah命令生成头文件。

image

image

这里需要注意几点:

(1)javah是JDK中的程序,所以需要将JDK的bin路径添加到计算机的环境变量path中,才能在terminal中使用这个命令。

(2)javah命令中,-d指定创建头文件的目标路径,-classpath指定类的路径,由于当前路径是main,所以指定其中的java即可。

效果如下:

image

3.新建C文件,实现native方法

image

4.在jni路径下新建Android.mk文件

image

5.在Module(app)的build.gradle中进行ndk-build配置

image

这里主要配置两点:

(1)在defaultConfig节点中,添加ndk,在这里作一个abi的过滤,(默认的abi好像是MIPS)

(2)在android节点中,添加externalNativeBuild节点,在里面配置ndkBuild的makefile路径。(用Cmake的话,也是在这里进行配置)

6.配置完成后,同步工程,在C文件中进行编程,就可以引入相应的头文件,并会有相应的代码提示。

image

注意:一般同步工程后,编辑器就可以找到相应的头文件,就不会标红报错。

当然,即使标红报错,提示找不到头文件,只要编译时能够Build Success,工程也是能够正常运行的。

其他

1.Google Developers中国网站

就在昨天,Google Developers中国网站开通了,喜大普奔~~23333~~

其微信公众号是谷歌开发者

2.关于Android.mk

关于Android.mk的编写,AndroidStudio上好像也没法自动生成,一直都是手动Coding。

昨天刚刚找到一个关于Android.mk的网站,先作记录,改天再研读一下。

这里写几点这段时间用到的经验吧:

(1)如果有多个文件夹,需要用一个Android.mk文件include所有子文件夹下面的Android.mk文件:

image

这个文件就是配置在build.gradle中的文件。

(2)如果在工程中需要链接一个非系统的so库(Android系统中找不到的库),则在Android.mk中,先对该库进行预编译,然后再在当前需要生成的module中链接该库:

image

这样,在生成的APK中,就可以看到libReady.so 和当前生成的libCurrent.so都被打包在libs路径中了。

转自:http://www.cnblogs.com/tt2015-sz/p/6148723.html

免责声明:文章转载自《NDK笔记(二)-在Android Studio中使用ndk-build(转)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JAVA系列笔记十五之intellj ideaandroid界面布局下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ios framework通用库的制作

这篇文章是在史上最完整的iOS DIY framework 详细教程(一)的基础上加以修改 1、新建一个静态库工程: 2:取自己喜欢的名字: 3、删除向导所生成工程中的 Target: 3、删除TestFrameWork对应的工程文件夹: 5:删除bulid 关连项 选择左下角Manager Scheme 选中 Scheme,点击左下角的减号删...

Vue通过build打包后 打开index.html页面是空白的

最近在build打包vue项目遇到了几个问题,如下: 1、npm run build打包项目之后,我们通常是把dist文件里面被压缩后的static文件跟index.html提交到服务器,但最近发现直接打开index.html页面是空白的,还会报几个错,找不到页面路径。 原因:找到config文件下index.js,全局搜索assetsPublicPath...

Ubuntu 环境安装 opencv 3.2 步骤和问题记录

记录下笔者源码编译 opencv 的过程( Ubuntu 环境下 ),以及某些报错的解决方法,希望可以帮助有需要的人...   源码编译 opencv 的主要流程 1.获取 opencv 源代码,用户可以在 opencv-github获取对应版本的 opencv 源代码,并将其解压; upzip opencv-3.2.0.zip -d ~...

深入理解Android相机体系结构之3---相机服务层

一、简介 Camera Service被设计成一个独立进程,作为一个服务端,处理来自Camera Framework 客户端的跨进程请求,并在内部进行一定的操作,随后作为客户端将请求再一次发送至作为服务端的Camera Provider,整个流程涉及到了两个跨进程操作,前者通过AIDL机制实现,后者通过HIDL机制实现,由于在于Camera Provide...

Android Wear开发

本节由介绍3种数据的发送接收:1.Data Items : 比特类型数据,限制100KB以内2.Assets : 资源类型数据,大小无上限3.Message : 发送消息,触发指令 http://developer.android.com/training/wearables/data-layer/data-items.html 1.Syncing Dat...

安卓架构

1、架构图直观 下面这张图展示了Android系统的主要组成部分: 图1、Android系统架构(来源于:android sdk) 可以很明显看出,Android系统架构由5部分组成,分别是:Linux Kernel、Android Runtime、Libraries、Application Framework、Applications。第二部分将详细...