2014-04-21 123 views
1

我正在寫一個android庫項目,並希望添加對maven的支持。我的圖書館項目POM文件看起來是這樣的:支持與maven的android庫項目

<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會返回值,但並不總是正確的類型(例如,預期的佈局,但有一個按鈕)。有一點很重要,那就是在eclipse中運行時沒有一切都完美。

請提醒

回答

0

最後我找到了解決方案,所以我會爲未來的讀者更新我的答案。 解決此問題的方法是使用maven創建aar文件而不是apklib文件。