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连接到已经运行的模拟器上,以节约时间:

Android Platform 3.0 SDK和Eclipse ADT安装记录(最初版本,纪念用)

----------------------

如果按下工具栏调试按钮时出现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手册
 
(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 {
	// Debugging
	private 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 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/app
cd /data/app
root@android:/data/app # ls
ls
ApiDemos.apk
CubeLiveWallpapers.apk
GestureBuilder.apk
SoftKeyboard.apk
WidgetPreview.apk
com.example.helloandroid-1.apk
root@android:/data/app #
(apk的名称被改为com.example.helloandroid-1.apk)
 
<7> 日志查看
(例如查看HelloAndroid标签的Debug信息) (注:可以在参数中设置过滤器,但我尝试过不行,所以用find代替)
> adb logcat | find "D/HelloAndroid"
(20131231注:)
正确的过滤器写法应该是 adb logcat HelloAndroid:* *:S
不要漏掉后面的*:S(表示其它非HelloAndroid的TAG被设置为Silence级别,即屏蔽其它TAG),
 
<8> 卸载软件
官方给出的卸载方法( 但有问题)是:
> adb shell pm uninstall <Java的包名>
Java包名可以查看DDMS视角中的File Explorer视图中Data/app中安装的apk的Info一栏,
一般是Android应用的package名称
可以尝试用-k彻底删除所有缓存
不过,这种方法会造成修改过源代码后重新编译的apk无法安装到模拟器上,因为签名改变了。
 
正确做法是手工 在模拟器中settings里卸载软件
see
 
启动模拟器,然后进入菜单
settings->applications->mange
applications-> select the application->select "unistall".
 
20110106:
可以用
adb shell pm list packages
查看安装的包名,
参考自
20110908增加
<9> 用NDK编译简单程序
NDK需要单独下载,带gcc工具链,可以直接用bat运行。编译用build.bat内容如下
(如果不会设置gcc的参数,可以打开ndk-build的V=1开关编译示例工程,查看其详细输出。只不过它使用g++输出.so动态库,而下面只是希望用gcc编译可执行elf文件)
 
@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
参考自
 
1. 在VMware上右键->Settings...,在Network Adapter一栏设置
Network connection选择Host-only:A private network shared with the host
2. 启动Android X86,开机完毕后,按Alt+F1从图形界面切换到黑白控制台
3. 控制台上输入以下内容:
ANDROID root@android:/ # netcfg
lo UP 127.0.0.1 255.0.0.0 0x00000049
eth0 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
删除连接
 

你可能感兴趣的:(android)