在看完Maven开发Android指南 2 配置android-maven-plugin后,有人会疑惑怎么没有讲android-maven-plugin。这是Maven的特性之一,不需要手工下载plugin,配置pom.xml文件,只要是Maven Central 中有的,maven会自动下载对应的插件。

 

创建项目分两种:手工创建和使用Maven Archetypes

 

手工创建:

 

使用android提供的工具创建项目:

http://developer.android.com/tools/projects/projects-cmdline.html

android create project \
--target <target_ID> \
--name <your_project_name> \
--path path/to/your/project \
--activity <your_activity_name> \
--package <your_package_namespace>
 
Maven Archetypes:
 
开始一个新的项目可以使用Maven Archetype Plugin来创建项目的基本构架。有很多Android Maven Archetypes。如 android-with-test-archetype:创建包含测试代码的Android工程;android-release-archetype创建包含发布功能的Android工程。
 
本例中将使用android-quickstart这个Maven Archetype Plugin。在Maven Central中搜索android-quickstart查询Latest Version,目前最新的是1.0.8,在-DarchetypeVersion=1.0.8
 
archetypeArtifactId:Maven Archetype Plugin的ID
archetypeGroupId:Maven Archetype Plugin的类别
archetypeVersion:Maven Archetype Plugin的版本号
groupId:工程的类别(可以理解为JAVA包名)
artifactId:工程的ID(可以理解为工程的名称)
 
mvn archetype:generate -DarchetypeArtifactId=android-quickstart -DarchetypeGroupId=de.akquinet.android.archetypes -DarchetypeVersion=1.0.8   -DgroupId=com.study.android -DartifactId=HelloMavenAndroid
 
Generating project in Interactive mode
 
一路回车就可以创建HelloMavenAndroid工程
 
在HelloMavenAndroid文件内,打开pom.xml
<?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.study.android</groupId>
    <artifactId>HelloMavenAndroid</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>apk</packaging>
    <name>HelloMavenAndroid</name>
 
    <properties>
        <platform.version> 2.3.3
            </platform.version>
    </properties>
 
    <dependencies>
        <dependency>
            <groupId>com.google.android</groupId>
            <artifactId>android</artifactId>
            <version>${platform.version}</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
 
    <build>
        <plugins>
            <plugin>
                <groupId>com.jayway.maven.plugins.android.generation2</groupId>
                <artifactId>android-maven-plugin</artifactId>
                <version>3.1.1</version>
                <configuration>
                    <androidManifestFile>${project.basedir}/AndroidManifest.xml</androidManifestFile>
                    <assetsDirectory>${project.basedir}/assets</assetsDirectory>
                    <resourceDirectory>${project.basedir}/res</resourceDirectory>
                    <nativeLibrariesDirectory>${project.basedir}/src/main/native</nativeLibrariesDirectory>
                    <sdk>
                        <platform>10</platform>
                    </sdk>
                                        <undeployBeforeDeploy>true</undeployBeforeDeploy>
                </configuration>
                <extensions>true</extensions>
            </plugin>
 
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
 
在这个pom.xml文件中高亮部分,分别是:
打包的类型:apk
使用Android平台:2.3.3(指向properties.platform.version)
配置Android Maven Plugin:3.1.1
 
一般的JAVA工程打包的类型是jar或者是war,而android工程打包的类型是apk。在执行中,告诉Android Maven Plugin生成的文件类型是apk。Android Maven Plugin会负责调用Android SDK将JAVA字节码转换成Dalvik 虚拟机识别的内容。在配置plugin中,Android Maven Plugin必须声明这是扩展的插件(<extensions>true</extensions>)。平台的版本和平台号码需要对应,<version>2.3.3</version>和<platform>10</platform>,可以在API Level找到对应的关系。
 
依赖的Android平台可以在Maven Central查询到。在依赖中声明<scope>provided</scope>是很有必要的。意思是告诉Maven在打包是不用将Android SDK提供的jar打包到应用中。
 
创建AVD:
 
参考:详解如何创建和使用AVD
请注意在Target栏位选择:Android 2.3.3 – API Level 10
 
 
 
运行:
 
使用AVD Manager.exe创建好AVD,并Start后,
进入HelloMavenAndroid,输入maven命令,最后在模拟器中看到Hello HelloMavenAndroid
 
cd HelloMavenAndroid
mvn android:emulator-start
mvn clean package android:deploy android:run

名词解释:

Maven Archetype Plugin:The Archetype Plugin allows the user to create a Maven project from an existing template called an archetype.

 

 

 

参考:

http://www.sonatype.com/books/mvnref-book/reference/android-dev-sect-helloandroidexample.html

http://www.sonatype.com/books/mvnref-book/reference/android-dev-sect-archetype.html

http://code.google.com/p/maven-android-plugin/wiki/GettingStarted

http://developer.android.com/tools/projects/projects-cmdline.html

http://maven.apache.org/archetype/maven-archetype-plugin/

http://search.maven.org/

http://www.jizhuomi.com/android/environment/269.html

Android官方开发团队致力于为Ecilpse插件提供可靠的支持,而android-maven-plugin致力于将Maven,Android和Eclipse串联在一起。

 

m2e-android是一个 Maven Integration for Eclipse (m2e) plug-in,为Android Developer Tools (ADT)和 Maven Android Plugin添加Maven支持,为ADT提供Maven依赖管理的特性。

 

安装m2e-android需要Eclipse Indigo or Juno (低版本的Eclispe未提供Eclipse Marketplace)

 

Help -> Eclipse Marketplace... 输入 "android m2e".点击Install(包含了Android Development Toolkit 和Maven for Eclipse m2e plug-in)。

创建项目:

如果是已经使用《Maven开发Android指南 3 使用Android Maven Archetypes 创建新项目》的方法创建项目,直接使用Eclipse Import:File->Maven->Existing Maven Projects

 

也可以使用m2e-android利用Maven Android archetypes创建新的项目:

 

直接Next

选择All Catalogs,Filter输入de.akquinet.android.archetypes

在Group Id、Artifact Id和Package输入名称

创建完后,可能有错。

右键Properties查看,提示为缺少src/test/java文件夹。

在工程目录下新建对应文件夹。

参照《Maven开发Android指南 3 使用Android Maven Archetypes 创建新项目》章节创建AVD后,可以使用Eclipse直接运行Android了。

当然也可以采用命令行:

mvn android:emulator-start

mvn clean package android:deploy

android:run

参考:

http://rgladwell.github.com/m2e-android/

http://code.google.com/p/maven-android-plugin/wiki/EclipseIntegration