2014-04-21 4 views
1

나는 안드로이드 라이브러리 프로젝트를 작성 중이며 Maven에 대한 지원을 추가하려고합니다. 내 라이브러리 프로젝트 POM 파일은 다음과 같다 :Maven을 사용한 안드로이드 라이브러리 프로젝트 지원

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

<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 파일은 다음과 같습니다

그러면 로컬 저장소에 기본 프로젝트를 컴파일하고 설치합니다 :

및 사용하여 APK 생성 : 나는 받는다는와 함께 프로젝트를 컴파일 할 때

mvn android:deploy 

지금 문제가 발생합니다. 프로젝트가 성공적으로 컴파일되지만 장치에서 apk를 실행하면 라이브러리 프로젝트 내부의 리소스에 대해 findById를 수행하려고 할 때 NullPointerException이 발생합니다. findById가 반환하는 값의 일부는 항상 정확한 유형이 아니라는 것을 유의하십시오 (예 : 예상 레이아웃이지만 버튼이 있음). 모든 것이 없으면 Eclipse에서 실행될 때 모든 것이 완벽하게 작동한다고 말하는 것이 중요합니다.

알려주십시오

답변

0

마지막으로 해결책을 찾았으므로 향후 독자를 위해 답변을 업데이트하겠습니다. 이 문제에 대한 해결책은 maven을 사용하여 apklib 파일 대신 aar 파일을 만드는 것입니다.