【发布时间】:2016-05-05 14:10:13
【问题描述】:
地狱,
首先,我正在使用 Android,当涉及到在我的 Android 项目中自动使用本机库时,我对 maven 构建过程有一些疑问。我说自动化,因为目前我可以获取本机项目(repo)并构建我需要的 .so 文件(通过 maven 构建过程)然后我只需复制该 .so 文件并将其放入我的主项目本机库文件夹(即 mainProject /src/main/libs/armeabi-v7a/nativeLib.so)。所以...我的本机项目 pom.xml 踢出 .so 文件如下所示(构建区域)
<packaging>so</packaging>
<properties>
<android.ndk.args>V=1 -B NDK_DEBUG=1 -j8</android.ndk.args>
<arch>armeabi-v7a</arch>
<mavenAntrunPluginVersion>1.8</mavenAntrunPluginVersion>
</properties>
<build>
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-webdav</artifactId>
<version>1.0-beta-2</version>
</extension>
</extensions>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>${mavenAntrunPluginVersion}</version>
<executions>
<execution>
<phase>validate</phase>
<configuration>
<tasks>
<exec
dir="${project.basedir}/src/main/java/com/abc/myClass"
executable="javac"
failonerror="true">
<arg value="myClass.java"/>
</exec>
<exec
dir="${project.basedir}"
executable="javah"
failonerror="true">
<arg value="-d"/>
<arg value="${project.basedir}/target/jni/include"/>
<arg value="-classpath"/>
<arg value="${project.basedir}/src/main/java"/>
<arg value="com.abc.myClass.MyClass"/>
</exec>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.simpligility.maven.plugins</groupId>
<artifactId>android-ndk-maven-plugin</artifactId>
<version>1.0.1-SNAPSHOT</version>
<extensions>true</extensions>
<configuration>
<target>${project.artifactId}</target>
<finalLibraryName>${project.artifactId}</finalLibraryName>
<ndkPath>${android.ndk.path}</ndkPath>
<applicationMakefile>src/main/cpp/Application.mk</applicationMakefile>
<makefile>src/main/cpp/Android.mk</makefile>
<architectures>${arch}</architectures>
<additionalCommandline>${android.ndk.args}</additionalCommandline>
<librariesOutputDirectory>${project.build.directory}/ndk-libs</librariesOutputDirectory>
<objectsOutputDirectory>${project.build.directory}/ndk-obj</objectsOutputDirectory>
<headerFilesDirectives>
<headerFilesDirective>
<directory>${basedir}/src/main/cpp</directory>
<includes>
<include>**\/*.hpp</include>
</includes>
</headerFilesDirective>
</headerFilesDirectives>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
所以这会将 .so 扔到 myNativeProject/target/ndk-obj/armeabi-v7a/nativeLib.so 中。然后我通常将其复制到我的主项目中。我尝试使这个项目成为 .so 类型的依赖项,但它无法识别它。如何将其添加到我的主项目中?提前谢谢了。
【问题讨论】:
-
您为什么使用
SNAPSHOT版本的android-ndk-maven-plugin。我建议使用较新的发布版本。 -
会做,我仍然可以构建项目。只需要知道如何将我的主要项目指向这个 .so
标签: java android maven android-ndk .so