Android Platform 3.0 SDK和Eclipse ADT安装记录(最初版本,纪念用)
(注意:此文非常非常地过时,只是用于个人回想。请参看《二》以后的笔记)
(20110926:注意!此文由于结构过于混乱且内容过时,将会被删除,用新的学习日记取代——如果我有时间的话)
?
注:我只是为了学习简单的Android编程和模拟,
所以没有考虑SDK和设备的版本兼容问题。
下面以Android Platform 3.0 API Level 11为例
旧版本的Android Platform可能是不一样。
?
20110321补充:
关于Android系统的底层操作系统,不在本文的讨论范围之内
(我的理解是,Android平台是由底层的C/C++和应用层的Java应用程序组成)
Android硬件的底层开发可以参考这里:
http://source.android.com/index.html
?
?
20110902补充:
开发最好使用Android 2.2,
因为它可以直接利用Manual连接功能(无需重启模拟器)
立刻看到修改代码后的效果。
而且这样做不会有签名改变的问题(无需手动在Settings中卸载程序)。
?
------------------------
如果手头上有VM而且机器够好的话可以用VM+ubuntu
下面是NGE2提供的较详细的教程
【原创】在Ubuntu中安装andorid开发环境
http://www.iacger.com/forum.php?mod=viewthread&tid=27941
?
不过NDK似乎很少有机会用。
?
------------------------
?
1. 安装JDK(Java SE Development Kit (JDK) Bundles)
http://www.oracle.com/technetwork/java/javase/downloads/index.html
?
2. 安装Eclipse
安装任意版本的Eclipse皆可。
http://www.eclipse.org/
我使用Eclipse Pulsar(只是个人喜好)。
?
3. 下载绿色版的Android SDK入门包
(请参考官方文档->Home->Installing the Android SDK)
我下载了官方网站提供的
http://dl.google.com/android/android-sdk_r10-windows.zip
解压到硬盘的某个路径。
(或者下载安装程序进行安装)
这可能不是最新的,最新版本的入门包请参考官方网站的
http://developer.android.com/sdk/index.html
(这个地址可能需要代理才可以访问)
?
4. 安装Eclipse ADT
(请参考官方文档->SDK->ADT Plugin for Eclipse->ADT 10.0.0)
Eclipse->Help->Install New Software->Add
Name填入adt(或任意名称),
Location填入以下网址,
https://dl-ssl.google.com/android/eclipse/
然后勾选全部搜索到的软件,按提示下载安装ADT插件。
?
5. 设置Eclipse ADT
(请参考官方文档->SDK->ADT Plugin for Eclipse->ADT 10.0.0)
Window->Preferences->Android->SDK Location:
指定SDK的根目录路径。
?
6. 更新Android SDK的其它基本组件。
(请参考官方文档->SDK->Adding SDK Components)
上面提到的官网的绿色版Android SDK实际上只是提供SDK更新的基本工具。
用于开发是不够的,需要用Eclipse ADT更新(或者直接执行Android SDK目录下的SDK Manager.exe)。
以Eclipse ADT为例:
Windows->Android SDK and AVD Manager->Installed packages
如果你只是使用官网上的Android的绿色版zip文件来安装,你会看到
列表中只有Android SDK Tools一项。
你可以按Update All...安装最新版本的其它基本组件,
* Tools(上面提到的绿色安装或用安装程序安装的入门包)
* Platform-tools
* SDK Platform
* Documentation(可选)
* Samples(可选)
如果时间充裕,最好全部都安装,
因为文档和示例可以帮助开发者快速查找和参考API的用法,
而不需要访问Android官网。
?
7. 安装Android虚拟设备(AVD)
(请参考官方文档->Resource->Tutorials->Hello World)
在Eclipse ADT中切换到
Windows->Android SDK and AVD Manager->Virtual devices
按New...弹出Create new Android Virtual Device (AVD)对话框
Name随便填一个名称,如my_avd。
Target下拉选择Android 3.0 - API level 11
目标的版本对应SDK Platform的API版本号11。
因为这里仅用于模拟,所以其它设置用默认值即可。
(请参考官方文档->Dev Guide->Developing->Tools->Emulator)
?
8. 创建Hello World工程
(请参考官方文档->Resource->Tutorials->Hello World)
File->New->Other->Android->Android Project
Project name:填HelloAndroid
Application name:填Hello, Android
Package name:填com.example.helloandroid
Create Activity:填HelloAndroid
Min SDK Version:填11
如果安装了AVD,Build Target会自动勾选。
然后修改HelloAndroid.java的内容,创建一个TextView。
?
?
package com.example.helloandroid;import android.app.Activity;import android.os.Bundle;import android.widget.TextView;public class HelloAndroid extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tv = new TextView(this); tv.setText("Hello, Android"); setContentView(tv); }}?运行它,可以:
工程树->右键->Debug As->Android Application
或者用快捷键Ctrl+F11直接运行模拟器。
模拟器运行有点卡,需要耐心等候和操作。
?
9. 模拟器参数和解锁问题
(请参考官方文档->Dev Guide->Developing->Tools->Emulator)
如果想缩放模拟器的窗口,
可以打开Debug Configurations对话框(在工具栏的Debug按钮下拉菜单中)
双击创建Android Application,设置Project,
然后在Target->Additional Emulator Command Line Options中
添加-scale 0.8来缩放模拟器的窗口。
(或者按AVD管理器->Virtual devices右面的Start按钮,弹出对话框,
也可以设置缩放比例,只不过那里需要两个参数,而且启动模拟器后可能无法加载当前工程的apk)
Android调试配置对中,Manual可以用于连接上已启动的模拟器,和Automatic不同。
开机后你需要耐心等待(因为模拟器需要一定时间加载操作系统的镜像)。
需要时刻关注Eclipse的Console输出,以了解系统的加载情况和出错原因。
----------------------
重要:
模拟器重启时间较长,如果要省时间,需要把Debug configurations的Automatic改为Manual方式,
选择已启动的模拟器直接安装apk。
这样就可以避免频繁退出模拟器造成的麻烦。
20110909:
这里有个更详细的教程,不过是日文:
http://studiomikan.net/kas/manual/content/hello.html
注意这张图,其实就是想Manual连接到已经运行的模拟器上,以节约时间:

----------------------
如果按下工具栏调试按钮时出现Windows程序崩溃的错误对话框,可以用下面方法逐一尝试:
1. 关闭杀毒软件或者木马扫描程序
2.?删除AVD,重新创建新的AVD再试,并且需要检查Debug configurations对话框中已勾选新创建的AVD。
3. 工具栏->调试按钮下拉->Debug configurations->删除左面树中Android Application下的所有配置,
然后双击Android Application创建新的调试页,指定工程,重新设置参数。
4. 打开任务管理器,结束adb.exe,ADT会在重试N次后重新启动adb,然后再试,
5. 用AVD管理器->Virtual devices右面的Start按钮启动虚拟机(这种办法可能无法加载当前工程的apk),如果要加载工程则要用Debug configurations的Manual方式。
6. (补)或者用命令行启动(见后,13),原理同(5),如果要加载工程则要用Debug configurations的Manual方式。
----------------------
如果系统引导失败或者日志中提示apk安装失败,你需要关闭模拟器重新运行。(补:在我的印象中模拟器脱线是常有的事情,不过多次Manual连接应该可以解决。有时候ADT的logcat也会失败,不过用命令行试又会恢复正常——基本上可以肯定,命令行操作比用ADT要可靠)
如果你看到系统被锁住(出现锁的图片),
可以用鼠标点击开锁图标,然后立刻点圆圈边上的开锁图标,即可开锁。(或者好像真机那样拖动鼠标)
进入系统后,发现程序已经运行起来了。
如果程序没有运行,可以退回系统桌面(按左下角的<图标)
(如果在程序运行时按<后退或退回HOME桌面时,程序实际上没有真正退出,只是休眠)
然后点击右上角的Apps图标,在All列表中单击Hello, Android图标即可运行。
你会看到运行时标题是Hello, Android,
稍等片刻会有Hello, Android的文本输出。
说明程序运行正常。
(如果想旋转模拟器,可以按小键盘的7和9,系统会重启活动并且刷新界面)
直接关闭窗口即可退出模拟器。
---------------------------------
在ADT中使用adb shell:
创建新的External Tools Configuration页,
Location填C:\WINDOWS\system32\cmd.exe
Argument填/C "start adb shell"
(或者用adb的绝对路径)
---------------------------------
如果觉得官方的qemu模拟器太慢,而机器上有其它虚拟机软件,可以试试x86的非官方移植版:
Android x86
http://www.android-x86.org/
它自称可以在x86上跑1.6和2.2系统的Android,
我在VMware workstation上装过,觉得速度比较快,
但操作习惯和官方的qemu有点不同,详细需要参考它的官方介绍。
它貌似还可以用adb调试程序(虽然不知道它对硬件的模拟是否足够)
----------------------------------
?
10. Eclipse内存问题
我发现有时侯Eclipse会无缘无故地崩溃。
可能是因为内存不足或者Eclipse版本不稳定导致的。
扩充内存的方法是修改eclipse.ini文件
-Xms128m
-Xmx512m
-XX:MaxPermSize=256m
20110909:
详细见官方的文档:
http://source.android.com/source/using-eclipse.html
?
11. 参考资料
1. Android开发环境搭建全程演示(jdk+eclipse+android sdk)
http://songjg2010.iteye.com/blog/730302
2. Android中文文档(已废)
http://www.chinaup.org/docs/intro/hello-android.html
3. Android SDK开发Android应用
http://quanminchaoren.iteye.com/blog/838883
-----------------
20110909:
4. KAS手册http://studiomikan.net/kas/manual/index.html(20110405补充)12. 内置的日志功能在Java中让人印象深刻的日志功能在Android中由android.util.Log类实现,它可以直接在代码中使用。官方例子的写法类似这样:
package com.example.helloandroid;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.widget.TextView;public class HelloAndroid extends Activity {// Debuggingprivate static final String TAG = "HelloAndroid"; private static final boolean D = true; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { if(D) { Log.d(TAG, "Hello, Android"); } super.onCreate(savedInstanceState); TextView tv = new TextView(this); tv.setText("Hello, Android"); setContentView(tv); }}?如果要看Log的输出内容,需要打开LogCat视图(见菜单->Window->Show View->Other...->Android->LogCat)如果使用过滤器,不要用下方的Filter文本框,应该用右上方的加号按钮。LogCat视图右上方的那排字母按钮类似于Log4j,例如I表示比Info级别相同或更高的调试等级。另一种看Log的方法是使用DDMS视角菜单->Window->Open Perspective->Other...->DDMS同样可以打开LogCat。对于Unix系的系统级开发者来说,日志很重要。但对于Windows平台的开发者则不然(因为Windows平台上的应用程序出错的机会并不大,调试也没那么困难)(20110512)有其它实现Android日志的开源库,例如:SLF4J Androidhttp://www.slf4j.org/android/
(20110417补充)13. 命令行使用技巧(详细请参考Android SDK本地帮助)
<1> 环境设置的批处理文件(用于双击立即设置PATH,需要事先安装Ant和Java工具)(系统环境是Windows XP)
@set PATH="C:\WINDOWS"@set PATH="C:\WINDOWS\system32";%PATH%@set PATH="D:\java\apache-ant-1.8.1\bin";%PATH%@set JAVA_HOME="D:\java\jdk1.6.0_20"@set PATH="D:\java\jdk1.6.0_20\bin";%PATH%@set PATH="D:\java\android-sdk_r10-windows\android-sdk-windows\platform-tools";%PATH%@set PATH="D:\java\android-sdk_r10-windows\android-sdk-windows\tools";%PATH%@cd /D "D:\java\android-sdk_r10-windows\android-sdk-windows\work"@cmd
(注:上面的bat文件仅供参考,因为我偏向于双击bat启动命令提示符)?
也可以直接设置到系统的环境变量,启动cmd切换到工作目录。
<2> 创建工程> android create project --target 1 --name MyAndroidApp --path ./MyAndroidAppProject --activity MyAndroidAppActivity --package com.example.myandroid
<3> 编译工程(需要切换到工程目录下)> ant debug(可以用ant help查看其它ant任务)
<4> 创建AVD(和Eclipse的方法类似)> android(弹出对话框,然后手工添加AVD)
<5> 启动虚拟机(需要事先创建AVD;如果导致Eclipse无法启动虚拟机,可尝试在Eclipse中删除AVD,并且删除目录C:\Documents and Settings\Administrator\.android\,然后重新创建AVD再试)> emulator -avd my-avd2(-avd参数指定创建的AVD名称)(可以使用-scale指定窗口尺寸的缩放因子)
<6> 获取Android设备Linux系统的shell(用于远程登陆到虚拟机内的Linux系统,执行命令行操作例如ls,需要启动虚拟机emulator)> adb shell(查看安装的apk,可以切换到/data/app)root@android:/ # cd /data/appcd /data/approot@android:/data/app # lslsApiDemos.apkCubeLiveWallpapers.apkGestureBuilder.apkSoftKeyboard.apkWidgetPreview.apkcom.example.helloandroid-1.apkroot@android:/data/app #(apk的名称被改为com.example.helloandroid-1.apk)
<7> 日志查看(例如查看HelloAndroid标签的Debug信息)(注:可以在参数中设置过滤器,但我尝试过不行,所以用find代替)> adb logcat | find "D/HelloAndroid"
<8> 卸载软件官方给出的卸载方法(但有问题)是:>?adb shell pm uninstall <Java的包名>Java包名可以查看DDMS视角中的File Explorer视图中Data/app中安装的apk的Info一栏,一般是Android应用的package名称可以尝试用-k彻底删除所有缓存不过,这种方法会造成修改过源代码后重新编译的apk无法安装到模拟器上,因为签名改变了。
正确做法是手工在模拟器中settings里卸载软件seehttp://hi.baidu.com/doyee/blog/item/716cb30e9d8b1ceb36d122a3.html
@set NDK_HOME=C:/cygwin/home/Administrator/android-ndk-r5b@set SYSROOT=%NDK_HOME%/platforms/android-8/arch-arm@set GCC=%NDK_HOME%/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/bin/arm-linux-androideabi-gcc.exe@set GCC="%GCC%" --sysroot="%SYSROOT%"@%GCC% %*
写一个hello.c文件
#include <stdio.h>int main(int argc, char *argv[]){printf("Hello, wolrd!\n");return 0;}?编译时执行build.bat -o hello hello.c?运行模拟器(我的avd名称为add3)
> emulator -avd add3?在模拟器内创建可写的目录/data/wmt(有些目录是只读的,但/data目录是可读写的)
> adb shell
# cd /data/
# mkdir wmt
# pwd
?确保已经设置好adb的PATH后用adb把编译得到的elf文件上传到模拟器
> adb push hello /data/wmt
然后用adb shell执行这个程序(注意要增加可执行权限)
> adb shell
# cd /data/wmt
# ls -l
# chmod 744 hello
# ./hello
Hello, wolrd!
然后可以用rm删除elf文件或用rm -r删除整个目录。
14. 用adb调试Android-x86参考自http://www.android-x86.org/documents/debug-howto
1. 在VMware上右键->Settings...,在Network Adapter一栏设置Network connection选择Host-only:A private network shared with the host2. 启动Android X86,开机完毕后,按Alt+F1从图形界面切换到黑白控制台3. 控制台上输入以下内容:ANDROID root@android:/ # netcfglo UP 127.0.0.1 255.0.0.0 0x00000049eth0 UP 192.168.140.128 255.255.255.0 0x0001043也就是说android对外的局域网IP是192.168.140.128(eth0表示它是第一张网卡)3. 由于VMware现在处于Host-only模式,所以可以直接在宿主系统中用上面那个ANDROID的对外IP建立TCP连接。例如这里可以用adb connect 192.168.140.128:5555创建一个连接,然后用adb shell远程登陆用adb disconnect 192.168.140.128:5555删除连接