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路径中了。

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

  • 相关阅读:
    Maven 集成Tomcat插件
    dubbo 序列化 问题 属性值 丢失 ArrayList 解决
    docker 中安装 FastDFS 总结
    docker 从容器中拷文件到宿主机器中
    db2 相关命令
    Webphere WAS 启动
    CKEDITOR 4.6.X 版本 插件 弹出对话框 Dialog中 表格 Table 自定义样式Style 问题
    SpringMVC JSONP JSON支持
    CKEDITOR 3.4.2中 按钮事件中 动态改变图标和title 获取按钮
    git回退到远程某个版本
  • 原文地址:https://www.cnblogs.com/weizhxa/p/7775225.html
Copyright © 2011-2022 走看看