第一行代码Android 第一章(Android的系统构架,四大组件,日志工具)

一、Android的系统架构
1.Linux内核层:为Android设备的各种硬件提供底层的驱动。
2.系统运行库层:通过C/C++库来为Android系统提供主要的特性支持。
        例如:SQLite库提供了数据库的支持。
        这一层还有Android运行时库,它主要提供一些核心库,能允许开发者使用Java语言来编写Android应用,其中还包括Dalvik虚拟机。
        Dalvik虚拟机是专门为移动设备定制的。
3.应用框架层:提供了构建应用程序时可能用到的各种API。
4.应用层:所有安装在手机上的应用程序都是属于这一层的。

二、Android系统四大组件
1.活动(Activity):凡是应用中能看到的所有东西都在这里面。
2.服务(Service):无法看到他,在后台默默运行。
3.广播接收器(Broadcast Receiver):允许你的应用接收和发出广播消息。
4.内容提供器(Content Provider):为应用程序之间共享数据提供了可能。

三、分析HelloWorld项目究竟是怎么运行的?
1.没有注册的活动不能使用

//Manifest.xml文件
<activity android:name=".HelloWorldActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity>

//这段代码表示对HelloWorldActivity这个活动进行注册
//<action android:name="android.intent.action.MAIN"/>
//<category android:name="android.intent.category.LAUNCHER"/>
//这两句表示HelloWorldActivity是这个项目的主活动,点击手机应用程序图标,首先启动的就是这个活动

2.Android程序的设计讲究逻辑和视图分离,因此不推荐在活动中直接编写界面的,一般是在布局文件中编写界面,然后在活动中引入进来。

//HelloWorldActivity活动文件
public class HelloWorldActivity extends AppCompatActivity{
    @Override
    protected void onCreate(Bundle sacedInstanceState){
        //onCreate方法是一个活动被创建时必定要执行的方法
        super.onCreate(savedInstanceState);
        //setContentView方法是给当前活动引入一个布局,layout就是一个布局
        setContentView(R.layout.hello_world layout);
    }
}

3.布局文件在res/layout目录下,TextView是Android系统提供的一个控件,在布局中显示文字的。

//hello_world_layout.xml文件
//这里主要学习
<TextView 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello World!" />  //用于在布局中显示文字

4.res目录下文件详解
        1)drawable放图片
        2)layout放布局文件
        3)mipmap开头的放应用图标
        4)values开头的放字符串、样式、颜色等配置

5.res目录下,values/strings.xml文件
        1)在代码中可以通过R.string.app_name来获得该字符串的引用
        2)在XML中通过@string/app_name可以获得该字符串的引用

//values/strings.xml文件
<resources>
    //这里定义了一个应用程序名的字符串
    <string name="app_name">HelloWorld</string>
</resources>

6.bulid目录下的是自动的编译文件,gradle目录包含了gradle wrapper的配置文件。
        bulid.gradle是项目全局的gradle构建脚本。
         1)Android Studio是采用Gradle来构建项目的。它是一种基于Groovy的领域特定语言(DSL),摒弃了传统基于XML的各种繁琐配置。
        2)HelloWorld项目中有两个bulid.gradle文件,一个是在最外层目录下,一个是在app目录下
很多Android开源项目都会选择将代码托管到jcenter上,声明这个配置,我们就能轻松引用。

//最外层的bulid.gradle文件
bulidscript{
    repositories{
        jcenter()   //jcenter是一个代码托管仓库
    }
    dependencies{
        classpath 'com.android.tools.bulid:gradle:2.2.0' //这一句是声明Gradle插件
    }
}

allprojects{
    repositories{
        jcenter()
    }
}

7.app目录下的bulid.gradle文件
        1)com.android.application表示这是一个应用程序模块;com.android.library表示这是一个库模块。
        2)应用程序模块和库模块的区别在于:应用程序模块可以直接运行,库模块只能作为一个代码库依附于别的应用程序模块来运行。

//内部build.gradle文件
//表示这是一个应用程序模块
apply plugin:'com.android.application'
android{
    //指定项目编译版本
    compileSdkVersion 24
    //指定项目构建工具版本
    bulidToolsVersion "24.0.2"
    //defaultConfig是对项目更多细节进行配置
    defaultConfig{
        //项目包名
        applicationId "com.example.helloworld"
        //最低兼容版本
        minSdkVersion 15
        //最大的测试过的兼容版本
        targetSdkVersion 24
        //项目版本号
        versionCode 1
        //项目版本名
        versionName "1.0"
   }
    //bulidTypes是安装文件相关的配置
    buildTypes{
        //指定生成正式版安装文件的配置
        release{  
            //是否对项目中的代码进行混淆
            minifyEnabled false
            //proguardFiles:混淆规则;
            //proguard-android.txt:SDK目录下的通用混淆;
            //proguard-rules.pro:当前目录下,可编写的混淆规则
            proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'
        }
    }
}
//dependencies是指定当前项目所有的依赖关系
dependencies{
    //本地声明依赖,将libs下的所有jar添加了
    compile fileTree(dir:'libs',include:['*.jar'])
    //远程声明依赖包:域名:组织名:版本号
    complie 'com.android.support:appcompat-v7:2.2.1'
    //测试用例库
    testCompile 'junit:junit:4.12'
}

三、日志工具
1.日志工具类Log
        1)Log.v():用于打印那些最为琐碎,意义最小的日志信息。verbose级别
        2)Log.d():用于打印一些调试信息。debug级别
        3)Log.i():用于打印一些比较重要的数据。info级别
        4)Log.w():用于打印一些警告信息。warn级别
        5)Log.e():用于打印程序中的一些错误信息。error
在onCreate()方法中添加一行打印日志的语句

//HelloWorldActivity活动文件
public class HelloWorldActivity extends AppCompatActivity{
    @Override
    protected void onCreate(Bundle sacedInstanceState){
        //onCreate方法是一个活动被创建时必定要执行的方法
        super.onCreate(savedInstanceState);
        //setContentView方法是给当前活动引入一个布局,layout就是一个布局
        setContentView(R.layout.hello_world layout);
        //在onCreate()方法中添加一行打印日志的语句
        Log.d("HelloWorldActivity","onCreate excute");
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值