NDK开发相关知识

    xiaoxiao2021-03-25  143

    1.创建本地方法。public static native String getString();

    2.加载库文件。static{ System.loadLibrary("HelloNdk"); }

    下载安装NDK,配置环境

    add Android Native Support 将会出现jni文件夹,即下面Hello_NDk.cpp和Android.mk

    第一种方法

    javah -classpath . -jni com.example.ndk.GetString

    将生成的.h文件拷贝到jni目录下

    第二种方法

    创建一个xml文件

    用ant打开

    用ant执行下面代码,如果不成功,就将javah这行代码改为

    <exec executable="javah" dir="${basedir}/bin/">         <arg value="-classpath"/>         <arg value="classes"/>       <arg value="-d"/>            <arg value="${basedir}/jni"/>            <arg value="-jni"/>            <arg value="com.example.hellondk.GetString"/>            </exec>

    </pre><pre code_snippet_id="1675487" snippet_file_name="blog_20160508_1_2733330" name="code" class="html"><?xml version="1.0" encoding="UTF-8"?>   <!-- ======================================================================         2016年5月8日 下午6:21:49                                                                   HelloNDK            description                              hejia                                                                        ====================================================================== -->   <project name="HelloNDK" default="BuildAllHeaders">       <description>               description       </description>          <!-- =================================              target: BuildAllHeaders                          ================================= -->       <target name="BuildAllHeaders">           <antcall target="BuildGetStringHeaders"> </antcall>           <antcall target="BuildGetIntHeaders"> </antcall>       </target>          <!-- - - - - - - - - - - - - - - - - -              target: BuildGetStringHeaders                                  - - - - - - - - - - - - - - - - - -->       <target name="BuildGetStringHeaders">           <javah destdir="./jni" classpath="./bin/classes/" class="com.example.hellondk.GetString"></javah>       </target>       <!-- =================================              target: BuildGetIntHeaders                          ================================= -->       <target name="BuildGetIntHeaders" >           <javah destdir="./jni" classpath="./bin/classes/" class="com.example.hellondk.GetInt"></javah>       </target>      </project>   然后再jni目录下也会自动生成.h文件

    编辑cpp文件

    #include <jni.h> #include "com_example_hellondk_GetString.h" #include "com_example_hellondk_GetInt.h" JNIEXPORT jstring JNICALL Java_com_example_hellondk_GetString_getString   (JNIEnv *env, jclass){ return env->NewStringUTF("Static Method Call"); } JNIEXPORT jstring JNICALL Java_com_example_hellondk_GetString_getStr   (JNIEnv *env, jobject){ return env->NewStringUTF("Method Call"); } JNIEXPORT jint JNICALL Java_com_example_hellondk_GetString_add   (JNIEnv *env, jobject, jint a, jint b){ return a+b; } JNIEXPORT jint JNICALL Java_com_example_hellondk_GetInt_getInt   (JNIEnv *, jclass){ return 8; } 文件报错,重新启动eclipse就好了

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

    最新回复(0)