我有一个带有 .jar 和 .so 文件的第三方库。
我将 pom.xml 配置如下:
<dependency>
<groupId>com.abc.def</groupId>
<artifactId>sdc</artifactId>
<version>1.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.abc.def</groupId>
<artifactId>sdc</artifactId>
<version>3</version>
<scope>compile</scope>
<type>so</type>
</dependency>
使用此配置,我通过 Intellij 成功测试,目标下的 apk 文件包含 lib/armeabi/sdc.so 之类的结构
但是,在我这样做之后mvn clean package
,生成的 apk 文件不包含 sdc.so 文件,并且在 android 设备上安装 apk 文件后,lib 文件夹为空。
通过互联网搜索,并没有找到答案。
顺便说一句,我确实添加<nativeLibrariesDirectory>${project.basedir}/libs</nativeLibrariesDirectory>
到 pluginManagement 中,因为提到的本机库(.so 文件)没有添加到 android 项目中,但没有帮助。
更新:
如果有人遇到与我相同的问题,即 SO 文件没有复制过来,请尝试手动复制 so 文件,如下所示:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.1</version>
<executions>
<execution>
<id>copy</id>
<phase>prepare-package</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>com.abc.def</groupId>
<artifactId>libdef</artifactId>
<version>2.1.3</version>
<type>so</type>
<destFileName>libdef.so</destFileName>
</artifactItem>
</artifactItems>
<outputDirectory>${project.build.directory}/libs/armeabi</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>