【Android开篇】-- Android环境搭配

来源:互联网 发布:淘宝商品关键词优化 编辑:程序博客网 时间:2024/05/07 13:27
 

      Android环境搭配

1、说明

我们主要是在windows下用Eclipse进行Android开发,故该Android的环境搭配说明只是针对Windows下的EclipseIDE版本。

 

2、所需软件

软件名称

版本及软件全称

JDK1.6

jdk-6u13-windows-i586-p.exe

Eclipse3.4.2

eclipse-java-ganymede-SR2-win32.zip

Google Android SDK

android-sdk-windows-2.1_r1.zip

ADT-0.9.0

ADT-0.9.0.zip

 

3、安装过程

       说明:各软件的安装过程没有什么特殊的选项问题,更一般的软件安装无二,故具体的安装过程没有列出;主要的问题是一些环境变量等的设置。

1)安装JAVA JDK SE1.6

     设置环境变量

      ①、JAVA_HOME

       JAVA_HOME=C:\ProgramFiles\Java\jdk1.6.0_13(选择你的安装目录)

②、JAVA_JRE_HOME

       JAVA_JRE_HOME=C:\ProgramFiles\Java\jdk1.6.0_13\jre(选择安装目录下的jre目录)

③、CLASSPATH     

CLASSPATH=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt. jar;%JRE_HOME%\lib;%JRE_HOME%\lib\rt.jar;%JAVA_JRE_HOME%\lib;

%JAVA_JRE_HOME% \lib\rt.jar

④、Path(要使用命令行工具必须配置)  

Path=%Android_SDK_HOME%\tools;%JAVA_HOME%\bin;%JRE_HOME%\bin;%JAVA_JRE_HOME%\bin;

 

2)解压Eclipse3.4.2

解压eclipse-java-ganymede-SR2-win32.zip 到C:\EclipseForAndroid\(这个路径及目录可以自定义了)

3)解压GoogleAndroidSDK

解压android-sdk-windows-1.5_r1.zip 到C:\MobilePhoneDEV\AndroidSDK(路径及目录同Eclipse)

4)Eclipse 下安装ADT0.9.0

复制ADT-0.9.0.zip 到C:\ (可以是任何位置了)

打开C:\EclipseForAndroid\eclipse.exe(安装位置不同,该目录也会不同)

设置工作路径为C:\WorkSpace

Help->Soft Ware Update->findand install->Search for new features to install -> Next ->

NewArchived site->选中C:\ADT-0.9.0.zip->OK->Finish->ADT-0.9.0.zip选勾-> Next -> Accept -> Next ->Finish- >InstallAll->Restart “YES”(Eclipse3.3版本)

         Help->SoftWare Update..->Available Software->Add Site..->Local->选中ADT-0.9.0.zip ->OK->将ADT-0.9.0.zip选勾->Install…(Eclipse3.4版本)

5)设置GoogleAndroidSDK 路径

Window->preferences->选中Android->SDKLocation中选择GoogleAndroidSDK的安

装路径C:\MobilePhoneDEV\AndroidSDK->OK

 

二、Android项目目录结构

1、根目录下的文件及文件夹应用

1)src/

       该目录用于存放编写的JAVA源代码

2)gen/

       该目录不用我们开发人员维护,但又是非常重要的目录。该目录用来存放由Android开发工具所生成的目录;该目录下所有的文件都不是有Android开发人员创建的,而是由ADT自动生成的。

3)Android X.X

       该目录用于存放Android自身的jar包

4)assets/

       该目录用于存放应用中用到的类似于视频文件、MP3等一些媒体文件。

5)res/

       resource,为资源目录。该目录可以存放一些图标、界面文件、应用中用到的文字文件信息等。

6)AndroidManifest.xml

       该文件是清单文件,它列出了应用中所使用的所有组件,如“Activity”,以及广播接收者、服务等组件。

7)default.properties

       该文件存放了项目对应的一些环境配置,如应用要求的最低Android版本等。它一般不需要手工去修改。

 

2、assets与res目录区别

       资源是Android应用程序不可或缺的部分。资源是你想包含和引入到应用程序里面的一些外部元素,比如图片、音频、视频、文本字符串、布局、主题等。每个Android应用程序包含一个资源目录(res/)和资产目录(assets/),但资产不经常被使用,因为它们的应用很少。仅在需要读取原始字节流时才需要保存数据在assets/目录。

res/和assets/目录均在Android项目树的顶端,和源代码目录(src/)处在同一级上。资源和资产从表面上看没多大区别,不过总体上,在存储外部内容时资源用得更多。

真正的区别在于任何放置在资源目录里的内容可以通过您的应用程序的R类访问,这是被Android编译过的。而任何存放在资产目录里的内容会保持它的原始文件格式,为了读取它,你必须使用AssetManager来以字节流的方式读取文件。所以保持文件和数据在资源中(res/)中会更方便访问。

资源(res/)被编译到最终的 APK 文件里。Android 创建了一个被称为R的类 ,这样你在Java代码中可以通过它关联到对应的资源文件。R类包含的子类的命名由资源在res/目录下的文件夹名称所决定。

 

 

3、res/目录下子目录详解

1)res/drawable文件夹

res/目录下三个dawable文件夹(在Android1.6及以前版本只有一个drawable文件夹),【drawable-*dpi】,区别只是将图标按分辨率高低来放入不同的目录。

①、【drawable-hdpi】用来存放高分辨率的图标。

②、【drawable-mdpi】用来存放中等分辨率的图标。

③、【drawable-ldpi】用来存放低分辨率的图标。

程序运行时可以根据手机分辨率的高低选取相应目录下的图标。不过,如果不想准备过多图片,那么也可以只准备一张图标将其放入三个目录的任何一个中去。

2)res/layout文件夹

       该文件夹下包含布局文件,ADT默认自动创建的是“main.xml”文件。默认创建的main.xml文件格式及主要内容如下(可以自定义添加各种组件):

<?xml version=”1.0” encoding=”utf-8”?>

<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”

android:orientation=”vertical”

android:layout_width=”fill_parent”

android:layout_height=”fill_parent”

<TextView>

android:layout_width=”fill_parent”

android:layout_height=”wrap_parent”

android:text=”@string/hello”

    />

</LinearLayout>  <!-- LinearLayou是一种布局方式(线性布局) -->

 

3)res/values文件夹

       ①、strings.xml

       它用于定义字符串和数值,在Activity中可以使用getResources().getString(resourceID)或getResources().getText(resourceID)取得资源。

       该文件的格式如下:

<?xml version=”1.0” encoding=”utf-8”?>

<resources>

<string name=”resourceID”> XXX </string>

… ….

</resources>

       将应用中出现的文字单独存放在strings.xml中,主要是为了:A、国际化;B、减少应用的体积,减低数据冗余。

       ②、arrays.xml

       该文件用于定义数组,在Activity中使用getResources().getStringArray(resourceID)获取一个String数组。

       该文件的格式如下:

<?xml version=”1.0” encoding=”utf-8”?>

<resources>

<string-array name=”resourceID”>

    <item> XXX </item>

    … …

<string-array>

… …

</resources>

      

③、colors.xml

       定义颜色及颜色字串数组,可以在Activity中使用getResources().getDrawable(resourceID)或getResoureces().getColor(resourceID)获取颜色资源。

       该文件格式如下:

<?xml version=”1.0” encoding=”utf-8”?>

<resources>

<color name=”resourceID(white)”> #000000 </color>

… …

</resources>

<!-- color标签中的name属性中括号内的内容为name取值方式的实例 -->

       ④、dimens.xml

       用于定义尺寸数据,在Activity中可以使用getResources().getDimension(resourceID)获取相关资源。

       该文件格式如下:

<?xml vesion=”1.0” encoding=”utf-8”?>

<resources>

    <dimen name=”resourceID(height)”> 10dip <dimen>

</resources>

      

⑤、styles.xml

       该文件用于自定义样式。文件格式如下:      

<?xml version=”1.0” encoding=”utf-8”?>

<resources>

<style name=”***”>

    <item name=”android:textSize”> 18px </item>

    <item name=”android:textColor”> #000000 </item>

    … …

</style>

</resources>

 

4、gen/目录下的R.java

       R.java文件中默认有attr、drawable、layout、string等四个静态内部类,每个静态内部类分别对应一种资源,如layout静态内部类对应res/layout中的界面文件,其中每个静态内部类中的静态常量分别定义一条资源标识符。

如“public static final int main=0x7f030000;”对应的是res/layout目录下的main.xml文件。具体的对应关系如图2.1。

R.java文件除了有自动标识资源的“索引”功能外,还有一个主要的功能是:当res目录中的某个资源在应用中没有被使用到时,在该应用被编译的时候系统就不会把未使用到资源编译到应用的APK包中,这样可以节省Android手机资源。

 

图2.1 R.java与各资源对应关系图

 

5、组件标识符

1)在Activity中获取资源

①、获取系统资源方法:android.R.resource_type.resource_name

②、获取自定义资源:R.resource_type.resource_name

2)在XML文件中引用资源

       ①、@[package:] type / name,如个使用自己包下的资源可以省略package。

如main.xml以及AndroidMainfest.xml文件中通过“@drawable / icon”的方式获取图标资源。其中“@”代表“R.java”类;“drawable”代表R.java的静态内部类“drawable”;“icon”代表静态内部类“drawable”中的静态属性“icon”,而该属性指向res目录下的“drawable-*dpi”中的“icon.png”图标。

       ②、引用Android系统中的资源,得加上包名“android:”,如【android:textColor=“@android:color/red”】。

3)“@+id/string_name”表达式

       “+”表示在R.java的名为id的内部类中添加一条记录,该记录的名称为“string_name”。如“@+id/button_ok”即在R.java文件的id这个静态内部类中添加一条常量名为“button_ok”,该常量就是该资源的标识符。通过该方式生成的资源标识符,也可以通过以“@id/string_name”的方式引用。

 

6、AndroidManifest.xml

1)AndroidManifest.xml文件简介

每个应用程序都有一个功能清单文件AndroidManifest.xml(一定是这个名字)在它的

根目录里。这个清单文件给Android系统提供了关于这个应用程序的基本信息,系统在运行

任何程序代码之前必须知道这些信息。开发的Activity、Broadcast、Service都要在AndroidManifest.xml中进行定义。使用到系统自带的服务如拨号服务、应用安装服务、GPRS服务等都必须在AndroidManifest.xml中声明权限。

2)AndroidManifest.xml主要包含的功能

①、命名应用程序的Java应用包,这个包名用来唯一标识应用程序;

      ②、描述应用程序的组件——活动、服务、广播接收者、内容提供者;对实现每个组件      和公布其功能(比如,能处理哪些意图消息)的类进行命名。这些声明使得Android系统了解这些组件以及它们在什么条件下可以被启动;

③、决定应用程序组件运行在哪个进程里面;

④、声明应用程序所必须具备的权限,用以访问受保护的部分API,以及和其它应用程       序交互;

⑤、声明应用程序其他的必备权限,用以组件之间的交互;

⑥、列举测试设备Instrumentation类,用来提供应用程序运行时所需的环境配置及其       他信息,这些声明只在程序开发和测试阶段存在,发布前将被删除;

⑦、声明应用程序所要求的Android API的最低版本级别;

     ⑧、列举application所需要链接的库;

3)AndroidManifest.xml文件格式

该文件的格式如下,应用开发者不能添加自己的元素或属性。

<?xml version=”1.0” encoding=”utf-8”?>

<manifest>

<uses-permission … />

<permission … />

<permission-tree … />

<permission-group … />

<instrumentation … />

<uses-sdk … />

<uses-configuration … />

<uses-feature … />

<supports-screens … />

<application>

    <activity>

       <intent-filter>

           <action … />

           <actegory … />

               <data … />

       </intent-filter>

       <meta-data … />

    </actitvity>

        <activity-alias>

            <intent-filter> … … </intent-filter>

            <meta-data .. />

    </activity-alias>

        <service>

            <intent-filter> … … </intent-filter>

            <meta-data … />

        </service>

        <recevier>

            <intent-filter> … … </intent-filter>

            <meta-data>

        </recever>

        <provider>

            <grant-uri-permission .. />

            <path-permission … />

            <meta-data … />

        </provider>

        <uses-library .. />

</application>

</manifest>

 

7、Android程序的执行流程分析

Android应用程序发布到手机上之后,该应用的图标时,系统会将这个点击事件包装成一个Intent,该Intent包含两个参数:

{    action :"android.intent.action.MAIN",

category :"android.intent.category.LAUNCHER"

}

这个意图被传递给HelloWorld这个应用之后在应用的功能清单文件中寻找与该意图匹配的意图过滤器,如果匹配成功,找到相匹配的意图过滤器所在的Activity元素,再根据<activity>元素的“name”属性来寻找其对应的Activity类。接着Android操作系统创建该

Activity类的实例对象,对象创建完成之后,会执行到该类的onCreate方法,此OnCreate

方法是重写其父类Activity的OnCreate方法而实现。onCreate方法用来初始化Activity实例

对象。如下是HelloWorld.java类中onCreate方法的代码。

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

… …

}

其中super.onCreate(savedInstanceState)的作用是调用其父类Activity的OnCreate方法来实现对界面的画图绘制工作。在实现自己定义的Activity子类的OnCreate方法时一定要记得调用该方法,以确保能够绘制界面。setContentView(R.layout.main)的作用是加载一个界面。该方法中传入的参数是“R.layout.main”,其含义为R.java类中静态内部类layout的静态常量main的值,而该值是一个指向res目录下的layout子目录下main.xml文件的标识符。因此代表着显示main.xml所定义的画面。

Android程序执行的整个序列图如下所示。

图2.2 Android引用执行序列图

 

 

原创粉丝点击