[Android系列—] 1. Android 开发环境搭建与Hello World
前言
開始之前先熟悉几个名词:
SDK -- Software Development Kit, 软件开发工具包。这个词并不陌生, JDK,就是Jave Development Kit,相同对于Android 来说也有Android SDK.
Android SDK 提供了构建,測试和调试安卓应用的API 库和开发人员工具。
ADT- Android Developer Tools.安卓开发人员工具, 事实上这里就是Eclipse 用于Android 开发的插件。
高速开发环境搭建
在搭建Android 开发环境之前, 首先要安装JDK,然后下载一个ADT Bundle.
ADT Bundle 是为了高速开发提供的一个下载包
这个下载包包括了:
1, Eclipse 和ADT 插件
2. Android SDK Tools
3. Android Platform-tools
4. The latest Android platform
5. The latest Android system image for the emulator
1. 下载安装JDK
JDK 眼下的最新版本号已经到 1.8 版了。
就眼下的ADT的要求来说, 1.6 版就能够了。
这里使用的是 : jdk1.6.0_24 版本号。
JDK的历史版本号下载能够到:
http://www.oracle.com/technetwork/java/javase/archive-139210.html
下载完毕之后, 点击执行, 一直next 就能够了。
安装完毕后配置下面JAVA_HOME.
这里配置成: C:\Program Files\Java\jdk1.6.0_24
2. 下载安装ADT Bundle
ADT Bundle 事实上下载解压就能够了。
下载地址: http://developer.android.com/sdk/index.html
点击图中的button就能够了:
眼下的最新文件号是 : adt-bundle-windows-x86-20140321.zip
下载完毕后解压到你须要的文件夹, 这里解压到 C:\mysoftware 中, 解压后的文件夹结构:
至此, 环境基本上搭建完毕。
也可到例如以下地址下载:
Eclipse 无法启动
理论上,此时进入eclipse 文件夹点击 eclipse.exe 应该就能够启动了。
可是, 发现eclipse 启动之后 , 闪一下就没有了。
eclipse 文件夹下产生一个 hs_err_pidXXXX.log 的错误文件。
错误的内容例如以下:
# # A fatal error has been detected by the Java Runtime Environment: # # EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x575cf75b, pid=5912, tid=5832 # # JRE version: Java(TM) SE Runtime Environment (7.0_55-b13) (build 1.7.0_55-b13) # Java VM: Java HotSpot(TM) Client VM (24.55-b03 mixed mode windows-x86 ) # Problematic frame: # C [gdiplus.dll+0xf75b] # # Failed to write core dump. Minidumps are not enabled by default on client versions of Windows # # If you would like to submit a bug report, please visit: # http://bugreport.sun.com/bugreport/crash.jsp # The crash happened outside the Java Virtual Machine in native code. # See problematic frame for where to report the bug. # --------------- T H R E A D --------------- Current thread (0x00df9800): JavaThread "main" [_thread_in_native, id=5832, stack(0x00030000,0x00130000)] siginfo: ExceptionCode=0xc0000005, reading address 0xa74c9eb4 Registers: EAX=0x1008090b, EBX=0x57975790, ECX=0x00000002, EDX=0x00000010 ESP=0x0012e41c, EBP=0x0012e430, ESI=0xa74c9eb4, EDI=0xa74c9eb4 EIP=0x575cf75b, EFLAGS=0x00010297 Top of Stack: (sp=0x0012e41c) 0x0012e41c: 57782d78 57782db0 00000001 a74c9eb4 0x0012e42c: a74c9eb4 0012e44c 575cf3a3 00000002 0x0012e43c: 57975790 a74c9eb4 57782d60 000003ad 0x0012e44c: 0012e4a4 5769aaa2 a74c9eb4 57975790 0x0012e45c: 00000002 000003ad 0000004f 00000000 0x0012e46c: 57949d48 57782d60 a742b000 57782d60 0x0012e47c: a742b000 00000004 00000000 00000000 0x0012e48c: 00000002 00000000 00000004 00000000 Instructions: (pc=0x575cf75b) 0x575cf73b: 57 90 90 90 90 8b 03 8b d0 c1 ea 18 83 fa 00 74 0x575cf74b: 45 81 fa ff 00 00 00 0f 84 3c f6 ff ff 0f 6e e0 0x575cf75b: 8b 06 0f 6e c0 0f 60 c7 81 f2 ff 00 00 00 0f 6e 0x575cf76b: d2 0f 61 d2 0f 62 d2 0f d5 c2 0f fd c3 0f 6f d0 Register to memory mapping: EAX=0x1008090b is an unallocated location in the heap EBX=0x57975790 is an unknown value ECX=0x00000002 is an unknown value EDX=0x00000010 is an unknown value ESP=0x0012e41c is pointing into the stack for thread: 0x00df9800 EBP=0x0012e430 is pointing into the stack for thread: 0x00df9800 ESI=0xa74c9eb4 is an unknown value EDI=0xa74c9eb4 is an unknown value Stack: [0x00030000,0x00130000], sp=0x0012e41c, free space=1017k Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) C [gdiplus.dll+0xf75b] C [gdiplus.dll+0xf3a3] C [gdiplus.dll+0xdaaa2] C [gdiplus.dll+0xdac57] C [gdiplus.dll+0x79c24] C [gdiplus.dll+0x16d7b] C [gdiplus.dll+0xf2c0] C [gdiplus.dll+0x4efe2] C [gdiplus.dll+0x6d257] C [gdiplus.dll+0x6d208] C [gdiplus.dll+0x6d55e] C [gdiplus.dll+0x9fbbc] C [gdiplus.dll+0x9fcc8] C [swt-gdip-win32-4236.dll+0x532b] j org.eclipse.swt.internal.gdip.Gdip.Graphics_DrawLines(II[II)I+0 j org.eclipse.swt.graphics.GC.drawPolyline([I)V+72 j org.eclipse.e4.ui.workbench.addons.perspectiveswitcher.PerspectiveSwitcher.paint(Lorg/eclipse/swt/events/PaintEvent;)V+116 j org.eclipse.e4.ui.workbench.addons.perspectiveswitcher.PerspectiveSwitcher$5.paintControl(Lorg/eclipse/swt/events/PaintEvent;)V+5 j org.eclipse.swt.widgets.TypedListener.handleEvent(Lorg/eclipse/swt/widgets/Event;)V+1036 J org.eclipse.swt.widgets.EventTable.sendEvent(Lorg/eclipse/swt/widgets/Event;)V j org.eclipse.swt.widgets.Widget.sendEvent(ILorg/eclipse/swt/widgets/Event;Z)V+73 j org.eclipse.swt.widgets.Widget.sendEvent(ILorg/eclipse/swt/widgets/Event;)V+4 j org.eclipse.swt.widgets.Composite.WM_PAINT(II)Lorg/eclipse/swt/internal/win32/LRESULT;+1429 J org.eclipse.swt.widgets.Control.windowProc(IIII)I V [jvm.dll+0x13f25a] V [jvm.dll+0x202c1e] V [jvm.dll+0x13f2dd] V [jvm.dll+0xc9b22] V [jvm.dll+0xcc0d3] C [swt-win32-4236.dll+0x122f] C 0x56d80018 C [USER32.dll+0x8734] C [USER32.dll+0x8816] C [USER32.dll+0x1a013] C [USER32.dll+0x1a039]
从以上错误,非常难看出是什么原因造成的, 仅仅是大概知道无法读内存。
这里直接给出解法:
改动 eclipse.ini 的 -Xmx 的配置, 从 768 改成 600
改动之后保存, 重新启动eclipse, 一切正常了。
果然是内存问题造成了。
应该通过配置java_ops 也能解决这个问题。
Hello World
到这里, 环境搭建就没问题了。
接下来, 创建一个Android 的Hello World.
1. 加入�一个安卓虚拟设备
直接点击虚拟设备管理图标或是 Window-->Android Virtual Device Manager
点击 "new ", 加入�
2. 建立一个安卓应用程序
3. 什么都不做, 直接执行
4. 执行结果
5. 点击进入应用程序的页面,就能开发开发和安装的首个 android app了,
6. 点击 MyFirstApp
Failed to install *.apk on device ...
正常的状况下, 点击执行后,控制台应该出现
在有些机器下,在控制台可能会出现
Failed to install *.apk on device 的错误。
解决方法是:
打开 SDK Manager , 勾选 https