最近项目要求要用安卓,并且需要用手动打包,学习了下安卓的基础开发以及手动打包的过程,遇到的坑比较多,在此总结下。
开发环境安装
Android studio
目前的安卓开发已经被谷歌赶着去Android studio,未来AS才是大道,使用eclipse开发新版本安卓会出现各种各样的问题。
AS的安装过程非常简单,下载https://developer.android.com/studio/
安装包。安装一键式,如果没有SDK会为你自动下载Android SDK,因网络问题无法下载请百度。选择AS安装目录和SDK目录,同时AS中会内置一个java,基本上是全家桶已经为你准备好,安装完即可使用。
AS使用的是gradle进行编译,项目构建依赖于gradle文件,每一个模块【module】和项目各有一个gradle的配置文件。包括各种依赖包的添加,SDK版本设置等,每次更新后Sync Project会更新系统设置。
Eclipse
使用Eclipse的安装会复杂一些。
JAVA安装
首先需要安装java,到http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
下载JDK,注意记录下下载的JDK版本和位数,需要与后面的eclipas对应。安装完后添加java安装目录的/bin
目录到环境变量。安装最好不要选在program的文件夹中,这个目录含有空格有时候在编译Android时可能会出问题。
Android SDK安装
使用eclipse需要自己安装Android SDK。需要安装一个SDK manager,可以管理各个版本的Android包。现在谷歌为了支援Android studio已经不更新了,到http://www.androiddevtools.cn/
下载manager安装。安装manager的时候,会自动搜寻java的安装路径和版本,注意看下路径是否是对的。
几个重要的目录:build-tools
,存下载的各个版本的Android包;platform-tools
,adb调试工具;tools
,一些实用的脚本,如Android.bat
。将build-tools
,platform-tools
,tools
目录添加到环境变量。
Eclipse安装
安装eclipse,下载EE版本的,需要选择对应的位数,和jdk
的位数一样,不然可能会出现一些意想不到的错误。安装完以后,需要安装ADT
,也就是安卓开发工具。在菜单栏的help
,install new software
,选择add
,在Name
处输入ADT Plugin
,Location
处输入https://dl-ssl.google.com/android/eclipse/
,安装ADT
。安装完重启后就可以使用安卓了。
安卓工程生成
AS
使用Android studio编译安卓程序非常简单,如果代码出现错误,使用alt+enter
就会自动导入对应的包。连接手机,运行程序就可以直接部署到手机上,如果要生成apk
,则需要先生成一个key
来进行签名,这些在菜单中都可以进行操作。
Eclipse
使用eclipse
生成工程,自动编译时经常会报Failed to load ****\androidSDK\build-tools\28.0.0\lib\dx.jar
的错误,这是因为版本不兼容。这时候网上找到的解决方法是在build-tools
中用一个旧版本的dx.jar
替换,这样就可以运行了。但这个方法十分的不好,在手动编译时就会出问题。
命令行生成
脚本生成安卓工程,我们需要将之前安卓SDK的三个目录全部加到环境变量。我们需要使用android.bat
【安卓SDK的tools目录】脚本,生成的命令如下:android create project --target 1 --name MyAndroidApp --path ./MyAndroidAppProject --activity MyAndroidAppActivity --package com.example.myandroid
。--target
是选择Android版本,可以用list
命令看下有哪一些版本,其他的根据名称就可以理解。
目录解析
- 手动生成的和在
eclipse
中生成的目录是相同的,其中src
目录存取的是源码,按照包的路径名存储;res
目录存取的是资源文件,包括图片,界面布局,字符串,颜色,主题等等。主要的就是这两个目录,AndroidManifest.xml
是工程的配置文件,非常重要 Android studio
将res
和java
源码目录的存放位置放在了一起,同时增加了gradle
部分。
手动打包过程
安卓手动打包的过程如下:
命令参考链接
- 使用aapt工具【位于build-tools文件夹】将res资源文件打包成R.java,也就是在源码中用R.layout之类的调用界面资源的R.java。
aapt package -f -m -J ./gen -S res -M AndroidManifest.xml -I D:/androidSDK/platforms/android-28/android.jar
- Javac编译R.java和java源码成class文件,javac是java编译环境。
javac -target 1.8 -bootclasspath D:/androidSDK/platforms/android-28/android.jar -d ./build ***/*.java ***/R.java
- 使用dx脚本【位于build-tools文件夹】将编译后的class文件打包成dex文件。注:之前在eclipse中改过的那个dx.jar一定要改回来。
dx --dex --output=***/build/classes.dex ***/build
- 然后使用aapt工具【位于build-tools文件夹】将资源文件打包成zip
aapt package -f -M AndroidManifest.xml -S res -I D:/androidSDK/platforms/android-28/android.jar -F ***/build/res.zip
- 接下来使用apkbuilder脚本将zip和dex文件一起打包成apk,这个脚本已经废除,到网上下载后放在【tools目录】里即可
apkbuilder ***/First.apk -v -u -z ***/build/res.zip -f ***/build/classes.dex
- 未签名的apk是无法安装的,这里的签名首先需要生成签名文件,使用keytool工具【java自带】生成keystore文件,然后拷贝到项目目录,使用apksigner脚本【位于build-tools】
jarsigner -verbose -keystore android.keystore -storepass ****** -keypass ****** -signedjar FirstSigned.apk First.apk android.keystore
- 对齐:zipalign脚本【位于build-tools文件夹】进行对齐
zipalign -v 4 FirstSigned.apk FirstAligned.apk
- 可以拷贝apk到手机或者使用adb命令安装
adb install FirstAligned.apk
- 使用adb log cat可以查看手机运行日志,找出出错信息
以上命令的详细解释可以看链接里的博客。
如有错误,欢迎指正~