2016-05-05 36 views
0

地獄所有,Maven的回購產生.so文件,如扶養使用Maven項目

首先,我與Android的工作和我對Maven構建過程中的一些問題,當涉及到自動化的使用我的Android項目中的本地庫。我說自動化,因爲目前我可以採取本地項目(回購),並建立我需要的.so文件(通過Maven構建過程),然後我只是複製該.so文件,並將其放在我的主項目本地庫文件夾(即mainProject /src/main/libs/armeabi-v7a/nativeLib.so)。所以...我是踢出來的.so文件本地項目的pom.xml如下所示(建成區)

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

所以,這將引發的。所以到myNativeProject /目標/ NDK-OBJ/armeabi- V7A/nativeLib.so。然後我通常會將其複製到我的主項目中。我嘗試使這個項目與類型.so的依賴關係,但它不承認它。我如何將此添加到我的主項目中?提前謝謝了。

+0

爲什麼使用[SNAPSHOT]版本的[android-ndk-maven-plugin](http://simpligility.github.io/android-ndk-maven-plugin/)。我會建議使用更新的發行版本。 – khmarbaise

+0

會不會,我仍然可以建立這個項目。只需要知道如何將我的主項目指向這個.so –

回答

0

好吧,

所以在項目的.so基本上我所使用的「集結幫手 - Maven的插件」附上我的。所以神器。然後在我的主項目中,我使用'maven-dependency-plugin'將.so文件複製(設置爲目標集)到本地輸出目錄。如有人需要更多信息,請發表評論。