AndroidNDK生成so文件配置

    xiaoxiao2021-12-14  15

    废话少说打开androidStudio,新建一个工程 NDKTest  

    新建完毕  

    依次打开 File->ProjectStruct  得到下面图 

    检查第三行是否为空,是则代表ndk还没下载,直接点击下载即可 

    下载完毕后,打开设置,在搜索那里输入Exter,选择ExternalTools 

    注意!默认情况下这里是空的

    点击左下角那个+号,添加这几个工具路径 

    分别是javah,ndk-build,ndk-build clean,依次如下图  

    Program                       $JDKPath$/bin/javah (javah存放路径) 

    Parameters                  -classpath $Classpath$-v -jni $FileClass$ (命令参数) 

    Working directory       $SourcepathEntry$/../jni  (这个是你的c/c++文件存放路径) 

    第一个是ndk的文件路径,默认下载地址是在你的sdk包下面

    Working directory    $ProjectFileDir$/app/src/main  

    这个跟ndk-build相比只是第二行多了个clean 

    到这里环境就配置完毕了 

    然后将目录切换到project 

    右键main-NEW-floder-jniFloder-finish 

    此时会多出一个与java并级的目录jni 

    好,先把这个目录放一边,打开java,新建一个类NdkTest,敲上如下代码 

     然后打开build.gradle

    在defaultConfig里面加入下面几句 

    ndk{

                moduleName "MyJniLib"

            } 

            sourceSets.main{ 

                jni.srcDirs=[] 

                jniLibs.srcDir "src/main/libs" 

            } 

    打开gradle.properties 

    最下面加一句 android.useDeprecatedNdk=true 

    点击Build-Make Project 

    make完毕后 

    右键刚才新建的类(NdkTest)选择javah 

    build完后,jni文件下会出现  

     

    里面是这样的,这是该c库的头文件

      

    右键jni文件,新建一个file,起名为MyJniLib.cpp

    导入生成的头文件 

    #include"com_zy_ndktest_NdkTest.h" 

    将头文件的函数名复制过来实现 

    JNIEXPORT jstring JNICALL Java_com_zy_ndktest_NdkTest_getString(JNIEnv *e, jobject) 

        return e->NewStringUTF("hello ndk !!!"); 

    文件如图 

    最后,继续在jni文件中新建两个文件—>Android.mk和Application.mk 

    在Android.mk中写下如下几句 

    LOCAL_PATH :=$(call my-dir) 

    include $(CLEAR_VARS) 

    LOCAL_MODULE :=MyJniLib 

    LOCAL_SRC_FILES=MyJniLib.cpp 

    include $(BUILD_SHARED_LIBRARY) 

    Application.mk中 

    APP_MODULES :=MyJniLib 

    APP_ABI :=all 

    然后,右键jni文件,选择ndk-build  

    让其build一会,so库就生成了,并存放在之前指定的libs中

    最后运行检验 

    如图,可以看到log中的hello ndk!!!   

    成功!! 

    转载请注明原文地址: https://ju.6miu.com/read-965616.html

    最新回复(0)