zoukankan      html  css  js  c++  java
  • 安卓开发复习笔记(一)

    第一章


    安卓应用开发特色:

    • 四大组件
    Activity,Service,Broadcast Receiver,Content Provider


    ️• SQLite 数据库
    轻量级,运算速度极快的嵌入式关系型数据库,不仅支持sql语句,还可以通过安卓封装好的API进行操作,让存储和读取数据变得特别方便。


    • 地理位置定位
    Android手机都内置GPS,结合强大的地图功能,LBS这一领域潜力无限。

    需要准备的工具:
    ️Java JDK

    ️Android SDK

    ️Android Studio

    Project结构模式下目录介绍
    无需更改区域:
    ️ .gradle & .idea 自动生成文件
    ️ build 编译时自动生成的文件
    ️ gradle
    。。。一堆,不过多赘述

    开发者设计区域:
    【app文件夹下】
    1. build

    无需关心

    ️2. libs

    使用到的第三方jar包都会放在libs目录下,放在这个目录下的jar包就会自动被添加到构建路径中去

    ️3. android Test

    此处是用来编写Android Test 测试用例用的

    ️4. java

    毫无疑问,所有java代码放置到该目录下

    ️5. res

    项目中使用到过的所有图片、布局、字符串等资源都要存放在这个目录下。
    ①图片放在drawable目录下
    ②布局放在layout目录下
    ③字符串放在valves目录下

    ️6. AndroidManifest.xml

    这是整个Android项目的配置文件,程序中定义的四大组件都要在这个文件中注册,另外还可以再择个文件中给应用程序添加应用权限声明。

    7. test

    自动化测试

    ️8. build.gradle

    这是app模块的gradle构建脚本,这个文件会制定很多项目构建相关的配置

    9. proguard-rules.pro

    代码打包后如果不希望别人进行破解,通过这个文件让代码混淆,从而让阅读者难以阅读


    首先了解一下AndroidManifest.xml文件的这个部分,从中可以找到这段代码:

    这段代码用于对MainActivity这个活动进行注册,没有在AndroidMainfest内注册的活动是不能使用的。

    往下出现两个<intent-filter>,其中的内容非常重要

    这两行加起来的总效果就是MainActivity是这个项目的总活动,所谓总活动就是点击应用图标后进入的第一个活动。

    标识符【.Main】


    接下来看一下这段MainActivity.java中的代码,这是安卓四大组件中活动的代码。

    凡是在应用中看得到的东西都是要放在Activity中的。

    首先要注意MainActivity是继承AppCompatActivity类的,这是一种向下兼容的Activity

    可以将Activity在各个版本中增加的特性和功能最低兼容到Android 2.1系统

    Activity是Android系统提供的一个活动基类,我们项目中的所有活动必须继承它或者他的子类才能拥有活动特性。

    这里AppCompatActivity就是Activity的子类。

    然后注意到MainActivity中存在的 onCreate() 方法

    这个方法是一个活动被创建时必须要执行的方法

    注意onCreate函数中第二行代码:setContentView(R.layout.activity_main);

    在这里我们要了解Android程序的设计其实是逻辑和视图是分离的

    因此通用的做法是:在布局文件中编写界面,然后在活动中引进来

    那么在此处就是这个setContentView()方法给当前的活动引入了一个main_activity布局。


     布局文件都定义在res/layout目录下,activity_main.xml文件中你能看到以下代码:

    android:text="Hello World!";便是HelloWorld的出处。


    接下来我们来了解一下build.gradle这个文件。

    不同于Eclipse,Android Studio是采用Gradle来构建项目的。

    Gradle是一个非常先进的项目构建工具

    它使用了一种基于Groovy(我也不知道这是啥,厉害就完事了)的领域特定语言(DSL)来声明项目设置

    摒弃了传统基于XML的各种繁琐配置。

    仔细观察会发现有两个build.gradle文件,一个是最外层的,一个是app目录下的。


    先讨论最外层的build.gradle文件

    这些代码都时自动生成的,虽然与法比较难,只看最关键的部分,难度不大。

    两处repositories闭包中都声明了jcenter()这行配置

    jcenter()其实是一个代码管理仓库

    很多Android开源项目都会将代码托管到jcenter上

    声明了这行配置之后,我们就可以轻松地引用任何jcenter上的开源项目了。

    接下来,dependencies闭包中使用了classpath声明了一个Gradle插件。

    声明这个插件的意义在于Gradle不仅仅服务于Android项目,还有Java,C++等。

    因而我们想要使用它就需要声明此插件。

    这样外层build.gradle文件中的要点就分析完了,通常情况下并不需要修改这个文件中的内容。

    除非你想添加全局的项目构建配置。


    再来看一下app目录下的build.gradle文件:

    我们来一行一行分析:

    首先第一行应用了一个插件,一般有两种值可以选:

    ① com.android.application 表示这是一个应用程序模块。

    com.android.library 表示这是一个库模块。

    应用程序模块和库模块的最大差别在于,应用程序模块是可以直接运行的,而库模块只能作为依附于别的应用程序模块来进行。

    接下来是一个大的 android闭包

    在这个闭包中,我们可以配置项目构建的各种属性,同样在编辑器或者SDK更新的时候编译器出现故障时,这里也是故障发生的集中地。

    1. compileSdkVersion 用于指定项目的编译版本。

    2. buildToolVersion 用于指定项目构建工具的版本。

    3. defaultConfig  闭包

         在这个闭包中可以对项目中的更多细节进行配置,其中

         ① applicationID 用于指定项目的包名,在创建项目的时候应该已经指定过包名了,如果想更改,要在这里更改。

         ② minSdkVersion 用于指定项目最低兼容的Android系统版本

         ③ targetSdkVersion 指定的值表示你在该目标版本上已经做了充分的测试,如果测试的版本号较低,较高版本的某些运行时功能权限不会对App开放

         ④ versionCode & versionName 用于指定项目的版本号和版本名,这两个文件在生成安装文件的时候非常重要!

    4. buildTypes 闭包

         用于指定生成安装文件的相关配置,通常只会由两个子闭包,一个是debug,另一个是release。

         debug闭包用于制定生成测试版安装文件的配置,可以忽略不写的

         release闭包用于指定生成正式版安装文件的配置,下面详细介绍一下。

         ① minifyEnabled 用于指定是否对项目的代码进行了混淆(加密)

         ② proguardFiles 用于指定混淆时的规则文件,这里指定了两个文件:

             第一个 proguard-android.txt 是在Android SDK目录下的,里面是所有项目通用的混淆规则

             第二个 proguard-rules.pro 是在当前项目根目录下的,里面可以编写当前项目的特有的混淆规则   

    这样,整个 android 闭包 中的内容就都分析完了。

    接下来还剩一个 dependencies 闭包 ,这个闭包非常强大,它可以指定当前项目所有的依赖关系

    通常 Android Studio 项目一共有三种依赖类型:本地依赖、库依赖、远程依赖。

    本地依赖可以对本地的 jar包 或者 目录 添加依赖关系

    库依赖可以对项目中的库模块添加依赖关系

    远程依赖可以对 jcenter 库上的开源项目添加依赖关系。

    下面来介绍一下 dependencies 闭包中的配置

    1. compile fileTree

          是一个本地依赖声明,它表示将libs目录下所有 .jar 后缀的文件都添加到项目的构建路径当中。

    2. compile

          是远程依赖声明,后边标明远程依赖库、域名、组名称、版本号。


    安卓日志工具 Log:

    1. Log.v() 用于打印那些最为琐碎的,意义最小的日志信息,对应级别verbose。日志级别最低

    2. Log.d() 用于打印一些调试信息,调试程序常用,对应级别debug,比verbose高级一些

    3. Log.i() 用于打印一些比较重要的数据,这些数据是开发者非常想要看到的、可以帮你分析数据行为数据。对应级别info,比debug级别高一些

    4. Log.w() 用于打印一些警告信息,提示程序在这个地方可能会出现一些潜在的风险,最好去修复一下这些出现警告的地方,对应级别warn,比info高一级

    5. Log.e() 用于打印程序中的错误信息,比如程序进入到了catch语句中,当有错误信息打印出来的时候,一般都代表你的程序出现了严重错误,对应级别error,比warn高一级

    如图所示,可以根据等级筛选日志。

    我们在MainActivity.java中加入此调试代码

    Log.d(tag,msg); 调试方法有两个参数,第一个是标签,第二个是调试信息。

    此处关于标签要强调,logcat中可以很轻松地添加过滤器。

    下图是系统给的默认过滤器

    接下来就让我们尝试自己创建一个过滤器,点击上图中的Edit Filter Configuration,出现下图创建界面,

    给filter起名后,通过更改Lag Tag为“data”(自定义),再将调试信息第一个参数改为data即可实现只显示特定调试。

     日记级别控制的好处就是能方便快捷地找到你所关心的那些日志。

    第一章完成啦~~~

        

  • 相关阅读:
    后台服务器经典面试题
    Java英语面试题(核心知识篇)
    Java常用英语汇总(面试必备)
    字符压缩编码
    外排序
    基数排序
    Windows Server 2008 R2 部署服务
    LINUX中常用操作命令
    我的学习笔记_Windows_HOOK编程 2009-12-03 11:19
    CSDN-Code平台使用过程中的5点经验教训
  • 原文地址:https://www.cnblogs.com/Jenken-B/p/11201909.html
Copyright © 2011-2022 走看看