Android 如何使用Maven在apklib中包含两种体系结构的本机.so文件?

Android 如何使用Maven在apklib中包含两种体系结构的本机.so文件?,android,maven,android-maven-plugin,Android,Maven,Android Maven Plugin,我有两个.so文件需要用apklib打包,结构如下: - libs -- armeabi --- libvinit.so -- armeabi-v7a --- libvinit.so 我知道我可以使用install file将其上传到本地repo,并在pom中将其声明为依赖项,但问题是它们具有相同的名称,并且位于不同的文件夹中,这一点很重要。我如何确保在Maven打包apklib时,此结构将得到实施?我正在努力找到类似问题的答案(包括第三方提供的共享库)。我最终通过execmaven插件直接使

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

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

我知道我可以使用install file将其上传到本地repo,并在pom中将其声明为依赖项,但问题是它们具有相同的名称,并且位于不同的文件夹中,这一点很重要。我如何确保在Maven打包apklib时,此结构将得到实施?

我正在努力找到类似问题的答案(包括第三方提供的共享库)。我最终通过
execmaven插件直接使用了
ndk构建

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

org.codehaus.mojo
execmaven插件
1.1.1
编译
执行官
jni
$ANDROID\u NDK\u HOME/NDK build
这最终会将生成的库放在本机项目的
libs
目录中。android maven插件将使用libs目录作为本机库的源,并将其绑定到生成的apk(或apklib)中


您可能希望为
ndk build

生成的
libs
obj
目录添加一个清理任务,只需将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>

com.jayway.maven.plugins.android.generation2
安卓maven插件
${sdk.platform}
armeabi armeabi-v7a x86

但是为了工作,maven android插件版本必须是:3.8.2(使用maven 3.1.1)

您需要一个发布工件吗?为什么不拥有两个不同的构建,每个架构一个?@noahz是的,只有一个发布工件。这是针对APK(Android可执行文件)的。为什么在一次下载中需要两种架构?为什么不安装两个不同的安装包,每个架构一个?@noahz,因为googleplay不是这样工作的。每个包一个应用程序。改变软件包意味着拥有两个应用程序,这并不理想。在智能手机应用程序的世界里,你想要的是所谓的“通用应用程序”。