- 添加模块依赖:
compile project(":library")
- 添加子目录下的模块:
compile project(“:libraries:library”)
Gradle总是从根目录开始查找build.gradle,一个build.gradle表示一个Gradle项目。
:
用作路径分隔符。settings.gradle
使用同样的路径格式。 - Gradle会为每个Module生成Tasks。如果在一个Module路径下执行Gradle Wrapper命令,任务只针对当前Module。
- 项目根目录下执行特定Module的命令:
gradlew :wear:assembleDebug
。 - Android Wear项目同样使用Application插件:
《Gradle for Android》笔记(4):Build Variants,多重构建
- Build Variant是buildTypes和productFlavor组合的结果。
Build Types 构建类型
- 构建类型用来定义如何构建应用或者库。
- debug类型是默认添加的,包含一系列默认属性。如果再添加其他的类型,默认的属性将和debug类型不同。
1
2
3
4
5
6
7
8
9
10android {
buildTypes {
staging {
// applicationId后缀,不影响应用包结构
applicationIdSuffix ".staging"
versionNameSuffix "-staging"
buildConfigField "String", "API_URL", "\"http://staging.example.com/api\""
}
}
}
《Gradle for Android》笔记(3):依赖管理
- Gradle支持递归依赖(transitive dependencies)
依赖源
- 基本添加依赖的方法,
repositories
块中添加依赖源。 添加依赖
1
2
3dependencies {
compile ‘com.google.code.gson:gson:2.3’
}唯一标识依赖的三要素:组(group)、名称(name)、版本(version)
- 添加依赖的完整写法
1
2
3dependencies {
compile group: ‘com.google.code.gson’, name: ‘gson’, version: ‘2.3’
}
《Gradle for Android》笔记(2):自定义构建基础
Android项目中的Gradle文件
三个默认生成的文件。
1
2
3
4
5MyApp
├── build.gradle
├── settings.gradle
└── app
└── build.gradlesettings.gradle文件在Initialization阶段执行,定义了这次构建包含的module。
1
2// 只有一个module的settings.gradle
include ':app'顶层
build.gradle
文件。
《Gradle for Android》笔记(1):Getting started
这一系列文章本是我最近看《Gradle for Android》这本书的笔记。虽然我也买了中文版,但是包含很多机翻的痕迹;另外翻译过程中会把很多关键字翻译成中文,反而会变得难以理解,所以还是看了英文版。
当然,这系列文章并不是翻译,而是笔记。省略了很多我认为不重要的细节,或者一些过于简略的独立话题的概述,因为独立话题一般都有官方文档可供查阅;部分内容也有按我的思路整理。当然,也有我自己添加的内容。如果你也想了解一些Gradle相关的内容,除了文档之外,希望这一系列文章能够帮助到你。
目前我还没有完全看完这本书,所以这一系列会持续更新完成。前几天看到某个网站上有一系列这本书的翻译文章,本以为相见恨晚,但更新到一半就终止了;而实际上刚好后面的内容就是自定义Task之类的实用内容,真是可惜。好啦,让我们开始吧。
Gradle 和 Android Studio
- Gradle 是一个独立的构建系统,和Android Studio并无绑定关系,可以独立运行于服务器进行持续集成。
- Gradle 倾向于使用约定和习惯进行管理和配置,这可以简化工作。Gradle大量使用默认配置简化项目中的配置工作,所以一般不需要额外配置。
- 比如:build.gradle这个文件名就是一个约定俗成。
- Gradle 脚本使用基于Groovy的DSL(Domain-Specific Language,领域特定语言)语言进行编写。Groovy是针对JVM的动态语言。
- 因为Groovy是基于JVM的,所以可以使用Java或其他基于JVM的语言编写Gradle插件。
构建系统
无线连接ADB调试Android设备
在Android真机上调试,连接的USB线总是觉得很烦,一不小心还可能把手机甩到地上。通过wifi进行调试,就很方便了,只需要几步。
- 手机连接到电脑,输入以下指令
adb tcpip {端口号}
,端口号比如5555,后面用这个端口连接。 - 拔掉USB线,输入
adb connect {设备IP}:{端口号}
,设备IP就是手机的IP,要保证和电脑在一个局域网内,端口号就是第一步的端口号。无意外的话,已经链接上了。
查看设备IP的方法:
手机连接到电脑的时候,输入 adb shell ip -f inet addr show wlan0
即可看到手机的IP。
日落
15年1月1日,奥体公园
屏幕适配那些事(03)几点建议
屏幕适配是一个老生常谈的问题了,我用这三篇博客和大家讨论点屏幕适配相关的干货。
- 01 屏幕适配和逻辑分辨率
- 02 Android逻辑像素刨根问底
- 03 几点建议
“如果方向错了,走得越远,偏离目标越远。”对于屏幕适配,设计稿就是“目标”,开发者对于设计稿的理解就是“方向”。很多适配糟糕的界面并不源于“糟糕的设计”或者“糟糕的实现”,而是因为设计师设计出了不可适配的界面或者开发者没有理解适配意图。
这里给出一些建议,希望帮助到大家,如果你有其他好的建议,也希望能分享出来,欢迎讨论。
使用逻辑分辨率
设计稿使用逻辑分辨率是是很重要的一点。推荐逻辑分辨率并不是因为我作为一个开发者懒得进行单位转换,而是Android和iOS在进行UI布局时都是使用逻辑像素为单位,使用逻辑像素作为设计稿的单位除了上面说的减少单位转换,还可以减少很多不必要的麻烦。
屏幕适配那些事(02)Android逻辑像素刨根问底
屏幕适配是一个老生常谈的问题了,我用这三篇博客和大家讨论点屏幕适配相关的干货。
- 01 屏幕适配和逻辑分辨率
- 02 Android逻辑像素刨根问底
- 03 几点建议
iOS的屏幕规格可以列举处理,iPhone4及更新的设备,只有4种规格,他们的逻辑分辨率像也是固定的。Android这边就比较复杂了,理论上可以出现无数种逻辑分辨率。Android的逻辑分辨率可以通过三个步骤推导得到:
- 获取屏幕像素密度。
- 计算逻辑像素密度 = 屏幕像素密度 / 基准屏幕像素密度。
- 计算逻辑分辨率 = 物理分辨率 / 逻辑像素密度。
以Nexus 5为例:
屏幕适配那些事(01)屏幕适配和逻辑分辨率
屏幕适配是一个老生常谈的问题了,我用这三篇博客和大家讨论点屏幕适配相关的干货。
- 01 屏幕适配和逻辑分辨率
- 02 Android逻辑像素刨根问底
- 03 几点建议
什么是屏幕适配?
我们先来给屏幕适配下一个定义:
屏幕适配是让一套UI在不同尺寸、不同分辨率和不同比例的屏幕上都能正常显示。
这里的“正常”两个字比较模糊,我来解释一下,设备的尺寸、分辨率、比例不同,但是系统在显示内容的时候,有一个虚拟的度量单位——逻辑像素——这也是我们下面一节要讨论的内容。我们姑且认为“更大的屏幕”(逻辑分辨率更高的屏幕)应该显示更多内容,拿iPhone/Android的内置应用的设计作为例子很合适,它们在不同的设备上都能“正常”显示。我们看一个例子,相同的一张图片,要求在屏幕中央显示,对比下面的第2/3/4张图,你会发现“正常”和“不正常”的区别。