Maven Repo生成.so文件,在Maven项目中用作依赖项

时间:2016-05-05 14:10:14

标签: java android maven android-ndk .so

地狱全部,

首先,我正在使用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的依赖项,但它不能识别它。如何将其添加到我的主项目中?提前谢谢了。

1 个答案:

答案 0 :(得分:0)

好的,

所以基本上在.so项目中我使用了&#39; build-helper-maven-plugin&#39;附上我的.so神器。然后在我的主项目中,我使用了&#39; maven-dependency-plugin&#39;将.so文件复制(目标集复制)到本机输出目录。如果有人需要更多信息,请评论。