将android ndk依赖项部署到Maven存储库

lar*_*yde 5 maven android-ndk android-maven-plugin

我有一个依赖第三方,仅二进制JNI库的android项目。使用ant,我可以将.so放到libs /中,将标头放到jni /中,然后完成。

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

我曾尝试使用手动上传的.so文件,mvn deploy:deploy-file-Dpackaging=so-Dclassifier=armeabi,和在一个zip上传的标题和使用部署-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)
Run Code Online (Sandbox Code Playgroud)

和我pom中的依赖

<dependency>
    <groupId>com.thirdparty.my-dependency</groupId>
    <artifactId>my-dependency</artifactId>
    <version>1.0</version>
    <classifier>armeabi</classifier>
    <type>so</type>
</dependency>
Run Code Online (Sandbox Code Playgroud)

在Android的Maven中部署这样的第三方库的最佳方法是什么?

lar*_*yde 3

经过对示例的一些修改后,我成功地编译了它。

部署没问题,但事实证明我需要添加

LOCAL_SHARED_LIBRARIES := $(ANDROID_MAVEN_PLUGIN_LOCAL_SHARED_LIBRARIES)
include $(BUILD_SHARED_LIBRARY)
include $(ANDROID_MAVEN_PLUGIN_MAKEFILE)
Run Code Online (Sandbox Code Playgroud)

到应用程序的Android.mk