地狱全部,
首先,我正在使用Android,当我在Android项目中自动使用本机库时,我对maven构建过程有一些疑问。我说自动化,因为目前我可以采用本机项目(repo)并构建我需要的.so文件(通过maven构建过程)然后我只是复制.so文件并将其放入我的主项目本机libs文件夹(即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的依赖项,但它不能识别它。如何将其添加到我的主项目中?提前谢谢了。
答案 0 :(得分:0)
好的,
所以基本上在.so项目中我使用了&#39; build-helper-maven-plugin&#39;附上我的.so神器。然后在我的主项目中,我使用了&#39; maven-dependency-plugin&#39;将.so文件复制(目标集复制)到本机输出目录。如果有人需要更多信息,请评论。