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


    前面一篇我们接触了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路径中了。

  • 相关阅读:
    Spark Locality Sensitive Hashing (LSH)局部哈希敏感
    Spark ChiSqSelector 卡方选择器
    图解开源协议
    如何使用Hasu USB to USB Controller Converter刷写tmk固件交换Caps和Ctrl
    使用PHP读取PHP文件并输出到屏幕上
    Mac修改显示器使支持原生缩放
    PHP中使用PDO的预处理功能避免SQL注入
    如何做数据库分页查询
    Chrome报错提示Unchecked runtime.lastError: The message port closed before a response was received.
    Parallels Desktop虚拟机无法关机提示“虚拟机处理器已被操作系统重置”
  • 原文地址:https://www.cnblogs.com/tt2015-sz/p/6148723.html
Copyright © 2020-2023  润新知