第1章 开启旅程 ---- 你的第一行Android代码

第1章 开启旅程 —- 你的第一行Android代码

本系列学习笔记第1章

前言

打算把android基本知识点写一个系列,旨在把android基础书,例如《Android 第一行代码 第2版》、《爱上android》、《疯狂android讲义》等书的一些知识点记录一下,会持续更新内容,为了方便自己复习,也希望可以帮助到大家!

1、 Android王国简介
1.1 Android系统架构

Android的系统架构大致可以分为四层,如图所示:
image.png

1) Linux内核层
android系统基于Linux内核的,这一层为android设备的各种硬件提供了底层驱动,如显示、音频、照相机、蓝牙、Wi-Fi、电源管理驱动等。

2)系统运行库层
这一层有一些C/C++库来提供一些主要的特性支持,如SQLite库提供数据库支持、OpenGL | OpenES库提供3D绘图的支持,Webkit库提供了浏览器内核的支持。这一层还有Android运行时库,它包括了Dalvik虚拟机,5.0之后的系统改为ART运行环境,它使得Android应用都能运行在独立的进程当中,并且拥有一个自己的虚拟机实例。

3)应用框架层
主要为开发者构建应用程序时可能用到的各种API。

2)应用层
所有安装在手机上的应用程序都是属于这一层的。

1.2 Android各版本一览表

image.png

目前4.0以上的系统已经占据超过了98%的android应用市场,因此开发只要兼容4.0以上应该就差不多了。

2、 开发环境搭建

在网上找一下,或者请看我之前重装系统时重新搭建android开发环境写的一篇博文
https://www.jianshu.com/p/7a8556f0b4f9

3、 项目结构模式以及目录文件
3.1 项目结构模式

点击图上所示,就可以看到项目的结构模式,一般常用的有Android 以及 Project这俩种
image.png

3.2 项目最外层目录

image.png
1).gradle 和.idea
Android Studio自动生成的

2)build
Android Studio 项目编译时自动生成的文件

3)app
开发中的代码、资源都在这里

4)gradle
里面的gradle.wrapper配置文件,会根据Android Studio的设置来决定是否联网下载或者使用离线的
image.png
image.png

5).gitignore
指定版本控制时要忽略的文件

6)build.gradle
项目全局的gradle构建脚本,Android Studio 是采用Gradle来构建项目的。
image.png

7)gradle.properties
全局的gradle配置文件,如果电脑性能不好,嫌弃项目编译速度慢的话,可以更改这里的配置
image.png

8)gradlew和gradlew.bat
用了即行gradle命令的,前者是在Linux或者Mac系统中使用,后者是在Windows系统中使用

9)xxx.iml
这个是Android Studio自动生成的,标识这是一个IntelliJ IDEA项目

10)local.properties
指定Android SDK路径
image.png

11)settings.gradle
用于指定项目中所有引入的模块
image.png

3.3 项目app模块最内层目录

image.png
1)build
和外层的build目录类似,都是在编译时Andrid Studio自动生成的文件

2)libs
第三方jar包放置的地方

3)androidTest
用来编写Android Test测试用例的,可以对项目进行一些自动化测试

4)java
所有编写java代码的地方

5)res
项目中使用的所有图片、布局、字符串等资源存储的地方
image.png

6)AndroidManifest.xml
程序中所有的4大组件以及应用权限声明都在这里
image.png

7)test
用来编写Unit Test测试用例的,是对项目进行自动化测试的另一种方式

8)版本控制忽略文件,跟外层的一样

9) app.iml
项目自动生成的文件

10)build.gradle
app模块的gradle构建脚本
image.png
image.png
image.png

11)proguard-rules.pro
用于指定项目代码的混淆规则

4、 Android的日志工具Log

image.png

1) Log.v() 对应级别verbose,是Android日志里面级别最低的一种,主要打印那些最为琐碎的、意义最小的日记信息

2) Log.d() 对应级别debug,比verbose高一级,主要打印一些调试信息

3) Log.i() 对应级别info,比debug高一级,主要打印一些比较重要的数据信息

4) Log.w() 对应级别warn,比info高一级,主要打印一些警告信息

5) Log.e() 对应级别error,比warn高一级,主要打印程序中的错误信息

image.png

5、 buildTypes 在实际项目中的使用
 //构建类型:可以根据不同的版本设置不同的参数,进行不同的配置
    buildTypes {
        debug{
            minifyEnabled false
           buildConfigField "String","API_URL","\"https://yuedu.baidu.com\""
            buildConfigField "boolean","LOG_CALLS","true"
            resValue "string","str_name","Example DEBUGLE"
        }
        release {
            minifyEnabled true
            buildConfigField "String","API_URL","\"https://yuedu.baidu.com\""
            buildConfigField "boolean","LOG_CALLS","false"
            resValue "string","str_name","example"
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

image.png

在代码中可以引用自己上图中定义的一些参数,调用如下:

        String url = BuildConfig.API_URL;
        boolean logCalls = BuildConfig.LOG_CALLS;
        int str_name = R.string.app_name;

在LogUtils工具类中的引用:

public class LogUtils {

    public static final boolean DEBUG =  BuildConfig.LOG_CALLS;

    public static void v(String tag,String msg){
        if(DEBUG) {
            Log.v(tag, msg);
        }
    }

    public static void d(String tag,String msg){
        if(DEBUG) {
            Log.d(tag, msg);
        }
    }

    public static void i(String tag,String msg){
        if(DEBUG) {
            Log.i(tag, msg);
        }
    }

    public static void w(String tag,String msg){
        if(DEBUG) {
            Log.w(tag, msg);
        }
    }

    public static void e(String tag,String msg){
        if(DEBUG) {
            Log.e(tag, msg);
        }
    }
}
6、 屏蔽日志输出的终极做法

在混淆文件中对Log的输出添加如下所示的混淆:

-assumenosideeffects class android.util.Log {  
   public static boolean isLoggable(java.lang.String,int);
   public static *** d(...);  
   public static *** v(...);  
   public static *** i(...);  
   public static *** w(...); 
   public static *** e(...);  
}

对于assumenosideeffects ,官方的解释就是,混淆器将删除这些方法(如果在程序中使用这些方法的返回值,则不会删除,一般日志不关心返回值)。)

对于build.gradle和日志输出这一块,推荐观看我之前写的博文:
https://www.jianshu.com/p/2febe846f11c

https://www.jianshu.com/p/6bf11777236b

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可 6私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值