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

环境背景

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

计算机环境:Window 64位系统

Demo工程的创建与设置

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

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

这里需要注意几点:

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

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

效果如下:

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

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

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

这里主要配置两点:

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

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

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

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

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

其他

1.Google Developers中国网站

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

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

2.关于Android.mk

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

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

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

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

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

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

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

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

NDK笔记(二)-在Android Studio中使用ndk-build(转)的更多相关文章

  1. 在Android studio中进行NDK开发

     在Android studio中进行NDK开发  分类: Android平台 软硬件环境 ubuntu kylin 14.04 红米note增强版 Android studio 0.8.6 ndk ...

  2. 如何在Android Studio中指定NDK位置?

    如何在Android Studio中指定NDK位置? 问题描述 NDK已经手工下载解包在本地: D:\Portable\android-ndk-r13b 每次创建支持C++项目时,都提示NDK没配置, ...

  3. Android Studio 中关于NDK编译及jni header生成的问题

    之前由于工作原因使用grails这个基于groovy的框架做项目,对groovy感觉很好. 基于groovy的gradle构建系统对我而言自然也是好的没得说. Android Studio 正式版出来 ...

  4. Android(java)学习笔记126:Android Studio中build.gradle简介

    1.首先我们直接上代码介绍: // Top-level build file where you can add configuration options common to all sub-pro ...

  5. Android(java)学习笔记66:Android Studio中build.gradle简介

    1.首先我们直接上代码介绍: // Top-level build file where you can add configuration options common to all sub-pro ...

  6. Android studio中2种build.gradle文件介绍

    根目录下的build.gradle通常不需要修改这个文件中的内容,除非需要添加一些全局的项目构建配置 buildscript { repositories { google() //声明代码托管仓库G ...

  7. 【Android Studio安装部署系列】二十四、Android studio中Gradle插件版本和Gradle版本关系

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 在从Android Studio3.0.0版本升级到Android Studio3.0.1版本的时候,出现了一个问题,需要升级Gra ...

  8. Android编程权威指南笔记3:Android Fragment讲解与Android Studio中的依赖关系,如何添加依赖关系

    Android Fragment 当我在学习时,了解了Fragment词汇 Fragment是一种控制器对象,我就把所了解的简单说一下.activity可以派fragment完成一些任务,就是管理用户 ...

  9. Android studio 中引用jar的其实是Maven?(二)

    上一篇:Android studio 中引用jar的其实是Maven?(一) 搭建maven仓库: 去了解一个新的事物的时候,最好的方式就是去使用它.例如去了解一座城市的时候,最好的方式就是乘坐公共交 ...

  10. 在android studio中集成javah, ndk-build进行JNI开发

    最近在搞一个android上控制LED灯闪烁的功能,用到了串口编程,搜索了一下,发现Google发布了一个demo,android-serialport-api.有现成的代码和APK,要想自己改JNI ...

随机推荐

  1. go语言从例子开始之Example27.超时处理

    超时 对于一个连接外部资源,或者其它一些需要花费执行时间的操作的程序而言是很重要的.得益于通道和 select,在 Go中实现超时操作是简洁而优雅的. Example: package main im ...

  2. 基于mybatis拦截器分表实现

    1.拦截器简介 MyBatis提供了一种插件(plugin)的功能,但其实这是拦截器功能.基于这个拦截器我们可以选择在这些被拦截的方法执行前后加上某些逻辑或者在执行这些被拦截的方法时执行自己的逻辑. ...

  3. Bootstrap 小功能

    <div class="container"> <div class="navbar-header"> <button type= ...

  4. shell 中| 用法

    | 运算符 管道符号,是unix一个很强大的功能,符号为一条竖线:"|".用法: command 1 | command 2 他的功能是把第一个命令command 1执行的结果作为 ...

  5. MyBatis注解开发-@Insert和@InsertProvider(@Select、@SelectProvider雷同)

    @Insert和@InsertProvider都是用来在实体类的Mapper类里注解保存方法的SQL语句.不同的是,@Insert是直接配置SQL语句,而@InsertProvider则是通过SQL工 ...

  6. 如何查看Ubuntu版本

    有时候需要查看一下系统安装的Ubuntu的版本,最简单的方式是输入lsb_release -a. whatis lsb_release输出:print distribution-specific in ...

  7. 【leetcode】994. Rotting Oranges

    题目如下: In a given grid, each cell can have one of three values: the value 0 representing an empty cel ...

  8. Java排序算法 [选择、冒泡、快排]

    选择排序: 简述:从数组的第一个元素开始,依次与其他所有的元素对比,如果比自身大或小(取决于升序或降序)交换位置. package com.sort; import java.util.Arrays; ...

  9. oracle-字符串常用函数

    1.拼接字符串 1)可以使用“||”来拼接字符串 -------------------------------------- select '拼接'||'字符串' as str from dual ...

  10. [CSP-S模拟测试72]题解

    A.简单的序列 遇到括号匹配,先将左右括号转化为1和-1. 那么一个括号序列合法的必要条件:总和为0且所有时刻前缀和$\ge 0$. 用dp预处理出长度为$i$,总和为$j$的括号序列数量.那么如果p ...