您现在的位置是:网站首页> Android

锋邢天下 用AndroidStudio创建so

  • Android
  • 2023-08-25
  • 623人已阅读
摘要

Android开发中经常遇到so,下面介绍用Android Studio创建so。Android Studio版本3.0.1.


一 编写代码


1 创建java类myJNI.java,并且声明一个native方法HelloWorld。


  native方法由java声明,由c/c++实现。

1.png

  


2  编译myJNI.java,生成class文件myJNI.class


  打开命令行工具,cd进入myJNI.java所在的目录,然后用javac myJNI.java命令编译myJNI.java,成功后在myJNI.java目录下生成myJNI.class文件

2.png

  


3 生成.h文件。


  cd到F:\CreateSo\app\src\main\java目录,使用javah -jni 包名.类名 命令生成.h文件。示例项目包名com.createso,类名myJNI。成功后会在该目录生成com_createso_myJNI.h文件。

3.png

  


4 创建c代码文件


  在main目录下新建一个jni文件夹,新建一个文件命名为com_createso_myJNI.c,把com_createso_myJNI.h文件里的内容复制到main.c中,并且实现Java_com_createso_myJNI_HelloWorld方法。


   4.png

5.png


二 填写配置


1 在Android Studio里下载CMake和LLDB,File->Setting->Appearance->System Settings->Android SDK,点击SDK Tools标签页,勾选CMake和LLDB,点击OK开始下载。


2 在当前工程app的build.gradle的defaultConfig节点中加入:


  // 使用Cmake工具

  externalNativeBuild {

    cmake {

      cppFlags ""

      //生成多个版本的so文件

      abiFilters 'armeabi','armeabi-v7a','x86'

           }


            }


3 在build.gradle的android节点中,加入:


  //配置CMakeList.txt路径


  externalNativeBuild{


    cmake{


      path "CMakeLists.txt"


       }


            }


4 添加CMakeLists.txt文件到当前工程app的build.gradle文件同级目录下,CMakeLists.txt内容如下:



  cmake_minimum_required(VERSION 3.4.1)

  add_library( 

  # 设置so文件名称.

  TestSo



  # 设置这个so文件为共享.

  SHARED


  # 指向要编译的c文件.

  src/main/jni/chenxi_com_serialportjni_SerialPort.c)


  find_library(

  log-lib


  # Specifies the name of the NDK library that

  # you want CMake to locate.

  log )


  # Specifies libraries CMake should link to your target library. You

  # can link multiple libraries, such as libraries you define in this

  # build script, prebuilt third-party libraries, or system libraries.


  target_link_libraries( # Specifies the target library.

    # 指定目标库.

    TestSo


    # Links the target library to the log library

    # included in the NDK.

    ${log-lib} )


 三 编译输出SO


  如果项目太大编译一次时间太长,这儿我们只编译创建so的这个模块:Android Studio中点击Build->Make Module "app"


  编译完成后在F:\CreateSo\app\build\intermediates\cmake\debug\obj路径下生成各个平台的so,生成的so会在指定名字的前面加上lib,即"libTestSo"。


Top