Maven打包/构建Android工程

点击打开链接http://www.apkbus.com/android-115856-1-1.html


为什么要用Maven?这个问题我说不清楚,如果你没听说过,或者你听说过Ant,我可以说个人感觉Maven比Ant更高效以及轻松,详细的理由欢迎大家发挥搜索,你会惊喜的发现一片新天地……我会告诉你我们公司每次打原始包有接近50个,我一条命令然后就可以在一边看书了……换想用手动打那是什么效率,技术改变生活


开始之前先介绍一本书《Maven实战》,很多概念或者理解都是由它那里来,感兴趣的可以自行搜索,这里对书的作者致谢……我这里说的是书的九牛一毛,不过弱水三千,我只取一瓢用着先,能用就可以。更多进一步内容欢迎大家讨论。只要按照步骤做,相信都可以用maven成功打包。

一、安装(我直接用书里的…… 作者见谅……)
2.1 在Windows上安装Maven
2.1.1 检查JDK安装
在安装Maven之前,首先要确认你已经正确安装了JDK。Maven可以运行在JDK 1.4及以上的版本上。本书的所有样例都基于JDK 5及以上版本。打开Windows的命令行,运行如下的命令来检查你的Java安装:
C:\Users\Juven Xu>echo %JAVA_HOME%
C:\Users\Juven Xu>java -version
结果如图2-1所示:

Maven打包/构建Android工程_第1张图片
图2-1 Windows中检查Java安装
上述命令首先检查环境变量JAVA_HOME是否指向了正确的JDK目录,接着尝试运行java命令。如果Windows无法执行java命令,或者无法找到JAVA_HOME环境变量。你就需要检查Java是否安装了,或者环境变量是否设置正确。关于环境变量的设置,请参考2.1.3节。
2.1.2 下载Maven
请访问Maven的下载页面: http://maven.apache.org/download.html,其中包含针对不同平台的各种版本的Maven下载文件。对于首次接触Maven的读者来说,推荐使用Maven 3.0,,因此下载apache-maven-3.0-bin.zip。当然,如果你对Maven的源代码感兴趣并想自己构建Maven,还可以下载apache-maven-3.0 -src.zip。该下载页面还提供了md5校验和(checksum)文件和asc数字签名文件,可以用来检验Maven分发包的正确性和安全性。
在本书编写的时候,Maven 2的最新版本是2.2.1,Maven 3基本完全兼容Maven 2,而且较之于Maven 2它性能更好,还有不少功能的改进,如果你之前一直使用Maven 2,现在正犹豫是否要升级,那就大可不必担心了,快点尝试下Maven 3吧!
2.1.3 本地安装
将安装文件解压到你指定的目录中,如:
D:\bin>jar xvf "C:\Users\Juven Xu\Downloads\apache-maven-3.0--bin.zip"
这里的Maven安装目录是D:\bin\apache-maven-3.0,接着需要设置环境变量,将Maven安装配置到操作系统环境中。
打开系统属性面板(桌面上右键单击“我的电脑”→“属性”),点击 高级系统设置,再点击 环境变量,在 系统变量中新建一个变量,变量名为 M2_HOME,变量值为Maven的安装目录 D:\bin\apache-maven-3.0。点击 确定,接着在系统变量中找到一个名为Path的变量,在变量值的末尾加上 %M2_HOME%\bin;,注意多个值之间需要有分号隔开,然后点击 确定。至此,环境变量设置完成,详细情况如图2-2所示:
Maven打包/构建Android工程_第2张图片
图2-2 Windows中系统环境变量配置
这里需要提一下的是Path环境变量,当我们在cmd中输入命令时,Windows首先会在当前目录中寻找可执行文件或脚本,如果没有找到,Windows会接着遍历环境变量Path中定义的路径。由于我们将 %M2_HOME%\bin添加到了Path中,而这里%M2_HOME%实际上是引用了我们前面定义的另一个变量,其值是Maven的安装目录。因此,Windows会在执行命令时搜索目录 D:\bin\apache-maven-3.0\bin,而mvn执行脚本的位置就是这里。
明白了环境变量的作用,现在打开一个新的cmd窗口(这里强调新的窗口是因为新的环境变量配置需要新的cmd窗口才能生效),运行如下命令检查Maven的安装情况:
C:\Users\Juven Xu> echo %M2_HOME%
C:\Users\Juven Xu>mvn -v
运行结果如图2-3所示:
Maven打包/构建Android工程_第3张图片
图2-3 Windows中检查Maven安装
第一条命令 echo %M2_HOME%用来检查环境变量M2_HOME是否指向了正确的Maven安装目录;而 mvn –version执行了第一条Maven命令,以检查Windows是否能够找到正确的mvn执行脚本。


二、构建本地库
在进行第二步之前确认你的maven -v 是可以显示出来的。
1、下载maven-android-sdk-deployer-master构建到本地库,下载地址:https://github.com/mosabua/maven-android-sdk-deployer
下载到任意地方,然后进入要目录,运行:
mvn clean install  (这个是maven提供的方便构建android那些android-7~17到库里的,如果没这步用官方远程库会没有包含annotation某些类……)这句命令你会经常用到,你会喜欢上它的……


2、动手构建:
我们需要一个pom.xml文件,已经帮大家准备好了……
[XHTML]  纯文本查看  复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
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 [url=http://maven.apache.org/maven-v4_0_0.xsd]http://maven.apache.org/maven-v4_0_0.xsd[/url]" >
      < modelVersion >4.0.0 modelVersion >
      < groupId >com.xxx.xxx groupId >
      < artifactId >Project-parent artifactId >
      < version >1.0.0-SNAPSHOT version >
      < packaging >pom packaging >
      < name >xxx - Parent name >
     
           < dependencies >
                < dependency >
                     < groupId >android groupId >
                     < artifactId >android artifactId >
                     < version >2.1_r3
version >
                     < scope >provided scope >
                dependency >
           dependencies >
      < build >
           < finalName >${project.name} finalName >
           < sourceDirectory >src sourceDirectory >
 
                < plugins >
                     < plugin >
                          < groupId >org.apache.maven.plugins groupId >
                          < artifactId >maven-compiler-plugin artifactId >
                          < version >2.3.2 version >
                          < configuration >
                               < source >1.6 source >
                               < target >1.6 target >
                               < encoding >UTF-8 encoding >
                          configuration >
                     plugin >
                     < plugin >
                          < groupId >org.apache.maven.plugins groupId >
                          < artifactId >maven-resources-plugin artifactId >
                          < version >2.6 version >
                          < configuration >
                               < encoding >UTF-8 encoding >
                          configuration >
                     plugin >
                     < plugin >
                          < groupId >com.jayway.maven.plugins.android.generation2 groupId >
                          < artifactId >android-maven-plugin artifactId >
                          < version >3.5.1 version >
                          < configuration >
                               < androidManifestFile >${project.basedir}/AndroidManifest.xml androidManifestFile >
                               < assetsDirectory >${project.basedir}/assets assetsDirectory >
                               < resourceDirectory >${project.basedir}/res resourceDirectory >
                               < sdk >
                                    < path >${env.ANDROID_HOME} path >
                                    < platform >${android-sdk-platform} platform >
                               sdk >
                              
                               < deleteConflictingFiles >true deleteConflictingFiles >
                               < undeployBeforeDeploy >true undeployBeforeDeploy >
 
                               < zipalign >< skip >false skip > zipalign >
                          configuration >
                          < extensions >true extensions >
                     plugin >
                plugins >
      build >
project >

重点讲解下:
com.xxx.xxx        重要:一般写公司项目网址
Project-parent  唯一标识
1.0.0-SNAPSHOT   版本
     apk   打包模式 我们当然是apk
     xxx - Parent   名字,方便理解,可有可无

  android  android  2.1_r3  provided   引用,当一切布置好,我们每个项目只会关心依赖:这里只引用了一个android 官方2.1,这个是根据地maven-android-sdk-deployer 下面的说明填写的。
把这个放到你的项目里面,然后mvn clean install...就可以运行。

FQA:
如果我有引用一些libs,怎么办?
这个真的经常有,谁家没引用一些库呢?
+在http://mvnrepository.com/ 上搜索一下,比如搜索gson

它上面就有直接可以复制过来。
+但是负责任的告诉你,你大部分会搜索不到**
这时候可以到你的libs下,运行:(用最常见的支付宝为例:) 
mvn install:install-file -Dfile=alipay_msp.jar  -DgroupId=com.xxx.libs -DartifactId=alipay_msp  -Dversion=1.0.0-SNAPSHOT -Dpackaging=jar

显示成功后你就可以用了,因为groupId和artifactid都是你都可以自己起名,所以引用时你填回自己写的
com.xxx.libsalipay_msp1.0.0-SNAPSHOT

        如果我引用的library是项目,怎么办?


        这个问题曾经困扰了我很久,实际上把< packaging>apklib packaging>改成这样就可以了
         然后再在引用的dependecny加上对它的依赖就可以。

        为什么编译不成功?出现非法字符: \65279...
          这个因为编码问题,utf-8 bom,把它改回utf-8就可以了。方法可以用文本编辑器打开再存,如果你有很多的话就参考下面这个:我找不回原作者地址--

         为什么编译不成功?.9png 错误
        检查一下图片,或者用java里面的工具打开再保存一下。

          怎么传到手机上运行?
          mvn android:deploy android:run 

           ?还有些什么功能?
          可以自动生成文件名+时间+版本,自动zipalgn,自动签名,混淆……编辑所有渠道包……你会喜欢的……

你可能感兴趣的:(Android,零碎知识)