Kyleduo's blog!


  • 首页

  • 归档

  • 标签

《Gradle for Android》笔记(7):创建Task和Plugin

发表于 2016-12-28

cover

Groovy概览

  • 输出println ‘Hello, Groovy!’
    1. 无方法括号。
    2. 无分号结尾
    3. 不需要namespace。(对比System.out.println)
  • 字符串可以使用单引号和双引号,双引号可以嵌入表达式。$作为嵌入表达式标记。

    1
    2
    3
    def name = 'Andy'
    def greeting = "Hello, $name!"
    def name_size "Your name is ${name.size()} characters long."
  • 动态修改代码体:

阅读全文 »

《Gradle for Android》笔记(6):测试

发表于 2016-12-28

cover

单元测试 - JUnit

  • 默认JUnit测试文件在main同级的test目录下。
  • JUnit测试成功输出:BUILD SUCCESS
  • 包含多重构建的项目,可以添加如testPaid的目录进行针对性测试。
  • Gradle命令。
    1
    2
    3
    4
    5
    6
    7
    8
    // 运行测试
    gradlew test
    // 针对某个构建测试
    gradlew testDebug
    // 在一个构建测试失败之后,继续执行其他构建。
    gradlew test —continue
    // 指定测试类
    gradlew testDebug —tests=“*.LogicTest*
阅读全文 »

《Gradle for Android》笔记(5):构建多Module项目

发表于 2016-12-28

cover

  • 添加模块依赖: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,多重构建

发表于 2016-12-27

cover

  • Build Variant是buildTypes和productFlavor组合的结果。

Build Types 构建类型

  • 构建类型用来定义如何构建应用或者库。
  • debug类型是默认添加的,包含一系列默认属性。如果再添加其他的类型,默认的属性将和debug类型不同。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    android {
    buildTypes {
    staging {
    // applicationId后缀,不影响应用包结构
    applicationIdSuffix ".staging"
    versionNameSuffix "-staging"
    buildConfigField "String", "API_URL", "\"http://staging.example.com/api\""
    }
    }
    }
阅读全文 »

《Gradle for Android》笔记(3):依赖管理

发表于 2016-12-26

cover

  • Gradle支持递归依赖(transitive dependencies)

依赖源

  • 基本添加依赖的方法,repositories块中添加依赖源。
  • 添加依赖

    1
    2
    3
    dependencies {
    compile ‘com.google.code.gson:gson:2.3’
    }
  • 唯一标识依赖的三要素:组(group)、名称(name)、版本(version)

  • 添加依赖的完整写法
    1
    2
    3
    dependencies {
    compile group: ‘com.google.code.gson’, name: ‘gson’, version: ‘2.3’
    }
阅读全文 »

《Gradle for Android》笔记(2):自定义构建基础

发表于 2016-12-25

cover

Android项目中的Gradle文件

  • 三个默认生成的文件。

    1
    2
    3
    4
    5
    MyApp 
    ├── build.gradle
    ├── settings.gradle
    └── app
    └── build.gradle
  • settings.gradle文件在Initialization阶段执行,定义了这次构建包含的module。

    1
    2
    // 只有一个module的settings.gradle
    include ':app'
  • 顶层build.gradle文件。

阅读全文 »

《Gradle for Android》笔记(1):Getting started

发表于 2016-12-23

cover

这一系列文章本是我最近看《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设备

发表于 2016-11-11

在Android真机上调试,连接的USB线总是觉得很烦,一不小心还可能把手机甩到地上。通过wifi进行调试,就很方便了,只需要几步。

  1. 手机连接到电脑,输入以下指令 adb tcpip {端口号} ,端口号比如5555,后面用这个端口连接。
  2. 拔掉USB线,输入 adb connect {设备IP}:{端口号} ,设备IP就是手机的IP,要保证和电脑在一个局域网内,端口号就是第一步的端口号。无意外的话,已经链接上了。

查看设备IP的方法:

手机连接到电脑的时候,输入 adb shell ip -f inet addr show wlan0 即可看到手机的IP。

日落

发表于 2016-11-03

sunset

15年1月1日,奥体公园

屏幕适配那些事(03)几点建议

发表于 2016-10-24

屏幕适配是一个老生常谈的问题了,我用这三篇博客和大家讨论点屏幕适配相关的干货。

  • 01 屏幕适配和逻辑分辨率
  • 02 Android逻辑像素刨根问底
  • 03 几点建议

“如果方向错了,走得越远,偏离目标越远。”对于屏幕适配,设计稿就是“目标”,开发者对于设计稿的理解就是“方向”。很多适配糟糕的界面并不源于“糟糕的设计”或者“糟糕的实现”,而是因为设计师设计出了不可适配的界面或者开发者没有理解适配意图。

这里给出一些建议,希望帮助到大家,如果你有其他好的建议,也希望能分享出来,欢迎讨论。

使用逻辑分辨率

设计稿使用逻辑分辨率是是很重要的一点。推荐逻辑分辨率并不是因为我作为一个开发者懒得进行单位转换,而是Android和iOS在进行UI布局时都是使用逻辑像素为单位,使用逻辑像素作为设计稿的单位除了上面说的减少单位转换,还可以减少很多不必要的麻烦。

阅读全文 »
1…567…15
kyleduo

kyleduo

Always follow my heart.

142 日志
30 分类
101 标签
Github Weibo
友情链接
  • CarlWe
  • Jeremy's World
© 2026 kyleduo
由 Hexo 强力驱动
主题 - NexT.Mist
京ICP备15044234号-1