Gradle Project
Gradle Project Gradle 官方文档:Project (Gradle API 8.7) 什么是 Project? Gradle 为每个 build. Gradle 都会创建一个相应的 Project 领域对象,在编写 Gradle 脚本时,我们实际上是在操作诸如 Project 这样的 Gradle 领域对象;每一个待编译的工程都叫做一个 Project。每一个 Pro...
Gradle Project Gradle 官方文档:Project (Gradle API 8.7) 什么是 Project? Gradle 为每个 build. Gradle 都会创建一个相应的 Project 领域对象,在编写 Gradle 脚本时,我们实际上是在操作诸如 Project 这样的 Gradle 领域对象;每一个待编译的工程都叫做一个 Project。每一个 Pro...
04.Gradle 缓存 Gradle 缓存 Gradle 内存缓存 Gradle 内存缓存主要是通过 Gradle Daemon 进程 (即守护进程) 实现的。开启 Gradle Daemon(Gradle 3.0 之后守护进程默认开启)在 gradle.properties 中设置 org.gradle.daemon=falseGradle Daemon 优势 多次构建...
Configuration Configuration 基础 Configuration 概述 大部分项目都是由诸多第三方依赖组成的,在 Gradle 中,依赖不是独立存在的,每个依赖都会归属于一个 Configuration。每个 Configuration 实际上是 dependency 的集合, 便于不同构建步骤引用依赖,依赖和 Configuration 它们的关系如下: ...
Gradle 生命周期 Gradle 生命周期阶段 Gradle 的执行分为三大阶段: Initialization -> Configuration -> Execution 阶段一: Initialization 初始化 Initialization 阶段主要目的是初始化构建, 它又分为两个子过程, 一个是执行 Init Script, 另一个是执行 Setti...
Gradle Gradle 基础 Gradle 是一个框架,它定义了一套自己的游戏规则。我们要玩转 Gradle,必须要遵守它设计的规则。 Gradle 介绍 Gradle 是什么? Gradle 是一个自动化构建工具。Gradle 是通过组织一系列 task 来最终完成自动化构建的,所以 task 是 Gradle 里最重要的概念我们以生成一个可用的 apk 为例,整个过程要经过...
Groovy 语法 Groovy 基本语法 在 Groovy 中导入语句用 import 语句来导入 import groovy.xml.MarkupBuilder def xml = new MarkupBuilder() 默认情况下,Groovy 在代码中导入了以下库,这些库不需要显示地导入它们: import java.lang.* import java.util...
.so 文件,ABI 和 CPU 架构 CPU 架构 ARMv5早期 ARMv72010 年起 X862011 年起 MIPS2012 年起 ARMv82014 年起 MIPS642014 年起 X86_642014 年起 在 Android 系统,每一个 CPU 架构对应一个 ABI,都定义了一种 ABI,ABI 决定了二进制文件如何与系统进行交互:a...
卸载反馈 linux 层 -feedback fork 一个进程 监听自身应用的/data/data/package/目录是否存在 通过 linux 中的文件监听,inotify 监听 linux 中的文件状态 注意覆盖升级的问题 调用 am 命令跳转到网页 Java 层的 FileObserver 中的就是 inotify 机制 分析 AM.java 静默安...
NDK 基础 NDK 介绍 https://developer.android.com/ndk/guides/ 什么是 NDK? NDK,Native Development Kit,本地开发工具包。就是提供了一系列的工具,帮助我们快速开发 C/C++ 动态库,并可以将 so 库和 Java 应用一起打包成 apk。 原生开发套件 (NDK) 是一套工具,使您能够在 Android...
JNI 进阶 JNI Native 函数加载执行流程 静态注册的函数映射 用 javah 风格的代码,则 dvm 调用 dvmResolveNativeMethod 进行动态延迟解析,直到需要调用的时候才会解析。 DVM 调用 dvmResolveNativeMethod 函数 void* func = lookupSharedLibMethod(method) 去已加载的...