移动开发笔记(0)了解安卓

Android介绍

1.Android系统架构
1.Linux内核层:提供底层驱动
2.系统运行库:通过一些c/c++库为Android系统提供主要的特性支持,还有Androidd运行时库,Android运行时库中还包含了Dalvik虚拟机(5.0系统之后改为了ART运行环境)
3.应用框架层:提供了构建应用程序时可能用到的各种API
4.应用层:所有安装在手机上的应用程序都属于这一层。
2.Android四大组件
1.Activity
2.Service
3.BroadcastReceiver
4.ContentProvider

分析项目

  1. .gradle和.idea 这两个目录下放置的都是Android Studio自动生成的一些文件。无需关心
  2. .app项目中的代码,资源等内容都是防止在这个目录下的。
  3. build这个目录主要包含了一些在编译时自动生成的文件,无需关心
  4. gradle 这个目录下包含了gradle wrapper的配置文件。Android studio会自动根据本地缓存情况决定是否需要联网下载gradle
  5. .gitignore 这个文件时用来将指定的目录或文件排除在版本控制之外的
  6. build.gradle 这个时全局的gradle构建脚本。
  7. gradle.properties 这个文件时全局的gradle配置文件,在这里配置的属性会影响到项目中所有的gradle编译脚本
  8. gradlew和gradlew.bat 这两个文件时用来命令行界面中执行gradle命令的,gradkew是在Linux或Mac系统中使用的,gradlew.bat是在Window系统中使用的
  9. HelloWorld.iml iml文件是所有IntelliJ IDEA项目都会自动生成的一个文件
  10. local.properties 这个文件用于指定本机中的Android SDK路径
  11. settings.gradle 这个文件用于指定项目中所有引入的模块(由于项目中只有一个app模块,所以该文件也就只引入了app这一个模块)
    app目录下的内容进行分析
  12. build 这个目录和外层目录相似,也包含了一些在编译时自动生成的文件
  13. libs 需要把第三方jar包放在lib目录下
  14. androidTest 此处是用来编写AndroidTest测试用例,可以对项目进行一些自动化测试
  15. java java目录是放置我们所有Java代码的地方(Kotlin代码也放在这里)
  16. res 这个项目中使用到的所有图片,布局,字符串等资源都放在这个目录下
  17. AndroidManifest.xml 这是整个Android项目配置文件,所有四大组件在这里注册
  18. test 此处用来编写Unit Test测试用例的
  19. .gitignore这个文件用于app模块内指定的目录或文件排除在版本控制之外,作用和外层的.gitignore文件类似
  20. app.iml IntelliJ IDEA项目自动生成文件
  21. build.gradle app模块的gradle构建脚本,这个文件会指定很多项目构建相关的配置
  22. proguard-rules.pro 这个文件用于指定项目代码的混淆规则,从而让破解者难以阅读

分析AndroidManifest.xml

<activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
</activity>

这段代码表示对MainActivity进行注册 。< action android:name=“android.intent.action.MAIN” />和< category android:name=“android.intent.category.LAUNCHER” />表示MainActivity是这个项目主Activity。

详解build.gradle文件


buildscript {
    ext.kotlin_version = '1.3.72'
    repositories {

		maven { url 'http://maven.aliyun.com/nexus/content/groups/public/'}
        maven { url'https://maven.aliyun.com/repository/public/' }
        maven { url'https://maven.aliyun.com/repository/google/' }
        maven { url'https://maven.aliyun.com/repository/jcenter/' }
        maven { url'https://maven.aliyun.com/repository/central/' }
        mavenLocal()
        mavenCentral()
        /*
		 google()
        jcenter()
		*/
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.6.1'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {

	   maven { url 'http://maven.aliyun.com/nexus/content/groups/public/'}
        maven { url'https://maven.aliyun.com/repository/public/' }
        maven { url'https://maven.aliyun.com/repository/google/' }
        maven { url'https://maven.aliyun.com/repository/jcenter/' }
        maven { url'https://maven.aliyun.com/repository/central/' }
        mavenLocal()
        mavenCentral()
        /*
		google()
        jcenter()  
        */
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

两处repositories的闭包都声明了google()和jcenter()两行配置,他们都分别对应了一个代码仓库。google仓库中包含的主要是Google自家的扩展依赖库,而jcenter仓库中包含的大多是一些第三方的开源库。
dependencies闭包中使用classpath声明了两个插件:一个Gradle插件和一个Kotlin插件。
app目录下的build.gradle

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

android {
    compileSdkVersion 29
    buildToolsVersion "29.0.3"

    defaultConfig {
        applicationId "com.example.servicetest"
        minSdkVersion 21
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.core:core-ktx:1.2.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}

首先第一行应用了一个插件,一般有两个值可选:com.android.application表示这是一个应用程序模块,com.android.library表示这是一个库模块。二者最大的区别在于,应用程序模块是可以直接运行的,库模块只能作为代码库依附在别的程序模块来运行。
紧接着是一个大的android闭包,这个闭包力可以配置项目构建的各种属性。compileSdkVersion是项目编译版本,buildToolsVersion 是项目构建工具版本。
dependencies闭包功能非常强大,里面指定当前项目的所有的依赖关系。通常Android Studio项目一共有3种依赖方式:本地依赖,库依赖,远程依赖。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一天发火两次

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值