2014-04-21 5 views
1

Я пишу проект андроидной библиотеки и хотел бы добавить поддержку для maven. Моя библиотека файл проекта ПОМ выглядит следующим образом:Поддержка проектов андроидной библиотеки с maven

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

Мой главный файл проекта ПОМ выглядит следующим образом:

<?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 на устройстве, я получаю NullPointerException при попытке выполнить findById для ресурсов, находящихся внутри проекта библиотеки. Обратите внимание, что часть времени findById возвращает значение, но не всегда правильный тип (например, ожидаемый макет, но есть кнопка). Важно сказать, что при работе в eclipse без maven все работает отлично.

Пожалуйста посоветуйте

ответ

0

Наконец я нашел решение, так что я буду обновлять мой ответ для будущих читателей. Решение этой проблемы состояло в том, чтобы создать файл aar вместо файла apklib, используя maven.