AndroidNDK生成so文件配置

来源:互联网 发布:linux shell debug 编辑:程序博客网 时间:2024/05/16 10:29

废话少说打开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!!!   

成功!! 


0 0