最近重新捡起了 Android 开发,发现很多以前的知识点很多都忘了,也有当时追求项目进度而在过程中只是稍作了解并没有深入,所以项目完成后就忘了的原因。所以近期可能会更新很多我在 Android 开发中碰到的问题和收获的知识,由大部分来自网络上的资料,和我自己在实际开发中发现的和网络上的博客教程存在差异的地方。
另外推荐大家最好的可以在开发的过程中比照官方文档来使用 api,在最近公司的一个技术分享会上有位同事提到关于一个 WiFi 服务底下的 api
,在 API 27 中已经弃用,虽然你在工程里仍可以调用那部分方法,但很可能会碰上不起作用或者产生其他问题的可能。安卓的官网现在国内也可以直接访问:Android Developers,外网地址:Android Developer
关于 build.gradle 的前置知识
java
开发中有两个大名鼎鼎的项目构建 ANT、Maven。- Google 推荐使用的
Android Studio
是采用Gradle
来构建项目的。Gradle
是一个非常先进的项目构建工具。
Gradle
是用了一种基于 Groovy
的领域特定语言(DSL,Domain Specific Language)来声明项目设置,摒弃了 XML
(如 ANT 和 Maven)的各种繁琐配置。
3 > 项目中一般会出现 2 个或者多个 build.gradle
文件,一个在根目录下,一个在 app
目录下。
如果切换到 Android 模式下则全部在 Gradle Scripts
。
根目录下的 build.gradle
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. |
新建工程后,如果不做改动的话,显示和效用如上。除此以外:
- buildscript{} 闭包里是
gradle
脚本执行所需依赖,分别是对应的maven
库和插件。 - allprojects{} 闭包里是项目本身需要的依赖,比如项目所需的
maven
库。 - repositories{} 闭包:配置远程仓库,该闭包中声明了
jcenter()
和google()
的配置,其中jcenter是一个代码托管仓库,上面托管了很多 Android 开源项目,在这里配置了 jcenter 后我们可以在项目中方便引用 jcenter 上的开源项目,从 Android Studio3.0 后新增了google()
配置,可以引用 google 上的开源项目。 - dependencies{} 闭包:配置构建工具,该闭包使用
classpath
声明了一个Gradle
插件,由于Gradle
并不只是用来构建 Android 项目,因此此处引入相关插件来构建 Android 项目,其中’3.0.0’为该插件的版本号,可以根据最新的版本号来调整。
app 目录下的 build.gradle
1 | // 声明是 Android 程序, |
正常情况下,我们只需要用到以上配置,值得一提的是 dependencies{}
闭包,在下载 GitHub 上的第三方库常看到不太熟悉的引用方式,去搜索了一下后,得出答案:
从 Android Studio3.0 后
compile
引入库不在使用,而是通过api
和implementation
,api
完全等同于以前的compile
,用api
引入的库整个项目都可以使用,用implementation
引入的库只有对应的Module
能使用,其他Module
不能使用,由于之前的项目统一用compile
依赖,导致的情况就是模块耦合性太高,不利于项目拆解,使用implementation
之后虽然使用起来复杂了,但是做到降低偶合兴提高安全性。
另外还有一些配置可以根据个人需要添加,比如签名配置:1
2
3
4
5
6
7
8
9
10
11
12
13
14signingConfigs {// 自动化打包配置
release {// 线上环境
keyAlias 'test'
keyPassword '123456'
storeFile file('test.keystore')
storePassword '123456'
}
debug {// 开发环境
keyAlias 'test'
keyPassword '123456'
storeFile file('test.keystore')
storePassword '123456'
}
}