用maven支持android库项目

时间:2014-04-21 19:40:08

标签: java android maven maven-plugin apklib

我正在编写一个android库项目,并希望添加对maven的支持。我的库项目pom文件如下所示:

   <project xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>my_group_id</groupId>
  <artifactId>my_artifactId</artifactId>
  <version>1.0.1</version>
  <packaging>apklib</packaging>
  <name>My Library Project</name>

  <dependencies>
    <dependency>
      <groupId>com.google.android</groupId>
      <artifactId>android</artifactId>
      <version>4.1.1.4</version>
      <scope>provided</scope>
    </dependency>   
  </dependencies>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <build>
    <sourceDirectory>src</sourceDirectory>
    <finalName>${project.artifactId}</finalName>
    <plugins>
      <plugin>
        <groupId>com.jayway.maven.plugins.android.generation2</groupId>
        <artifactId>android-maven-plugin</artifactId>
          <version>3.8.2</version>
          <extensions>true</extensions>   
        <configuration>
          <sdk>
            <platform>19</platform>
          </sdk>
        </configuration>     
      </plugin>
    </plugins>
  </build>
</project>

我的主项目pom文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.simpligility.android</groupId>
  <artifactId>helloflashlight</artifactId>
  <version>1.0.0</version>
  <packaging>apk</packaging>

  <name>HelloFlashlight</name>

  <dependencies> 
    <dependency>
      <groupId>com.google.android</groupId>
      <artifactId>android</artifactId>
      <version>4.1.1.4</version>
      <scope>provided</scope>
    </dependency>        
    <dependency>
  <groupId>my_group_id</groupId>
  <artifactId>my_artifactId</artifactId>
  <version>1.0.1</version>
      <type>apklib</type>
    </dependency>               
  </dependencies>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <build>
    <sourceDirectory>src</sourceDirectory>
    <finalName>${project.artifactId}</finalName>
    <plugins>
      <plugin>
        <groupId>com.jayway.maven.plugins.android.generation2</groupId>
        <artifactId>android-maven-plugin</artifactId>
          <version>3.8.2</version>
          <extensions>true</extensions>   
        <configuration>
          <sdk>
            <platform>19</platform>
          </sdk>
        </configuration>     
      </plugin>
    </plugins>
  </build>

</project>

我正在使用以下方法将库项目安装到我的本地存储库:

mvn clean install

然后我使用以下方法编译并将主项目安装到我的本地存储库:

mvn clean install

使用:

生成apk
mvn android:deploy

现在,当我使用maven编译项目时出现问题。项目编译成功,但是当我在设备上运行apk时,我在尝试对库项目内的资源执行findById时收到NullPointerException。请注意,部分时间findById确实返回值,但并不总是正确的类型(例如,预期的布局,但有一个按钮)。重要的是要说,当没有maven在eclipse中运行时,一切都很完美。

请告知

1 个答案:

答案 0 :(得分:0)

最后我找到了解决方案,所以我会为未来的读者更新我的答案。 这个问题的解决方案是使用maven创建aar文件而不是apklib文件。