《Android第一行代码》first reading 一

站在巨人的肩上

Android系统架构

见图1:

了解.jpg

图片来源
在这里只对Android系统架构进行初步了解,后续研究则需要找时间了。。。。

架构四层:

  • Linux内核层:为硬件提供底层驱动
  • 系统运行库层:提供主要的特性支持、Android运行时库
  • 应用框架层:构建应用程序时所使用的各种API
  • 应用层:这就是你手机上的各种应用的所在地了

Android项目结构

1. 项目结构粗略

先上图2.1.1:

外层项目结构.png

在此我只记录我自己认为需要记录的,如希望更详细的内容请购买郭大的书或自己进行研究。(00~ 不要认为我在推销)

app 项目的主要内容,开发基本都在这里
gitignore 用来将指定的目录或文件排除在版本控制之外
build.gradle 项目全局的gradle构建脚本
settings.gradle 指定项目中所有引入的模块(拓展项目时可用)

图2.1.2:


app项目结构.png
libs 第三方jar包
java 放置所有JAVA代码
res 放置资源
AndroidManifest.xml 整个Android项目的配置文件
build.gradle app模块的构建脚本
proguard-rule.pro 指定代码混淆规则

2. 项目结构部分详解

res详解

图2.2.1:

res结构.png

drawable 放图片
mipmap 放图标
values 放字符串、样式、颜色等配置
layout 放布局文件
-hdpi、-mdpi、-xhdpi、-xxxhdpi 为你的图片资源提供不同分辨率的版本(最好为drawable自己定义-hdpi等文件)
引用:

  • java中 R.XX.XX
  • xml中 @XX/XX

build.gradle详解

- build(project)
buildscript {
    repositories {
        jcenter()//代码托管仓库
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.+'//classpath声明了一个Gradle插件
    }
}allprojects {
    repositories {
        jcenter()//代码托管仓库
    }
}
- build(app)
//com.android.application表示这是一个应用模块
//com.android.library表示这是一个库模块
apply plugin: 'com.android.application'

android {
    compileSdkVersion 24//指定项目的编译版本(Android7.0 SDK)
    buildToolsVersion "24.0.2"//项目构建工具
    defaultConfig {
        applicationId "XX.XX.XX"//项目包名
        minSdkVersion 15//项目最低兼容的android系统版本
        targetSdkVersion 24
        versionCode 1//项目版本号
        versionName "1.0"//版本名
    }
    buildTypes {//buildTypes包用于指定生成安装文件的相关配置
        release {//用于指定正式文件相关配置
            minifyEnabled false//指定是否对代码进行混淆
            proguardFiles getDefaultProguardFile('proguard android.txt'), 'proguard-rules.pro'
        }
    }
}
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])//本地依赖声明
    compile 'com.android.support:appcompat-v7:24.2.1'//远程依赖声明
     testCompile 'junit:junit:4.12'
}

Log日志工具

刚从web接触android,确实有些不习惯。比如这里的日志工具,当然还有部分原因估计是我的web也很菜。(00~)
在学校里,我使用的是eclipse,日志输出习惯使用syso。现在想来这个方法真不算强大。在Android中显然Log是比system强的。

  • Log.v() 对应级别verbose
  • Log.d() 对应级别debug
  • Log.i() 对应级别info
  • Log.w() 对应级别warn
  • Log.e() 对应级别error

当然在逛简书时,我还发现了一个让我感兴趣的日志工具kotlin。
记录下发现的文章
日后抽时间进行研究

当然郭大的书中还有部分十分有用的小技巧,在这我就不赘述了。
日后我会单独将这些小技巧拎出来记录。

这里仅仅是我记录的部分笔记,以备回顾记忆
如有侵权请联系我,我将进行修改和删除

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,900评论 25 709
  • 和小学生一样,我又说,我的父亲,既平凡,又伟大。 我爸没上过学,他尽他最大的能力让自己的妻子,孩子过得好,他不怕...
    纯感女孩阅读 1,475评论 0 2
  • 玫瑰 20161130 之前练习过瑜伽呼吸、昆达里尼、冥想瑜伽、魔法开启脉轮等课程 对于脉轮是一知半解 从没有从学...
    玫瑰的身心灵之旅阅读 1,573评论 0 0
  • 文/Meetigntian 离家的最后一夜 静坐在镜子前 看着镜子里跟我一模一样的人 一模一样的五官 一模一样的表...
    MeetingTian阅读 3,244评论 33 15
  • 今天学习了一天微课设计与开发的课,老师结构非常清晰,讲了why,what,how,what if四点。在how这个...
    微景洞天阅读 4,039评论 0 0