理论知识:

NDK的作用 C语言通用 方便后期维护减少开发量
NDK的优点:1.运行效率高2.利于充分发挥软硬件优势3.利于代码复用4.降低版本控制成本5.降低开发成本
NDK的缺点:1.开发难度相对高2.调试难度相对高3.增加开发团队规模
NDK编译流程图

Android ndk怎么查看版本号 android ndk api_java

实际操作

NDK安装与配置:

1-安装android studio

可到android中文官网下载

2-插件里选择下载Android NDK包

Android ndk怎么查看版本号 android ndk api_jar_02


Android ndk怎么查看版本号 android ndk api_jar_03

3-创建一个新的android工程,并新建一个类

Android ndk怎么查看版本号 android ndk api_jar_04


在Activity里永远访问不到android.support.v7.app.AppCompatActivity

找不到android.support.v7.app.AppCompatActivity的类文件

不知道为什么,知道的同学麻烦在评论里提示一下

4-声明native函数,并build生成classes声明native函数

public native String getStringFromNative()

声明hello本地库

static{
System.loadLibrary("hello");
}
/**
 * Created by HYAD-PC01 on 2017/1/8.
 */
public class TestJni {
    static{
        System.loadLibrary("hello");
    }
    public static native String getString();

    public native String getString();

    public native int add(int a,int b);
}

build

这步很重要哦,有时候找不到类就是因为没有编译,具体有没有编译可以去classes文件下查看一下

Android ndk怎么查看版本号 android ndk api_android_05


查看生成classes文件

项目->app->build->intermediates->classes->包名->我们的.class文件

Android ndk怎么查看版本号 android ndk api_jar_06


5-使用javah生成头文件,并创建jni文件夹

cmd:

进入app——path/app/src/main/;

javah -d jni -classpath android_sdk_path/android.jar class_name注:android_sdk_path:本机sdk目录

android.jar :当前项目jar版本

Android ndk怎么查看版本号 android ndk api_java_07


jni文件下

Android ndk怎么查看版本号 android ndk api_java_08


如果这里错误请跟步骤严肃再来一遍并注意以下问题:

1.Terminal

Android ndk怎么查看版本号 android ndk api_java_09


一开始我是在android studio自带的Terminal里写的命令,然而并没有什么软用,死活不对于是改成cmd。如果你有解决办法,请联系我,如果没有呢就一起用cmd吧

2.报找不到android.support.v7.app.AppCompatActivity

说法一:是因为编译的classpath 未加入v4和v7库

请参考

http://www.itnose.net/detail/6291798.html

说法二:Activity生成jni就是矫情,改用新建class就什么毛病都没了(亲测推荐)

3.命令标准写法

Android ndk怎么查看版本号 android ndk api_jar_10

6-创建C/C++程序并include头文件

在jni文件下新建C/C++文件

Android ndk怎么查看版本号 android ndk api_Android ndk怎么查看版本号_11

7-设置NDK路径:包括(local.properties)及Gradle文件(build.gradle)
local.properties里加一行(盘符双斜杠,不然编译不过)

Android ndk怎么查看版本号 android ndk api_java_12


build.gradle

Android ndk怎么查看版本号 android ndk api_Android ndk怎么查看版本号_13


注:moduleName必须与这里设置的一样

Android ndk怎么查看版本号 android ndk api_jar_14


abiFilters 设置了在那些平台上可以应用

8-编译NDK程序(build),并生成*.so(android_ndk_path:\项目\app\build\intermediates\ndk\debug\lib\armeabi)

编译

Android ndk怎么查看版本号 android ndk api_java_15


Android ndk怎么查看版本号 android ndk api_java_16


genymotion的cpu是x86的

参考

http://www.07net01.com/2016/04/1445592.html