美文网首页
Android studio .a静态库的生成与调用

Android studio .a静态库的生成与调用

作者: 仍旧热忱_3619 | 来源:发表于2020-11-12 11:58 被阅读0次

    编写生成.a库

    第一步: 创建JNI的hello程序


    image.png

    第二步:在cpp下创建include/calcul.h


    image.png

    calcul.h

    //
    // Created by Administrator on 2020/11/12.
    //
    
    #ifndef JNITEST_CALCUL_H
    #define JNITEST_CALCUL_H
    
    int add(int a , int b);
    
    #endif //JNITEST_CALCUL_H
    
    

    第三步:写calcul.cpp来实现头文件calcul.h中的方法


    image.png

    calcul.cpp

    #include <jni.h> 
    #include "include/calcul.h" //引用头文件,相当于java中实现接口,头文件为接口,本cpp为实现
    
    int add(int a , int b){
        return a + b;
    }
    

    第四步: 在CMakeLists.txt中加入calcul.cpp


    image.png

    第五步: 在native-lib.cpp中调用add方法


    image.png

    第六步: 在MainActivity中调用


    image.png

    以上是c代码例子编写 , 下面生成.a静态库供别人使用
    打开CMakeLists.txt文件,
    将add_library下的SAHRED改为STATIC,
    将native-lib.cpp删掉 ,
    将MainActivity中native方法删去

    image.png image.png

    直接运行或者编译一下都行,.a文件就会生成了,别人引用就能直接使用里面的方法


    image.png

    使用.a库

    第一步:将.a文件需要的头文件放到指定目录,这里放在了include/下面


    image.png

    第二步:在main下创建jniLibs把需要的.a文件粘贴进去
    ![image.png](https://img.haomeiwen.com/i24519578/de81ec53ca66f87f.png?
    imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

    第三步:修改CMakeLists.txt
    添加include_directories(include/) , 括号里是.a文件的头文件
    添加

    add_library(native-lib STATIC IMPORTED)
    set_target_properties(
            native-lib  #这个一般是.a文件去掉lib和后缀之后的名字,
                        #可以在生成的时候自己设置,
                        #上次没改所以还是native-lib,
                        #与这次项目重名了,
                        #所以这次项目改成了native-lib123
            PROPERTIES IMPORTED_LOCATION
            ${CMAKE_SOURCE_DIR}/../jniLibs/arm64-v8a/libnative-lib.a    #.a文件的路径, ${CMAKE_SOURCE_DIR}这个是cpp下的路径
    )
    

    在 target_link_libraries 中添加

    target_link_libraries( # Specifies the target library.
                            native-lib123
                            native-lib #这个是.a静态库名字
                           # Links the target library to the log library
                           # included in the NDK.
                           ${log-lib} )
    
    image.png
    image.png

    在 MainActivity 中使用


    image.png

    直接使用add()方法,他的实现在.a静态库中


    image.png

    相关文章

      网友评论

          本文标题:Android studio .a静态库的生成与调用

          本文链接:https://www.haomeiwen.com/subject/pgnubktx.html