1.安卓系统架构

  1>底层是Linux系统

  2>函数库层 由C或C++写的

  3>Application frameWork应用的框架层

  4>顶层是应用层

2.JVM与DVM介绍

  1> dvm(dx.bat)把所有的.class文件变成一个.dex文件(提高速度)

  2>dvm的架构基于寄存器(基于CPU的内存)

  3> jvm把.java文件编译成.class文件

  4>jvm的架构基于栈内存

3.Dalvik模式与ART模式

  Android系统是以Linux系统为底层构建的,Android系统是开源(源代码公开)的,Android系统势必会适配到不同硬件配置的设备上,因此谷歌为了降低应用的开发难度在Linux底层之上构筑了一个名为“Dalvik”的虚拟机

  ART模式英文全称为:Android runtime,谷歌Android 4.4系统新增的一种应用运行模式,与传统的Dalvik模式不同,ART模式可以实现更为流畅的安卓系统体验ART模式可让系统体验更加流畅,不过只有在安卓4.4以上系统中采用此功能

通过在安装应用程序时,自动对程序进行代码预读取编译,让程序直接编译成机器语言,免去了Daivik模式要实时转换代码,实现了高效率,省电,占用更低的系统内存,手机远行流畅

4.开发环境搭配

  1>appt Android应用打包工具

  2> adb Android调试桥

基于Eclipse工具开发Android,需要注意的有如下几点:

  1 . 配置JDK的环境变量

JAVA_HOME=D:\Java\jdk1.8.0_91

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

PATH=D:\Java\jdk1.8.0_91\bin;

校验

随便目录运行  java -version

2 . 运行eclipse ADT

1.配置一个环境变量ANDROID_HOME=D:\Java\adt-bundle-windows-x86_64-20140702\sdk

2.直接运行eclipse.exe

总结: eclipse不需要安装,我们使用安卓自带的eclipse即可

  注: 在搭建Android工程之前,先下载一个海马模拟器

第一个Android程序

   

    启动eclipse后,切换到DDMS透视图

       

   Devices会自动的连接到海马玩模拟器

   

在这个时候,我们创建一个安卓的项目

  然后点击Next直到看到以下界面

  

  到了这一步,Android的工程已经搭建完成了,下面我们看一下安卓工程的架构

  

下面我们来操作安卓的控件

  

  首先在安卓工程中找到layout布局资源文件加并打开这个文件,在这个时候我们还需要点击eclipse工具左下角的Graphical Layout,就会看到上图的操作界面

  

  从form widgets中拖出要操作的控件到安卓模拟器中

  

  代码体验

            MainActivity类

package com.example.androidhelloword;

import android.app.Activity;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

import android.widget.TextView;

public class MainActivity extends Activity {//继承了安卓API中的Activity类

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main); //加载布局

/**

* 查找控件通过Id

* this.findViewById(activity_main.xml文件中的某一控件的id)

*/

  TextView v =  (TextView) this.findViewById(R.id.textView1);

//修改指定id的控件的内容

  v.setText("呵呵");

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

// Handle action bar item clicks here. The action bar will

// automatically handle clicks on the Home/Up button, so long

// as you specify a parent activity in AndroidManifest.xml.

int id = item.getItemId();

if (id == R.id.action_settings) {

return true;

}

return super.onOptionsItemSelected(item);

}

}

           activity_main.xml文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

tools:context="com.example.androidhelloword.MainActivity" >

<TextView

android:id="@+id/textView1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/hello_world" />

<Button

android:id="@+id/button1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignLeft="@+id/textView1"

android:layout_below="@+id/textView1"

android:layout_marginLeft="23dp"

android:layout_marginTop="57dp"

android:text="Button" />

<Button

android:id="@+id/button2"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignBaseline="@+id/button1"

android:layout_alignBottom="@+id/button1"

android:layout_marginLeft="37dp"

android:layout_toRightOf="@+id/button1"

android:text="Button" />

</RelativeLayout>

总结: 当每次对控件进行操作的时候,都会在这个文件中自动的生成控件的代码,而每一个控件的代码都有一个id,而这个id唯一的标识了每一个控件

              R.java类

package com.example.androidhelloword;

public final class R {

public static final class attr {

}

public static final class dimen {

/**  Default screen margins, per the Android Design guidelines.

Example customization of dimensions originally defined in res/values/dimens.xml

(such as screen margins) for screens with more than 820dp of available width. This

would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively).

*/

public static final int activity_horizontal_margin=0x7f040000;

public static final int activity_vertical_margin=0x7f040001;

}

public static final class drawable {

public static final int ic_launcher=0x7f020000;

}

/**

*

* 当每添加一个控件的时候,都会在R.java文件的id内部类中添加一个控件的id

* 用于标识activity_main.xml文件中的控件

*/

 public static final class id {

        public static final int action_settings=0x7f080003;

        public static final int button1=0x7f080001;

        public static final int button2=0x7f080002;

        public static final int textView1=0x7f080000;

}

public static final class layout {

public static final int activity_main=0x7f030000;

}

public static final class menu {

public static final int main=0x7f070000;

}

public static final class string {

public static final int action_settings=0x7f050002;

public static final int app_name=0x7f050000;

public static final int hello_world=0x7f050001;

}

public static final class style {

/**

Base application theme, dependent on API level. This theme is replaced

by AppBaseTheme from res/values-vXX/styles.xml on newer devices.

Theme customizations available in newer API levels can go in

res/values-vXX/styles.xml, while customizations related to

backward-compatibility can go here.

Base application theme for API 11+. This theme completely replaces

AppBaseTheme from res/values/styles.xml on API 11+ devices.

API 11 theme customizations can go here.

Base application theme for API 14+. This theme completely replaces

AppBaseTheme from BOTH res/values/styles.xml and

res/values-v11/styles.xml on API 14+ devices.

API 14 theme customizations can go here.

*/

public static final int AppBaseTheme=0x7f060000;

/**  Application theme.

All customizations that are NOT specific to a particular API-level can go here.

*/

public static final int AppTheme=0x7f060001;

}

}

  远行Android工程

  

 总结: 选择安卓项目,右击显示上图,点击Run As--->1Android Application远行

总结:当点击OK时,就会显示上图的界面,红色框框,框住的模拟器,当没有出现红色框框,框住的模拟器时,可能是模拟器的版本不兼容安卓的版本了,那么我们可以在AndroidManifest.xml文件中配置一下安卓的或是更换模拟器,远行的结果将会在模拟器中显示,如下图:

搭建Android工程的步骤及其第一个安卓程序的更多相关文章

  1. 七天从零基础学习android(2)--第一个安卓程序

    在环境配置的那一部分,已经把基础的环境配置好了,接下来应该实现第一个安卓程序,就是著名的hello world 先在avd里面新建一个虚拟机,并且启动它 然后该虚拟机器能够在eclipse上正常识别 ...

  2. Android 系统移植与驱动开发--第二章搭建Android环境核心步骤及心得

    第二章 搭建Android 开发环境 虽然在这一章中讲的是Android底层开发环境,但是相应伴随的还有Android NDK程序来测试Linux驱动,HAL程序库.底层开发不仅需要交叉编译环境,还要 ...

  3. 用android studio创建第一个安卓程序加载html5 页面

    前言 软件版本:android studio v1.0正式版,由于v0.x以来软件变化一直比较大,很多问题搜索的解决方案也都是v0.x版本时代的,故首先声明一下版本. 动机:由于工作中需要对移动端软件 ...

  4. Android项目第一天,下载安装Android Studio和“我的第一个安卓项目”

    一.AS的下载我是在AS官方网站进行下载的最新版本,如图所示 二.AS的安装过程 点击你下载的安装包安装即可,傻瓜式一站到底. 到这一步时选择第二个按钮, 随后出现如下界面 这个窗口是提示我们设置代理 ...

  5. AndroidStudio学习笔记-第一个安卓程序

    要带一个本科生做一部分跟安卓有点关系的项目,于是趁着机会学习一下编写安卓程序. 第一篇材料来自谷歌官方,传送门:https://developer.android.com/training/basic ...

  6. 手把手教你用android studio创建第一个安卓程序加载html5页面(二)

    经过上一篇,我们已经可以打开html页面了,但是有很多细节方面的内容我们还需要调整. 打开链接的问题 细心的网友可能已经发现,打开百度页面后,点击顶部的链接,会在手机的浏览器中打开相应的页面,这显然不 ...

  7. eclipse搭建android开发环境详细步骤

    搭建android应用的开发环境,一套程序下来也是相当繁琐的,这里我整理下一整套详细流程: 1,下载JDK 去oracle官网下载最新版本的jdk,官网地址 http://www.oracle.com ...

  8. [转载]在Windows下搭建Android开发环境

    http://jingyan.baidu.com/article/bea41d437a41b6b4c51be6c1.html 在Windows下搭建Android开发环境 | 浏览:30780 | 更 ...

  9. Android开发之 Windows环境下通过Eclipse创建的第一个安卓应用程序(图文详细步骤)

    第一篇  windows环境下搭建创建的第一个安卓应用程序 为了方便,我这里只采用了一体包进行演示. 一.下载安卓环境的一体包. 官网下载:安卓官网(一般被墙了) 网盘下载: http://yunpa ...

随机推荐

  1. 机器学习实战-K-nearest neighbors 算法的优缺点

    K临近算法是基于实例的学习,使用算法的时候我们必须要有接近分类结果的实例训练样本数据. 优点:精度高,对异常值不敏感 缺点: 时间复杂度和空间复杂度比较大.(如果训练样本数据集比较大,需要大量的空间来 ...

  2. 《Vuser虚拟用户开发》读书笔记

    学会了Vuser开发只是算了性能测试入了门.要做好性能测试还需要了解系统的功能,架构和设计测试用例. 脚本选用什么协议的依据是需要模拟的客户端与服务器之间的通信采用什么协议.与具体的开发技术并无直接的 ...

  3. 【转】本地存储-localStroage/sessionStorage存储

    原文地址:[js学习笔记-103]----本地存储-localStroage/sessionStorage存储 客户端存储 l  WEB存储 web存储最初作为html5的一部分被定义成API形式,但 ...

  4. (1) 第一章 Java体系结构介绍

    1.网络带来的挑战和机遇 (1).挑战一: 网络包含的设备越来越广泛, 硬件体系不同, 操作系统不同,用途不同. java解决办法: 通过创建与平台无关的程序来解决这个问题.一个java程序可以不需要 ...

  5. 第四章 函数(JavaScript:语言精粹)

    函数包含一组语句,用来指定对象的行为,其代码可以用来重复使用.   一般来说,编程就是将一组需求分解成一组函数和数据结构的技能.   概览:函数对象 | 函数字面量 | 调用 | 方法调用模式 | 函 ...

  6. C#程序设计---->计算圆面积windows程序

    值得说的就是添加一个回车事件, http://blog.csdn.net/nanwang314/article/details/6176604 private void textBox1_KeyDow ...

  7. Scrum Meeting 7-20151209

    任务安排 姓名 今日任务 明日任务 困难 董元财 服务器购买记录接口 请假(编译攻坚) 无 胡亚坤 发布记录和购买记录 请假(编译攻坚) 无 刘猛 完成Scrum Meeting 请假(编译攻坚) 无 ...

  8. 进程、线程、socket套接字-资源大小 & 切换代价

    另,进程 & 线程的很多知识可以看这里:http://www.cnblogs.com/charlesblc/p/6135666.html 今天查了一下进程和线程的资源占用. 比如问:栈和堆的大 ...

  9. OpenGL的glTexImage2D()与gluBuild2DMipmaps()的使用方法及区别

    OpenGL的glTexImage2D()与gluBuild2DMipmaps()的使用方法及区别 说明:两者的都是生成纹理,即:将载入的位图文件(*.bmp)转换成纹理贴图. 1.glTexImag ...

  10. git drupal eclipse

    eclispe如何打补丁https://www.drupal.org/patch/apply打patch,初级详细教程https://www.drupal.org/node/620014