5

我有一个依赖于第三方、仅二进制 JNI 库的 android 项目。使用 ant,我只需将 .so 放在 libs/ 中,将标头放在 jni/ 中即可。

但是,我的其余 android 项目使用 maven,我希望能够将这个库集成到我现有的基于 maven 的项目中,就像我将任何其他库一样(即带有一个<dependency />条目,库自动从公司服务器下载) .

我尝试使用mvn deploy:deploy-filewith-Dpackaging=so和手动上传 .so 文件-Dclassifier=armeabi,并以 zip 格式上传标头并使用 .so 进行部署-Dpackaging=har。但是 NDK 仍然无法检测到库和标头。

我的 Android.mk 是

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := test
LOCAL_LDLIBS := -llog
LOCAL_SHARED_LIBRARIES := my-dependency
LOCAL_SRC_FILES := test.cpp
include $(BUILD_SHARED_LIBRARY)

以及我的 pom 中的依赖

<dependency>
    <groupId>com.thirdparty.my-dependency</groupId>
    <artifactId>my-dependency</artifactId>
    <version>1.0</version>
    <classifier>armeabi</classifier>
    <type>so</type>
</dependency>

在 maven for android 中部署这样的第三方库的最佳方法是什么?

4

1 回答 1

3

在对样本进行了一些修改后,我设法让它编译。

部署很好,但事实证明我需要添加

LOCAL_SHARED_LIBRARIES := $(ANDROID_MAVEN_PLUGIN_LOCAL_SHARED_LIBRARIES)
include $(BUILD_SHARED_LIBRARY)
include $(ANDROID_MAVEN_PLUGIN_MAKEFILE)

到应用程序的Android.mk

于 2013-05-08T06:50:56.263 回答