http://reymont.iteye.com/blog/1750843

Maven开发Android指南 1 简介

学习Maven的使用已经3年了,从开始对 Maven有些盲目的崇拜,到现在真正去使用、去理解。《Maven开发Android指南》将记录学习中的心得体会,分享给大家。

 

文章翻译自《Maven: The Complete Reference》第14章

 

 

Maven开发Android指南 1 简介

 

Maven开发Android指南 2 配置android-maven-plugin

 

Maven开发Android指南 3 使用Android Maven Archetypes 创建新项目

 

Maven开发Android指南 4 与Eclipse整合(m2e-android )

 

Maven开发Android指南 5 调试

 

 

Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于便携设备,如智能手机和平板电脑。2005年由Google收购注资,并组建开放手机联盟开发改良随后,逐渐扩展到平板电脑及其他领域上。Android的中间层基本上用Java 实现,采用Dalvik JAVA虚拟机。在运行时,将Java字节码转换为Dalvik 虚拟机可以识别的.dex文件。JAVA是默认的开发语言,API是基于JAVA。

 

 

大多数情况下,开发Android应用使用基于Eclipse的Android Development Toolkit ADT也可以使用Apache Ant来代替IDE的编译工作。Android Maven Plugin则可以利用Apache Maven提供的功能,使开发团队完成编译,部署和发布Android应用,还可以使用Maven强大的特性,如依赖管理,报表,代码分析等等。

 

 

名词解释:

开放手机联盟:开放手机联盟(Open Handset Alliance)是美国Google公司与2007年11月5日宣布组建的一个全球性的联盟组织。这一联盟将会支持Google可能发布的手机操作系统或者应用软件,共同开发名为Android的开放源代码的移动系统。开放手机联盟包括手机制造商、手机芯片厂商和移动运营商几类。

 

Java字节码(Java bytecode):Java bytecode is the form of instructions that the Java virtual machine executes. Each bytecode opcode is one byte in length, although some require parameters, resulting in some multi-byte instructions. Not all of the possible 256 opcodes are used. 51 are reserved for future use. Beyond that, Sun Microsystems, the original developer of the Java platform, has set aside three values to be permanently unimplemented

 

opcode:In computer science, an opcode (operation code) is the portion of a machine language instruction that specifies the operation to be performed. Their specification and format are laid out in the instruction set architecture of the processor in question (which may be a general CPU or a more specialized processing unit). Apart from the opcode itself, an instruction normally also has one or more specifiers for operands (i.e. data) on which the operation should act, although some operations may have implicit operands, or none at all. There are instruction sets with nearly uniform fields for opcode and operand specifiers, as well as others (the x86 architecture for instance) with a more complicated, varied length structure

Android NDK:The NDK is a toolset that allows you to implement parts of your app using native-code languages such as C and C++. For certain types of apps, this can be helpful so you can reuse existing code libraries written in these languages, but most apps do not need the Android NDK.

 

参考:

Android:   http://baike.baidu.com/view/1241829.htm

JAVA:        http://baike.baidu.com/view/374952.htm

http://en.wikipedia.org/wiki/Java_bytecode

http://en.wikipedia.org/wiki/Opcode

http://developer.android.com/tools/sdk/ndk/index.html


Maven开发Android指南 2 配置android-maven-plugin

博客分类: android  

在尝试开发或编译Android应用之前,你需要安装和配置JDK,Android SDK,Maven。

 

必备条件:

JDK 1.6+。

Android SDK (r17 or later) 支持所有版本的开发。http://developer.android.com/sdk/index.html

Maven 3.0.3+。http://maven.apache.org/download.html

 

配置步骤:

JDK:

JDK的安装配置不在本文介绍,可参考http://docs.oracle.com/javase/7/docs/webnotes/install/windows/jdk-installation-windows.html

 

在CMD中键入java -version。测试是否安装成功:

java version "1.6.0_22"

Java(TM) SE Runtime Environment (build 1.6.0_22-b04)

 

Maven For Windows:

 

假定下载Maven后,解压到目录c:\Program Files\apache-maven-3.0.3。

使用Windows控制面板配置环境变量(可参照JDK配置):

配置M2_HOME:M2_HOME=c:\Program Files\apache-maven-3.0.3+

配置PATH:PATH=%PATH%;%M2_HOME%\bin+ …

 

在CMD中键入mvn -v。测试是否安装成功:

Apache Maven 3.0.4 (r1232337; 2012-01-17 16:44:56+0800)

Maven home: C:\Program Files\apache-maven-3.0.3\bin\..

Java version: 1.6.0_22, vendor: Sun Microsystems Inc.

Java home: C:\Program Files\Java\jdk1.6.0_22\jre

Default locale: zh_CN, platform encoding: GBK

OS name: "windows xp", version: "5.1", arch: "x86", family: "windows"

 

Android SDK For Windows:

 

在Android官网(Android Developer web site)下载SDK。

 

假定下载Android后,解压到目录D:\android\android-sdk-windows

使用Windows控制面板配置环境变量(可参照JDK配置):

配置ANDROID_HOMEANDROID_HOME=D:\android\android-sdk-windows

配置PATH:PATH=%PATH%;%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools;

 

参考:

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

http://docs.oracle.com/javase/7/docs/webnotes/install/windows/jdk-installation-windows.html

http://www.sonatype.com/books/mvnref-book/reference/installation-sect-maven-install.html#installation-sect-windows

http://www.sonatype.com/books/mvnref-book/reference/installation-sect-test-install.html

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

http://developer.android.com/sdk/exploring.html

Maven开发Android指南 3 使用Android Maven Archetypes 创建新项目

博客分类: android  

在看完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 \

--name \

--path path/to/your/project \

--activity \

--package

 

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

         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

    4.0.0

    com.study.android

    HelloMavenAndroid

    1.0-SNAPSHOT

    apk

    HelloMavenAndroid

 

   

        2.3.3

           

   

 

   

       

            com.google.android

            android

            ${platform.version}

            provided

       

   

 

   

       

           

                com.jayway.maven.plugins.android.generation2

                android-maven-plugin

                3.1.1

               

                    ${project.basedir}/AndroidManifest.xml

                    ${project.basedir}/assets

                    ${project.basedir}/res

                    ${project.basedir}/src/main/native

                    

                        10

                   

                                        true

               

                true

           

 

           

                maven-compiler-plugin

                2.3.2

               

                    1.6

                    1.6

               

           

       

   

 

在这个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必须声明这是扩展的插件(true)。平台的版本和平台号码需要对应,2.3.310,可以在API Level找到对应的关系。

 

依赖的Android平台可以在Maven Central查询到。在依赖中声明provided是很有必要的。意思是告诉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://blog.csdn.net/yaowj2/article/details/6794129

http://search.maven.org/

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

Maven开发Android指南 4 与Eclipse整合(m2e-android )

博客分类: android android maven eclipse 

 

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创建新的项目:


 

Maven开发Android指南_第1张图片
直接Next

Maven开发Android指南_第2张图片
选择All Catalogs,Filter输入de.akquinet.android.archetypes

Maven开发Android指南_第3张图片
在Group Id、Artifact Id和Package输入名称

Maven开发Android指南_第4张图片
创建完后,可能有错。

Maven开发Android指南_第5张图片
右键Properties查看,提示为缺少src/test/java文件夹。

Maven开发Android指南_第6张图片
在工程目录下新建对应文件夹。

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

Maven开发Android指南_第8张图片
当然也可以采用命令行:

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

Maven开发Android指南 5 调试

博客分类: android android maven eclipse 

对于一个使用Maven的Android应用,调试看起来是个大问题,没有"Debug as Android application"怎么办?总不能一直用logcat(Log.v(TAG,…)吧。

 

如果阅读了《Maven开发Android指南 4 与Eclipse整合(m2e-android )》,那么这就不是问题了。

 

m2e-android很智能的将 Android Developer Tools (ADT)和 Maven Android Plugin结合在一起,细心的读者可以看到,左上角项目图标上面有一个M和A,分别代表着Maven和Android。

 Maven开发Android指南_第9张图片

正如上篇提到到的,可以"Run as Android application",那么当然可以"Debug as Android application"

 

 

 

但是还是有些读者不满足,就是不喜欢"Debug as Android application",那么DDMS将是你的选择。(需要安装m2e-android)

Maven开发Android指南_第10张图片

 

通过命令部署Android应用

cd HelloM2EAndroid

mvn android:emulator-start

mvn clean package android:deploy

 

打开Eclipse中的DDMS,选择对应的应用,点击绿色的小甲壳虫,它将会帮你抓住所有断点。

 

 

 

 

 

 

 

 

名词解释:

logcat是Android中一个命令行工具,可以用于得到程序的log信息。

The Android logging system provides a mechanism for collecting and viewing system debug output. Logs from various applications and portions of the system are collected in a series of circular buffers, which then can be viewed and filtered by the logcat command. You can use logcat from an ADB shell to view the log messages

DDMS的全称是Dalvik Debug Monitor Service,是 Android 开发环境中的Dalvik虚拟机调试监控服务。它为我们提供例如:为测试设备截屏,针对特定的进程查看正在运行的线程以及堆信息、Logcat、广播状态信息、模拟电话呼叫、接收SMS、虚拟地理坐标等等。

Android ships with a debugging tool called the Dalvik Debug Monitor Server (DDMS), which provides port-forwarding services, screen capture on the device, thread and heap information on the device, logcat, process, and radio state information, incoming call and SMS spoofing, location data spoofing, and more

 

参考:

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

http://baike.baidu.com/view/4504801.htm

http://baike.baidu.com/view/2688850.htm

http://developer.android.com/tools/help/logcat.html

http://developer.android.com/tools/debugging/ddms.html


更多相关文章

  1. Android开发者指南(11) ―― Optimizing Apps for Android 3.0
  2. 设置提示信息,输入值类型,输入框引入图片,设置输入框的形状
  3. Android NDK工程的编译和链接调试
  4. 从Android读取Unity assets下的图片并保存为Bitmap格式
  5. Android多分辨率适配框架使用指南
  6. 开机动画(闪动的ANDROID字样的动画图片)
  7. Android Binder入门指南之defaultServiceManager()的实现
  8. Android实现局部图片滑动指引效果
  9. Android ImageView 图片等比缩放问题

随机推荐

  1. android之CheckBox
  2. android gridview 九宫格布局
  3. android 获取服务器json数据
  4. Android(安卓)studio 给标题栏加上返回按
  5. android视频截图
  6. android调用本地录制程序获取录制文件路
  7. android异步加载图片
  8. android之【Toast】
  9. android对话框~~
  10. Android之隐式启动通过action跳转到指定