android 生成不同类型体系的so库文件(1)

本系列是分为三步走

1.生成so库文件(本篇)

2.生成jar包 打开地址

3.调用自己生成的so库和jar包 打开地址

本篇是第一部分,生成so库.

一、配置NDK环境

    1.下载NDK文件 http://www.androiddevtools.cn/ android中文网下载

    2.配置NDK的环境变量 (如果有的环境变量配置好了,但是DOS命令行还显示不是系统命令{如:Java,javac,javah},就把系统path中的复制一份到用户环境path中去)

        将ndk路径放到path里去,然后打开cmd,输入ndk-build ,提示下图就说明配置成功!


二、配置Android studio

    1.新建一个名为JniMakeSo的Android项目。

android 生成不同类型体系的so库文件(1)_第1张图片

    2.配置NDK路径

android 生成不同类型体系的so库文件(1)_第2张图片

    3.配置build.gradle

android 生成不同类型体系的so库文件(1)_第3张图片

    

ndk{
    moduleName "hello"
    ldLibs "log","z","m"
    abiFilters "armeabi","armeabi-v7a","x86","arm64-v8a"
}

4.配置gradle.properties:加一行 android.useDeprecatedNdk = true

三、生成so库文件

    1.创建Testjni.java

/**
 * Created by Rango on 2018/5/12.
 */

public class Testjni {
    static {
        System.loadLibrary("hello");//名字要与build.gradle文件中配置一致
    }
    public native static String getString();
}

    2.在build文件夹下找到classes文件夹(如果没有classes文件夹先 Build->Make Project一下或run一下)

android 生成不同类型体系的so库文件(1)_第4张图片

    3.打开DOS命令行(快捷键 window键+R,输入cmd)或在Android studio里点击Terminal.

       3.1: cd 到classes下的debug目录下然后输入javah -jni 包名.类名

        *打开小技巧:可以先打开到这个文件夹下,按住shift键右击debug文件夹,再点击在此处打开命令行,就会很方便的自动切到此目录下。

android 生成不同类型体系的so库文件(1)_第5张图片


android 生成不同类型体系的so库文件(1)_第6张图片

    3.2:然后输入javah -jni 包名.类名 按回车,如果没有任何提示就说明.h文件生成成功了


    3.3:这时候就可以看到.h文件了

android 生成不同类型体系的so库文件(1)_第7张图片

    3.4:在java同级目录创建jni文件夹,把生成的.h文件copy进去。
        并创建test.cpp文件,把.h文件中的方法copy进去实现。*需要引入.h头文件

android 生成不同类型体系的so库文件(1)_第8张图片

    3.5:这时候Rebuild Project或者run一下项目就会生成四个so文件了.(因为在build.gradle里面设置了四种体系结构)

android 生成不同类型体系的so库文件(1)_第9张图片

如果出现如下图错误,说明此文件夹正在使用不能删除,把刚刚的cmd命令窗口关闭重新Rebuild一下就好了




你可能感兴趣的:(学习日志)