zoukankan      html  css  js  c++  java
  • 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路径中了。

  • 相关阅读:
    Redis5设计与源码分析 (第17章 HyperLogLog相关命令的实现)
    Redis5设计与源码分析 (第16章 GEO相关命令)
    ES5和ES6函数的this指向
    vue响应式原理 (响应式并不等于数据双向绑定,千万不要混淆)
    vue中data为什么是函数而不是对象
    vue-enum 前端常量 枚举工具
    Vue3 写业务逻辑不适合用TS(TypeScript)
    vue-property-decorator vue3 ts 用的装饰器
    github git clone下载加速 && npm install 下载加速
    vue3 如果用ts,导出时候要用 defineComponent,这俩是配对的,为了类型的审查正确
  • 原文地址:https://www.cnblogs.com/tt2015-sz/p/6148723.html
Copyright © 2011-2022 走看看