第一天

1,学习目标
    a, android的发展历史,以及android和java的关系
    b,掌握android开发环境搭建
    c,创建第一个android apk
    d,android 工程结构分析
    c,android的调试方法的使用

2,学习内容
     android的发展历史和特点:
    
     特点
        1.手机OS
        2.嵌入式电子设备 广泛采用android系统   以前 wince ,qt
        3.google移动开发平台   竞争对手:IOS,WP 半封闭
        4.最大特点:开源免费  
        

3, android开发环境搭建:
        1.下载JDK---提供java代码编译和运行的环境
        2.下载android SDK ---提供android应用程序所必须的开发包,文档,例子等等
        3.下载 Eclipse IDE ---提供程序编写和编译的集成开发环境
        4.下载 ADT Eclipse插件 ---提供android应用程序的必要工具,比如打包,数字验证等
        google 为方便开发者集成了工具包 adt-bundle-windows-x86 开发工具包 2,3,4
5,版本
    食物版本:   API版本
    1.x     
    2.x
    3.x
    4.x     
    5.0 (最新版本api22-- lollipop 棒棒糖)

7,建立一个helloworld
    0,MiniMum Required SDK:最低支持的android api版本,低于这个版本的android手机不能安装你的应用 
          Target SDK:你的应用最高支持android api版本
      Compile With:哪个版本的android SDK(1.5~4.2)编译你的工程,也就是最适合的,
            最原生支持你的应用的android版本。
      Theme :这个随意,主题选择 
    1,apk产生的过程
        .java->.class->.dex->.apk                                                                                                                                                                                                                                                                                                           
        1) 所有的资源文件,都会被aapt进行处理。解析的结果最后会被aapt通过一个R.java保存一个二进制树的索引,编程时可通过这个R.java文件进行XML的访问。
        2) 所有的Java文件,都会被JDK里的javac工具编译成bin目录下按源代码包结构组织的.class文件(.class是标准的Java可解析执行的格式),
            比如我们这个例子里生成的bin/classes/com/hello/*.class文件。然后这些文件,会通过SDK里提供的一个dx工具转换成classes.dex文件。
            这一文件,就是会被Dalvik 虚拟机所解析执行的
        3) 最后我们得到的编译过的二进制资源文件和classes.dex可执行文件,会通过一个apkbuilder工具采用zip压缩算法打包到一个文件里,
            生成了我们所常见的.apk文件。
        4) 最后.apk文件,会通过jarsigner工具进行校验,这一校验值会需要一个数字签名。如果我们申请了Android开发者帐号,这一数字签名就是
        Android所分发的那个数字证书;如果没有,我们则使用debug模式,使用本地生成的一个随机的数字证书,这一文件位于
        ~/.android/debug.keystore。
        
        
8,如何android设备运行程序
    1)ADT 模拟器
    2)真实设备 装驱动

9,apk文件包含了什么? 通过压缩包文件都可以看到??
    AndroidManifest.xml 清单文件
    classes.dex  //代码的二进制,android虚拟机执行的不是*.class代码而是dex文件,由dx工具产生
    resources.arsc//编译后的二进制资源文件
    res
    META-INF  //数字签名信息 


10,工程结构分析
     APK文件其实是zip格式,但后缀名被修改为apk,通过UnZip解压后,可以看到Dex文件,Dex即Android Dalvik执行程序
    src:源文件
    gen:ADT插件帮我们自动生成的文件,里面包括一个重要文件R.java
    android.jar:Java 归档文件,包含构建应用程序所需的所有的Android SDK 库(如Views、Controls)和APIs 
        有了这个,就可以import各种包和类了
    assets: 资源目录,放一些html,txt mp3、视频类文件等等
    res:放资源文件,比如图片,布局文件和字符串,菜单等文件
        drawable-x:包含一些你的应用程序可以用的图标文件(*.png、*.jpg)
        layout:布局文件,每一个activity都有对应的布局文件xml,控制这个activity各种控件的位置和大小
        values:软件上所需要显示的各种文字。可以存放多个*.xml文件,还可以存放不同类型的数据。
            比如arrays.xml、colors.xml、dimens.xml、styles.xml  string.xml, 键值对在R.java中会生成id
    Androidmanfest.xml:Android工程的系统清单文件,控制应用的图标,名称,访问权限等属性并配置四大组件
    default.properties:记录项目中所需要的环境信息,比如Android的版本等。
    libs:   android-support-v4,保证来高版本sdk开发的向下兼容性

    R.java是根据res目录下的资源信息而自动创建的文件,Android程序开发过程中为你统一管理资源,添加ID、
        有了这个文件,在代码中就可以访问各种资源
        
    包括四个静态内部类,静态类的名字都与res中的一个名字对应,即R类定义该项目所有资源的索引
        drawable:图片类,添加一张图片就产生一个类
        layout:布局类,对应layout中的界面文件
        string:字符串类

11,xml文件--eXtensible Markup Language)即可扩展标记语言,很类似 HTML
    一种简单的数据存储文档描述语言,语法简单,采用树形数据结构,语法更加严格从而保证数据的安全和唯一
    XML 的设计宗旨是存储或传输数据,而非显示数据,html主要用于显示
    1)封闭 xxx自定义
        <xxx 属性1=值1 属性2=值2  ...  />
    2)开放
        <xxx 属性1=值1 属性2=值2  ...  >
                <xxx 属性1=值1 属性2=值2  ...  />
        </xxx>
    3)区分大小写
    比如:
        书
            四大名著
                三国
                西游
                红楼
        xml的例子:
            <book>
                <four_books>
                        <sanguo  category="Class">
                                <title lang="en">Three Kingdoms </title> 
                                <author>罗</author> 
                                <year>985</year> 
                                <price>30.00</price> 
                        </sanguo>
                </four_books>
            </book> 

        xml文件仅仅是纯文本而已,XML 被设计用来结构化、存储以及传输信息,XML 不会做任何事情
        <?xml version="1.0" encoding="utf-8"?>  <!-- 第一行是 XML 声明。它定义 XML 的版本 (1.0) 和所使用的编码 -->
        <note>
                <to>George</to>
                <from>John</from>
                <heading>Reminder</heading>
                <body>Don't forget the meeting!</body>
        </note>
        上面的这条便签具有自我描述性。它拥有标题以及留言,同时包含了发送者和接受者的信息。
        但是,这个 XML 文档仍然没有做任何事情。它仅仅是包装在 XML 标签中的纯粹的信息,这些信息必须由程序员按照
        一定的方式进行解析
    
12,android工程中主要的xml文件:  
    androidmanifest.xml 清单文件 告诉系统我有哪些东西,可以参考Android SDK文档中解释
    <!-- 必须包含一个<application>元素并且指定xlmns:android和package属性 -->
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
        <!-- xlmns:android指定了Android的命名空间 -->
        package="com.test"       //包名,也是一个应用进程的默认名称,一般会以应用的域名来作为包名
        android:versionCode="1"   //给设备程序识别版本用的,必须是一个整数值代表app更新过多少次
        android:versionName="1.0" > //给用户查看版本用的,需要具备一定的可读性,比如“1.0.0”这样的

        <uses-sdk android:minSdkVersion="9" /> //指定Android应用中所需要使用的SDK的版本,最小能够运行的api版本
        
        <application  //应用配置的根标记,位于<manifest>下层  容器:放android程序组件 四大组件
            android:icon="@drawable/ic_launcher"  //应用图标
            android:label="@string/app_name" >  //应用名,安装后在系统中的名字
            <activity   //代表定义的Activity的子类
                android:name=".MyhelloActivity" //类名
                android:label="@string/app_name" >  //窗口的标题

                android:theme="@style/AppTheme" > 
                //主题  若改成:android:theme="@android:style/Theme.Dialog" 就会变成对话框形式的activity

                <intent-filter>  //过滤器,该程序组件能干什么
                <action android:name="android.intent.action.MAIN" /> //应用启动的入口,多个activity存在时先启动该activity

                <category android:name="android.intent.category.LAUNCHER" /> //表示该程序可以显示在桌面上
                </intent-filter>
            </activity>
        </application>

    </manifest>
    ============================================================================

    layout_hello.xml:
        <TextView
                android:id="@+id/textView1"    //给这个控件设置一个id号码,在代码中就可以找到
                                        //自动的在R.java中产生一个id号码
                                        //  class R{              class id{      textView1 =0x70e0e0e0e           }  }
                                        //在代码中就可以直接找到该控件
                                        //  R.id.textView1
                android:layout_width="wrap_content"  //  该控件的宽度, 控件的大小是随着内容变化的
                android:layout_height="wrap_content"  //  该控件的高度
                android:text="@string/hello_world" /> //该控件的显示内容
    values/strings.xml
            <resources>
                <string name="test">好奇纸尿裤</string>
            </resources>
            在其他的地方去使用:
                1,另外的xml文件中会使用:
                    布局xml:
                          <TextView
                            android:id="@+id/tv1"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@string/test" />  //在这个地方引用
                2,在代码中用到:在Activity子类中采用调用
                    String  str = getResources().getString(R.string.test);

    values/dimens.xml: 表示大小尺寸的资源
            <dimen name="mySize">32dp</dimen>
            在其他的地方:
                1,另外的xml文件中会使用:
                    布局xml:
                         <TextView
                            android:id="@+id/tv1"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:textSize="@dimen/mySize"
                            android:text="@string/test" />
    
    values/styles.xml
                <style name="myStyle">
                    <item name="android:textColor">#22ff22</item>
                    <item name="android:textSize">32dp</item>   
                </style>
            使用:
            <TextView
                android:id="@+id/tv1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                style="@style/myStyle"
                android:text="@string/test" />
    menu/hello.xml
            <menu xmlns:android="http://schemas.android.com/apk/res/android" >

                    <item
                    android:id="@+id/action_settings"
                    android:orderInCategory="100"
                    android:showAsAction="never"
                    android:title="@string/action_settings"/>

                    <item
                    android:id="@+id/item2"
                    android:title="@string/test"/>
            </menu>
在Android中打印调试信息:
    1, java中System.out
    2,  Log函数
        private final String TAG = "HelloActivity";
        Log.i(TAG, "str = " + str);
========================================================================
14,如果Activity要操作UI组件对象?
    MVC模式
        1.UI  交给main.xml完成
        2.业务逻辑 交给activity子类重写onCreate()
        3.程序组件有哪些交清单
    MVC架构起始于一個GUI(graphical user interface designpatter,图型用户界面设计原型)原型,其目的是
    实现动态程序设计,使日后对于程序修改及扩展更加便利,并使某些程序代码可重复利用。另外通过对复杂度的
    简化,使程序结构更加直观。
    软件系统通过对自身基本部份分离的同时也给予各部分应有的功能,如同一所大公司一样,将工作区分做到专业化,
    专业人员可以通过自身的专长分组:
        View -视图层能够实现数据有目的的显示,视图需要访问它监视的数据模型(Model)
                    美工或UI设计人员可以独立进行图形接口设计及美化。
        Model -数据模型”(Model)用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法
                    模型不关心它会被如何显示或是如何被操作,比如数据库专家进行数据管理和数据库的实现算法
        Controller -控制器起到不同层面间的组织作用,用于控制应用程序的流程
    

    在Android中,程序设计师利用Java撰写程序逻辑及架构,
    美工设计则使用xml来撰写用户界面,
    数据库人员则针对SQL数据库进行设计及优化。

------------------------------------------------------------------------------------------------------------
资源文件的简单使用:
res:
    strings.xml: 一:是为了国际化  二:为了减少应用的体积,降低数据的冗余
            定义字符串
                    <string name="hello_world">Hello world!</string>
            获取对应的值:
                    1,  在Activity中使用
                                String appName=(String) this.getResources().getString(R.string.hello_world); 
                    2,在其他xml中,比如布局文件
                                android:text="@string/hello_world"
    arrays.xml定义数组
            定义:
            <!--通用的array-->
                 <array name="common">
                    <item>@drawable/ic_launcher</item>
                    <item>@drawable/ic_launcher</item>
                    <item>@drawable/ic_launcher</item>
                    <item>@drawable/ic_launcher</item>
                    <item>@drawable/ic_launcher</item>
                  </array>
                <string-array name="countries"> 
                    <item >中国</item>  
                    <item >美国</item>  
                </string-array> 
            获取:
                java代码:
                    
                    
---------------------------------------------------------------------------------------------------------------
   adb和ddms的使用, E:\adt-bundle-windows-x86-20130522\sdk\platform-tools放进环境变量
    adb:
        adb device 显示当前有效的avd或是真实机器
        adb push上传文件至SD卡
            adb push 001.jpg /sdcard(复制文件到/sdcard目录下)
            adb push pictures /sdcard(复制pictures目录到/sdcard目录下)
            adb shell (进入命令行模式)
                #cd /sdcard(进入/sdcard目录)
                #ls (列出SD卡中的文件)
        adb pull /sdcard/001.jpg .(下载/sdcard的文件到PC)

        adb install filename.apk(安裝filename.apk)
        adb install-r filename.apk(保留已设定数据,重新安裝filename.apk)
        adb uninstall package (移除 APK)
        adb uninstall -k package(移除程序时,保留数据)
            注意package名称不是安装APK套件时的文件名,可以去/data/data或data/app目录查看
    logcat的使用

    DDMS调试环境:Dalvik Debug Monitor Service
        设备面板:当前运行的模拟器,模拟器内的所有进程信息.
        信息输出面板:类似java控制台
        线程跟踪面板:
        Heap内存跟踪面板
        模拟器控制面板
        文件管理面板
  
   Android SDK包全览和查询方法
    sdk/docs/reference

    
3,总结

1, 配置sdk
2,编写第一个Helloworld
3,创建avd
4,使用logcat查看调试信息和DDMS控制台
5,修改各种xml文件
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,302评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,563评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,433评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,628评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,467评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,354评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,777评论 3 387
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,419评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,725评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,768评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,543评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,387评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,794评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,032评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,305评论 1 252
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,741评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,946评论 2 336

推荐阅读更多精彩内容