Сборка проекта Android с собственными библиотеками внутри с использованием maven

#java #android #eclipse #maven #android-maven-plugin

#java #Android #eclipse #maven #android-maven-plugin

Вопрос:

У меня есть проект Android с Maven, который использует внутренние библиотеки. Когда я запускаю установку maven, библиотека so не находится внутри сгенерированного файла jar и, следовательно, не находится внутри созданного apk. Я использую Eclipse с плагином maven и android maven v.3.7.0.

Мой pom.xml является:

     <build>
    <sourceDirectory>src</sourceDirectory>
    <finalName>../bin/${project.artifactId}</finalName>
    <plugins>
        <plugin>
            <groupId>com.jayway.maven.plugins.android.generation2</groupId>
            <artifactId>android-maven-plugin</artifactId>
            <version>3.7.0</version>
            <configuration>
                <nativeLibrariesDirectory>${project.basedir}/libs</nativeLibrariesDirectory>
                <sdk>
                    <path>${env.ANDROID_HOME}</path>
                    <platform>15</platform>
                </sdk>
            </configuration>
            <extensions>true</extensions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
    </plugins>
</build>
  

Похоже, что тег nativeLibrariesDirectory не работает для меня.

Есть идеи по устранению этой проблемы? Спасибо

Ответ №1:

Вот как включить собственные библиотеки в ваш apk:

     <build>
    <finalName>${project.artifactId}</finalName>
    <plugins>
        <plugin>
            <groupId>com.simpligility.maven.plugins</groupId>
            <artifactId>android-maven-plugin</artifactId>
            <extensions>true</extensions>
            <configuration>
                <manifest>
                    <debuggable>true</debuggable>
                </manifest>
                <!-- Where the native files are located; in the future we should use src/main/libs -->
                <nativeLibrariesDirectory>${project.basedir}/libs</nativeLibrariesDirectory>                
            </configuration>
            <executions>
                <execution>
                    <id>manifestUpdate</id>
                    <phase>process-resources</phase>
                    <goals>
                        <goal>manifest-update</goal>
                    </goals>
                </execution>
                <execution>
                    <id>alignApk</id>
                    <phase>package</phase>
                    <goals>
                        <goal>zipalign</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
  

Ответ №2:

Проект Android для Maven Eclipse пока не поддерживает собственные библиотеки. Если вы хотите, чтобы это поддерживалось, отправьте запрос на извлечение.

Комментарии:

1. Это больше не действует в последнем плагине maven; смотрите Мой Ответ ниже для правильной записи pom.