至此,你应该已经完成以下前期准备事情:

1.安装完JDK

2.安装完SDK(并在Manager中进行相关版本的更新)

3.相关IDE(如eclipse)

4.安装完ADT

5.安装完AVD(如果你是真机模拟的话也可以不安装)

前期环境搭建基本完成,并按照网上的教程可以运行出HelloWorld,确保可以流程走的通。

所谓会当凌绝顶,一览众山小。我学习新东西时总会从系统或全局的角度对它进行一个总览,这样才能从更高的角度去把握它,而且你对接下来的学习也会有一个系统的认知会让之后的学习更有条理和针对性。

一.接下来就是要介绍一下Android的基本系统架构了

在最外的是负责直接和用户交互的应用层,就是通常意义上我们看得见、可以下载的应用,浏览器、游戏、音乐播放器等等。

紧接着是应用的框架层,在我们开发应用时会经常调用,比如ActivityManager,ViewSystem等等,后面会介绍。

再接这就到了运行机制的JVM层了,你可以看到它不但包含了一个Runtime,而且还有一些相关的类库。

最低层是基于Linux的内核,包含了一些硬件的驱动,主要负责和硬件进行交互,比如你可以在你的应用中调用照相机,Wifi接口等都是很方便的。

二.工程组织和结构

接下来我们右键new一个AndroidApplication项目,如果找不到的话在new选项里最下面的others中如下:

一路next,建好后如下:

三.来认识一下各个文件夹都是干什么的

src:存放你的源码,比如.java文件,可以理解为vs中的类库.cs文件之类的。

gen:系统生成的东西,不要去改动,展开后如下:,这里的R文件会经常用到,里面都是存放的一些类似注册的全局ID(后面会介绍)。

GoogleApis:就是要到的一些SDK中谷歌的接口。

AndroidPrivateLibarares:安卓的一些类库。

AndroidDependencies:安卓的一些依赖库。

assets:存放你项目中的“大”资源文件,比如图片、视频、媒体等,所谓“大”只因为在Android项目中还有一个资源文件夹res主要存放一些字体、文字、颜色等的“小”资源。

bin:这个不用说了吧。

libs:类似vs中的dll引用。

res:主要存放一些字体、文字、颜色等的“小”资源。展开如下:

主要会用到layout和values,(其他的可能也会大量用到,只不过自己也还在摸索中)

layout:用来存放布局文件

values:用来存放文字,颜色等,kv值(这里有一点需要注意,在Android开发中,为了保持项目的灵活性和避免硬编码,它会建议你把要用到的kv值存到一个文件里,在用到的地方直接引用,这就是为什么要有values文件夹的原因了)。

AndroidManifest.xml:这个文件很重要,是用来保存整个程序的相关配置的一个清单,比如项目名,版本号、启动activity、权限说明等。

三.认识完工程结构后,我们来了解几个基本概念。

因为以前在学校学过java(虽然已经忘记的差不多了),所以自己还算有些基础,对一些基本的语法和使用还是有些了解的,如果你对java一无所知,我建议你先花一两个小时看看基本的语法,比如怎么继承,怎么实现接口,相信我作为一名c#的程序员,你可能只需要10分钟就可以搞定了,因为你会发现它和c#是多么惊人的相似!

好了,到这我们才真正开始!

作为一个对移动应用开发倍感神秘的初学者来说,我只想知道,我应该怎么开始,它到底是怎么实现并显示在手机上的。

我们打开layout文件夹中的activity_main.xml,看到了吧,是不是似曾相识(控件+布局+代码)

这个就是程序的启动页,类似于main方法 ,就是入口,当然你也可以自己设置其他的入口页。

几个概念:

1.Activity:这个是最常用到的一个概念,你可以把它理解为当前活动得屏幕,就是呈现在手机上的一个页,联想web页。

这是Activity的生命周期

Activity的可视生命周期为OnStart()开始直到OnStop()结束(可能会看不见内容,但会保留相关资源)

Activity的前台生命周期为OnStart()开始直到OnStop()结束(在最前面和用户进行交互)

2.包名:java中的“包名”类似我们c#中的命名空间,一个“包”就是一个dll引用文件。不过我觉得eclipse中有一点做得很好,即你在用到一个方法或类时不用再顶部import它好像会自动的帮你完成,vs中好像还得手敲一下。

java中要确保包名唯一所以一般用公司域名的反写来命名比如com.letchoice.HelloWorld。

三.几个快捷键和相关设置

1.格式化代码:ctrl+shift+F(有代码洁癖同学首选)

2.在你格式化xml文档的时候可能会有些问题,如下设置即可

3.对于用惯了vs的你来说,可能已经适应了vs的智能提示功能,在eclipse中这点可能做得没有vs好,你只有在输入“.”之后才能出现提示,如果你想让它像vs中一样随时智能提示和补全代码的话,你可以window—>preference打开设置面板如下

将标识的地方的”.”改成“abcdefghijklmnopqrstuvwxyz.”保存就ok了。

4.Xml代码提示和补全功能设置如下:

即将图中标识地方改成"<=:abcdefghigklmnopqrstuvwxyz@ "即可。

自己对于Android开发和java的使用还都处于摸索当中,难免出现疏漏和错误,还望大家多多批评指正,和你们共勉!

.Net码农学Android---系统架构和基本概念的更多相关文章

  1. Android系统架构与系统源码目录

    前言 技术博客终于可以恢复正常的更新速度了,原因是我编写的进阶书籍的初稿已经完成,窃以为它将会是Android应用书籍中最有深度的一本,可以说是<Android开发艺术探索>的姊妹篇.在这 ...

  2. (转)android系统架构及源码目录结构

    转自:http://blog.csdn.net/finewind/article/details/46324507 1. Android系统架构: android系统架构采用了分层架构的思想,如下图所 ...

  3. Android源码分析一 Android系统架构

    一 Android系统架构 Linux内核层(Linux Kernel):Android系统基于Linux2.6内核,这一层为Android设备各种硬件提供了底层驱动,如显示驱动.音频驱动.照相机驱动 ...

  4. Android进阶(十一)Android系统架构讲解

    如果说一个成功男人的背后会有一个默默支持的女人的话,那么一个优越稳定的平台背后必有一个成熟的系统架构所支撑着.那么,Android的系统架构是怎么样的呢?从下图我们可以从整体上有个大致的了解(图片来源 ...

  5. Android进阶加密-第1章-Android系统架构-读书笔记

    第 1 章 Android 系统架构 1.1 Android 系统架构 Android 系统架构分为五层,从上到下依次是应用层.应用框架层.系统运行库层.硬件抽象层和 Linux 内核层. 应用层(S ...

  6. Android 笔记之 Android 系统架构

    Android笔记之Android系统架构 h2{ color: #4abcde; } a{ color: blue; text-decoration: none; } a:hover{ color: ...

  7. Android零基础入门第2节:Android 系统架构和应用组件那些事

    原文:Android零基础入门第2节:Android 系统架构和应用组件那些事 继上一期浅谈了Android的前世今生,这一期一起来大致回顾一下Android 系统架构和应用组件. 一.Android ...

  8. Android系统架构说明介绍

    Android系统架构说明介绍 Android系统架构和一些普遍的操作系统差不多,都是采用了分层的架构,从他们之间的架构图看,Android系统架构分为四个层,从高层到低层分别是应用程序层.应用程序框 ...

  9. 我收藏的技术知识图(每张都是大图)关于XX背后的知识、技术图,例如:Linux、Nginx架构、PHP知识卡、机会、HTML5移动、Android系统架构、YII架构的典型流程、Css知识表

    我收藏的技术知识图(每张都是大图) HTML5Linux/Unix系统设计思想读书笔记 LinuxMVCJava线程MVCSpring MVCCSS3Nginx架构VimCliCommandsPHP知 ...

随机推荐

  1. uva 327 Evaluating Simple C Expressions 简易C表达式计算 stl模拟

    由于没有括号,只有+,-,++,--,优先级简单,所以处理起来很简单. 题目要求计算表达式的值以及涉及到的变量的值. 我这题使用stl的string进行实现,随便进行练手,用string的erase删 ...

  2. Ubuntu(16.04) 下如何修改(安装)arm-linux-gcc编译器

    ubuntu下如何修改(安装)arm-linux-gcc编译器 将gcc解压到根目录 sudo tar xjf arm-linux-gcc-4.3.2.tar.bz2 -C / 查看原来的环境变量 e ...

  3. ORA-01034: 、ORA-01078: 和 LRM-00109: 的解决方法

    环境:Linux 5.4 Oracle 11.2.0.3 在Linux上连接Oracle时遇到报错: SQL> show parameter sgaORA-01034: ORACLE not a ...

  4. 怒刷DP之 HDU 1257

    最少拦截系统 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Statu ...

  5. 剑指Offer05 用栈模拟队列

    添加了模板类应用 /************************************************************************* > File Name: ...

  6. 实现 kindle 原生系统、多看系弹出注释的通用写法

    入手 Kindle 后开始自己做 ePub,之前一直用原生系统,使用的弹出注释代码如下: <p class="P_Footnote" id="ref_footnot ...

  7. 六、Android学习笔记_JNI_c调用java代码

    1.编写native方法(java2c)和非native方法(c2java): package com.example.provider; public class CallbackJava { // ...

  8. 英特尔® 实感™ SDK R4 (v.6.0) 的全新特性

    原文地址 第四版 (R4) 黄金版 SDK (版本 6.0)现已面向英特尔® 实感TM F200 摄像头推出,并面向英特尔® 实感TM 后置 R200 摄像头发布黄金版本. 请注意,F200 OR R ...

  9. linux中利用iptables+geoip过滤指定IP

    1. 前提条件 iptables >= 1.4.5 kernel-devel >= 3.7 2.  安装依赖包  代码如下 复制代码 # yum install gcc gcc-c++ m ...

  10. C#中的 具名参数 和 可选参数

    具名参数 和 可选参数 是 C# framework 4.0 出来的新特性. 一. 常规方法定义及调用 public void Demo1(string x, int y) { //do someth ...