如何使用Maven在apklib中包含两个体系结构的原生.so文件?

时间:2013-04-12 16:11:47

标签: android maven android-maven-plugin

我有两个.so文件,我需要用apklib打包,具有以下结构:

- libs
-- armeabi
--- libvinit.so
-- armeabi-v7a
--- libvinit.so

我知道我可以使用install-file将它上传到我的本地仓库并将它们声明为我的pom中的依赖项,但问题是它们具有相同的名称,并且位于不同的文件夹中,这很重要。我如何确保当Maven打包apklib时将强制执行此结构?

2 个答案:

答案 0 :(得分:0)

我很难找到类似问题的答案(包括第三方提供的共享库)。我最终直接通过ndk-build

使用了exec-maven-plugin
<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将使用libs目录作为本机库的源,将其捆绑到生成的apk(或apklib)中。

您可能希望为libs生成的objndk-build目录添加清理任务。

答案 1 :(得分:0)

要获得所有体系结构,只需将ndkArchitecture配置添加到您的pom.xml:

<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)