Android Studio下的项目如何加入jni(NDKbuild)
程序员文章站
2022-04-26 15:37:29
这里介绍一下如果在原有的项目上加入jni的方法。因为NDKBuild我们之前在eclipse上面使用过,所以对它比较熟悉,这里就只说下NDKbuild。
升级到了AndroidS...
这里介绍一下如果在原有的项目上加入jni的方法。因为NDKBuild我们之前在eclipse上面使用过,所以对它比较熟悉,这里就只说下NDKbuild。
升级到了AndroidStudio3.0.1之后,支持的buildToolsVersion 也是比较高的版本26.0.2。而gradle的版本是3.0.1。
那么,如果我们手头上有C或者C++的代码,我们怎么加入到项目里面呢?
1.创建引用so库的java文件,和创建native方法。
public class MyMeetJni { static { System.loadLibrary("myMeetJni"); } public static native String helloJni(); public static native int sum(int a, int b); public static native String getCode(String source); }
2.Android Studio环境下,使用Terminal工具,输入指令。
javac com/kv/mymeet/MyMeetJni.java这个时候目录下会生成MyMeetJni.class。
再输入指令
javah -jni com.kv.mymeet.MyMeetJni这个时候目录下会生成com_kv_mymeet_MyMeetJni.h
3.创建jni目录,创建c文件。
例如创建main.c,将上面生成的内容直接覆盖到main.c里面。方法里面需要加入参数的变量名称。下面为例。
/* DO NOT EDIT THIS FILE - it is machine generated */ #include /* Header for class com_kv_mymeet_MyMeetJni */ #ifndef _Included_com_kv_mymeet_MyMeetJni #define _Included_com_kv_mymeet_MyMeetJni #ifdef __cplusplus extern "C" { #endif /* * Class: com_kv_mymeet_MyMeetJni * Method: helloJni * Signature: ()Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_com_kv_mymeet_MyMeetJni_helloJni(JNIEnv * env, jclass jobj) { return (*env)->NewStringUTF(env,"hello JNI world"); } /* * Class: com_kv_mymeet_MyMeetJni * Method: sum * Signature: (II)I */ JNIEXPORT jint JNICALL Java_com_kv_mymeet_MyMeetJni_sum(JNIEnv * env, jclass jobj, jint a, jint b) { return a + b; } /* * Class: com_kv_mymeet_MyMeetJni * Method: getCode * Signature: (Ljava/lang/String;)Ljava/lang/String; */ JNIEXPORT jstring JNICALL Java_com_kv_mymeet_MyMeetJni_getCode(JNIEnv * env, jclass jobj, jstring source) { return source; } #ifdef __cplusplus } #endif #endif
4.创建Android.mk文件
通常NDK目录下面有个sample目录,里面有许多实例,我们选其中一个实例,点进去拷贝Android.mk,并将它放在项目的jni目录下面,稍做修改如下。
LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE:= myMeetJni LOCAL_SRC_FILES:= main.c LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH) LOCAL_EXPORT_LDLIBS := -llog include $(BUILD_SHARED_LIBRARY)
5.Android Studio, android视图下来,选定的module右键,点击Link C++ project with gradle。
选择ndk-build方式的话,指定Android.mk文件路径。
即builde.gradle文件下会添加这段代码。
externalNativeBuild { ndkBuild { path 'src/main/jni/Android.mk' } }
推荐阅读
-
Android Studio下的项目如何加入jni(NDKbuild)
-
如何在Android studio上运行从github上下载的RN项目
-
通过命令行把一个Android Studio的项目如何上传到gitlab上
-
Ubuntu下如何创建启动Android studio的快捷方式?
-
解决mac下Android Studio新建项目时自动下载gradle过慢的问题
-
Android Studio 3.4.2 之后创建的项目,如何恢复低版本API,AndroidX 如何恢复 support 包
-
Android Studio下的项目如何加入jni(NDKbuild)
-
Ubuntu下如何创建启动Android studio的快捷方式?
-
如何在Android studio上运行从github上下载的RN项目
-
通过命令行把一个Android Studio的项目如何上传到gitlab上