Framework加载现有第三方JAR包或SO库

Framework加载现有第三方JAR包或SO库,第1张

LOCAL_PATH:= $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

LOCAL_MODULE := libdatabase_sqlcipher.so

LOCAL_MODULE_CLASS := SHARED_LIBRARIES

LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/../lib //指定生成路径,默认到/system/lib64,由于是32位库,所以需重新指定

LOCAL_SRC_FILES := jniLibs/armeabi/$(LOCAL_MODULE)

#OVERRIDE_BUILD_MODULE_PATH := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)

include $(BUILD_PREBUILT)

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

LOCAL_PREBUILT_LIBS :=libdatabase_sqlcipher:jniLibs/armeabi/libdatabase_sqlcipher.so

LOCAL_PREBUILT_LIBS +=libsqlcipher_android:jniLibs/armeabi/libsqlcipher_android.so

LOCAL_PREBUILT_LIBS +=libstlport_shared:jniLibs/armeabi/libstlport_shared.so

#LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/../lib

include $(BUILD_MULTI_PREBUILT)

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

LOCAL_MODULE := sqlcipher.jar

LOCAL_MODULE_CLASS := JAVA_LIBRARIES

LOCAL_MODULE_PATH := $(TARGET_OUT_JAVA_LIBRARIES)//最终生成在/system/framework下面

LOCAL_SRC_FILES := libs/sqlcipher.jar

include $(BUILD_PREBUILT)

include $(CLEAR_VARS)

LOCAL_MODULE_TAGS := optional

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := sqlcipher:libs/sqlcipher.jar

include $(BUILD_MULTI_PREBUILT)

#LOCAL_JAVA_LIBRARIES += org.apache.http.legacy

LOCAL_JNI_SHARED_LIBRARIES := libdatabase_sqlcipher libsqlcipher_android libstlport_shared

LOCAL_PRIVILEGED_MODULE := true

include $(BUILD_PACKAGE)

# Use the folloing include to make our test apk.

include $(call all-makefiles-under,$(LOCAL_PATH))

Android1、下载NDK,并在Eclipse中配置路径:

2、创建一个Android工程hellojni。右键工程,选择Add Native Support自动生成C/C++工程:

3、修改C/C++代码,配置一下Android.mk:

4、点击保存就会自动生成动态链接库libhellojni.so。也可以通过命令ndk-build手动生成。

Windows

1、打开Visual Studio,创建一个Win32工程hellojni:

2、在应用类型中选择DLL:

3、配置头文件和库的路径:

4、点击build就可以生成hellojni.dll。

Mac OS X

1、打开Xcode,创建一个工程hellojni :

2、framework选择STL:

3、在build设置里,配置JavaVM 头文件路径和库路径:

4、点击build就可以生成libhellojni.dylib。

Java工程中如何使用JNI:

1、申明native接口:

public native String stringFromJNI()

public native static void nativePrint()

2、加载动态链接库:

static {

System.loadLibrary("hellojni")

}

注意以下几点:导入的文件名要和你定义的类同名;resource里面添加的的new resource的setting项里要添加在library中的文件路径,case中在new suit时的setting项里要添加在resource中的文件路径,它们是一个调用一个的


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11258662.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存