我有两个.so文件,我需要用apklib打包,结构如下:
- libs
-- armeabi
--- libvinit.so
-- armeabi-v7a
--- libvinit.so
我知道我可以使用install-file将其上传到我的本地repo并在我的pom中声明它们为依赖项,但问题是它们具有相同的名称,并且位于不同的文件夹中,这很重要。我如何确保当Maven打包apklib时,该结构将被强制执行?
我正在努力寻找类似问题的答案(包括第三方提供的共享库)。我最终通过exec-maven-plugin
直接使用ndk-build
:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.1.1</version>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<workingDirectory>jni</workingDirectory>
<executable>$ANDROID_NDK_HOME/ndk-build</executable>
</configuration>
</plugin>
最终将生成的库放置在本地项目的libs
目录中。android-maven-plugin
将使用lib目录作为要绑定到最终apk(或apklib)中的本机库的源。
您可能需要为ndk-build
生成的libs
和obj
目录添加一个清理任务。
要获取所有架构,只需在pom.xml中添加ndkArchitecture配置:
<plugin>
<groupId>com.jayway.maven.plugins.android.generation2</groupId>
<artifactId>android-maven-plugin</artifactId>
<configuration>
<sdk>
<platform>${sdk.platform}</platform>
</sdk>
<ndkArchitecture>armeabi armeabi-v7a x86</ndkArchitecture>
</configuration>
</plugin>
但是为了工作maven android插件版本必须是:3.8.2(与maven 3.1.1)