当前位置: 首页>前端>正文

android studio 编译控制台错误乱码 android studio编译so

步骤可以分成如下步骤:
1、打开SDKManager
2、配置NDK环境
3、新建项目
4、自定义native方法
5、生成c++头文件
6、新建cpp文件实现native方法
7、配置CMakeLists.txt文件
8、调用native方法
9、编译工程生成so文件
运行结果如图

1、打开SDKManager

打开sdkManager下载CMake和LLDB

android studio 编译控制台错误乱码 android studio编译so,android studio 编译控制台错误乱码 android studio编译so_so,第1张

2、配置NDK环境

android studio 编译控制台错误乱码 android studio编译so,android studio 编译控制台错误乱码 android studio编译so_so_02,第2张

3、新建项目

建立项目的时候要勾选Include C++ support

android studio 编译控制台错误乱码 android studio编译so,android studio 编译控制台错误乱码 android studio编译so_android stadio_03,第3张

项目建立完毕后,工程目录如下,cpp文件夹是系统自动生成的:

android studio 编译控制台错误乱码 android studio编译so,android studio 编译控制台错误乱码 android studio编译so_NDK_04,第4张

4、自定义native方法

接下来开始写自定义的一个native方法,新建一个Demo.java文件,里面写一个add求和的native方法,如下 所示。

android studio 编译控制台错误乱码 android studio编译so,android studio 编译控制台错误乱码 android studio编译so_java_05,第5张

5、生成c++头文件

然后在android studio控制台Terminal进入Demo.java所在的目录执行javac Demo.java,如下所示。(这里要注意配置windows端的java环境,具体可以在网上找一下配置方法)

android studio 编译控制台错误乱码 android studio编译so,android studio 编译控制台错误乱码 android studio编译so_android stadio_06,第6张

执行完毕后Hello.java的同级目录下面会生成一个Demo.class文件,证明这一步成功

android studio 编译控制台错误乱码 android studio编译so,android studio 编译控制台错误乱码 android studio编译so_java_07,第7张

然后还是在Terminal控制台上面回退目录到app/src/main下面执行命令
javah -d jni -classpath ./java com.example.asus.myapplication.Demo,后面是包名+文件名不带后缀,请改成自己的包名,如图

android studio 编译控制台错误乱码 android studio编译so,android studio 编译控制台错误乱码 android studio编译so_NDK_08,第8张

命令执行完毕后会在app/src/main目录下面生成一个jni文件夹,文件夹下面有一个.h后缀文件,如图:

android studio 编译控制台错误乱码 android studio编译so,android studio 编译控制台错误乱码 android studio编译so_jni_09,第9张

6、新建cpp文件实现native方法
同级目录下面新建一个c++ source文件去实现native方法,文件名随意起,如图:

android studio 编译控制台错误乱码 android studio编译so,android studio 编译控制台错误乱码 android studio编译so_android stadio_10,第10张

把com_example_asus_myapplication_Demo.h中的内容复制一份到demojni.cpp中,并添加com_example_asus_myapplication_Demo.h的引用(引用要改成引号,不然下面的方法会报红),删掉其他代码,如图

android studio 编译控制台错误乱码 android studio编译so,android studio 编译控制台错误乱码 android studio编译so_android stadio_11,第11张

7、配置CMakeLists.txt文件

接下来是关键,在android studio3.0以前是没有此步骤的,大家看工程目录里面有一个CMakeLists.txt文件,这个文件是新建项目是自动生成的,里面已经写好了系统自动生成的
cpp/native-lib.cpp文件的配置,打开CMakeLists.txt文件,如下,

android studio 编译控制台错误乱码 android studio编译so,android studio 编译控制台错误乱码 android studio编译so_android stadio_12,第12张

上图中native-lib是编译后生成的so文件名字,可以自定义,我们也仿照系统格式自己添加一个,路径一定要写对,添加完成之后,如下:

android studio 编译控制台错误乱码 android studio编译so,android studio 编译控制台错误乱码 android studio编译so_NDK_13,第13张

然后还是在CMakeLists.txt中,target_link_libraries中添加上我们自己的so名字,如下图

android studio 编译控制台错误乱码 android studio编译so,android studio 编译控制台错误乱码 android studio编译so_jni_14,第14张

到此我们基本上已经成功了,然后在Demo.java中添加代码如下,添加的library名字一定要和上图中添加的一样:

android studio 编译控制台错误乱码 android studio编译so,android studio 编译控制台错误乱码 android studio编译so_jni_15,第15张

最后在activity中调用add方法

android studio 编译控制台错误乱码 android studio编译so,android studio 编译控制台错误乱码 android studio编译so_NDK_16,第16张

9、编译工程生成so文件

通过rebuild工程,会在build/intermediates/cmake/debug/obj下面生成各种cpu的so文件。

android studio 编译控制台错误乱码 android studio编译so,android studio 编译控制台错误乱码 android studio编译so_NDK_17,第17张

运行结果如图.

android studio 编译控制台错误乱码 android studio编译so,android studio 编译控制台错误乱码 android studio编译so_NDK_18,第18张



https://www.xamrdz.com/web/2vv1942537.html

相关文章: