Gradle学习指南-前言
这个对于安卓开发来说,Gradle可以不了解,但是又必须了解。 说不需要了解,是因为: 通过AndroidStudio建立工程的时候,默认就创建好了Gradle的项目结构及对应的任务,通过IDE来添加模块的时候,也可以自动的添加Gradle的配置。 说需要了解,是因为:有时候会遇到构建错误,还有时候需要改一改构建流程的默认行为,另外有些时候,需要自行扩展一个构建任务。 ...
这个对于安卓开发来说,Gradle可以不了解,但是又必须了解。 说不需要了解,是因为: 通过AndroidStudio建立工程的时候,默认就创建好了Gradle的项目结构及对应的任务,通过IDE来添加模块的时候,也可以自动的添加Gradle的配置。 说需要了解,是因为:有时候会遇到构建错误,还有时候需要改一改构建流程的默认行为,另外有些时候,需要自行扩展一个构建任务。 ...
配置 android 上传到 maven 中心仓库,发现配置的代码有点多,而且如果有多个库模块需要上传,则需要复制粘贴不少重复的配置代码,于是编写了一个 gradle 插件用于简化提取这个配置过程; 插件用途及效果 本插件用于简化Android库上传到Maven中心仓库的配置,避免每个project的gradle中都放置一份重复较多的配置; ...
本篇文章介绍如何基于Gitlab来配置一个服务集群的自动构建与部署更新,其中服务的更新基于docker来完成,本文主要关注如何完成部署操作,及如何完成gitlab上ci的配置;在完成单一的服务自动部署更新后,我们通过gitlab的include及trigger机制来简化统一部署流程; ...
本文介绍如何安全的迁移Docker的数据目录/var/lib/docker 为什么要迁移 虚拟机创建时,一般分配一个比较小的系统盘,然后挂载一个大容量的数据盘,docker默认情况下数据存储在系统盘(/var/lib/docker)目录,时间一久,会占满系统盘。 迁移步骤 首先需要停止docker服务 systemctl stop docker 通过命令df -h 先去看下磁盘大概的情况,找一个大的空间 创建docker的新目录,我这边找了data, 所以我这边的新目录地址是 /data/docker/lib/ mkdir -p /data/docker/lib 注:参数-p 确保目录名称存在,如果目录不存在的就新创建一个。 ...
介绍IDEA及AndroidStudio中的导航技巧,包括文件导航,代码元素(类,方法)导航,文本导航等,还有书签等的使用方法;提高编写代码及阅读代码的效率; 插入符导航 后退:==⌘[== 前进:==⌘]== 最后编辑点: ==⇧⌘⌫== 定位到当前的结束括号: ==Ctrl+M== 或者 ==↑== , ==↓== 查看光标所在位置所属的元素:==⌃⇧Q== (注意看下图的左上角显示了当前的类) 移动到当前开始括号对应的闭合括号: ==Ctrl + M== 在代码块之间导航: ==⌥⇧⌘[== ==⌥⇧⌘]== 移动插入符 移动到下一个或者上一个单词: ==⌥→==,==⌥←== ...
本文分析bindService的流程,首先我们通过阅读源码获取一个主线的调用地图,然后提出若干问题,包括:APP进程中如何获取AMS,AMS如何启动APP-service的进程,AMS中如何获取ApplicationThread并与之通讯,Service的启动及绑定流程;然后再通过源码一一解答。最后再整体总结梳理一下整体流程; ...
简单介绍系统架构、编译环境的搭建 简单介绍利用 AndroidStudio 调试 system_process 进程的方法及编译更新部分系统模块的方式 Android系统架构 Android 系统架构如下两图所示: <?xml version="1.0" encoding="UTF-8"?> 应用框架。应用框架最常被应用开发者使用。很多此类 API 都可以直接映射到底层 HAL 接口,并可提供与实现驱动程序相关的实用信息。 Binder IPC。Binder 进程间通信 (IPC) 机制允许应用框架跨越进程边界并调用 Android 系统服务代码,这使得高级框架 API 能与 Android 系统服务进行交互。在应用框架级别,开发者无法看到此类通信的过程,但一切似乎都在“按部就班地运行”。 系统服务。系统服务是专注于特定功能的模块化组件,例如窗口管理器、搜索服务或通知管理器。应用框架 API 所提供的功能可与系统服务通信,以访问底层硬件。Android 包含两组服务:“系统”(诸如窗口管理器和通知管理器之类的服务)和“媒体”(与播放和录制媒体相关的服务)。 硬件抽象层 (HAL)。HAL 可定义一个标准接口以供硬件供应商实现,这可让 Android 忽略较低级别的驱动程序实现。借助 HAL,硬件开发者可以顺利实现相关功能,而不会影响或更改更高级别的系统。HAL 实现会被封装成模块,并会由 Android 系统适时地加载。如需了解详情,请参阅硬件抽象层 (HAL)。 Linux 内核。开发设备驱动程序与开发典型的 Linux 设备驱动程序类似。Android 使用的 Linux 内核版本包含一些特殊的补充功能,例如低内存终止守护进程(一个内存管理系统,可更主动地保留内存)、唤醒锁定(一种 PowerManager 系统服务)、Binder IPC 驱动程序,以及对移动嵌入式平台来说非常重要的其他功能。这些补充功能主要用于增强系统功能,不会影响驱动程序开发。可以使用任意版本的内核,只要它支持所需功能(如 Binder 驱动程序)即可。不过建议使用 Android 内核的最新版本。如需了解详情,请参阅构建内核一文。 以上部分内容来源: https://source.android.google.cn/devices/architecture?hl=zh-cn ...
仅记录使用Gridea过程中解决的问题及解决方式 下载安装并使用 访问这里(https://gridea.dev/)下载安装并使用,不赘述。 远程同步github配置 关于建立仓库,获取token,配置pages赘述,仅记录额外的配置。 在Gridea的工作目录的根目录中新建一个 .gitignore 文件,输入如下内容: .DS_Store */.DS_Store # 自己的本地草稿 typora 远程同步时,会将此文件放入到output目录下,然后将output目录推送到github上,为了避免将其中的某些文件推入到远程仓库,故可以通过此方式定义gitignore ...
翻译国外文章,该文章介绍了Android开发中矩阵相关的数学知识,包括矩阵是什么?矩阵加法及乘法运算,2x2矩阵的变换,最后演进为Android中使用的3x3矩阵。文中图片及动图比较多,相对好懂。 原文链接:https://i-rant.arnaudbos.com/matrices-for-developers/#technical-challenge ...
gradle有三种编写插件的方式,我们这里使用在项目中的buildSrc模块中编写插件的方式,自定义了一个应用于Android项目的根据flavor过滤so库的gradle插件; 概述 自定义gradle插件有如下三种方式(🔗链接): 在buildscript中直接编写; 在buildSrc项目中编写插件代码; 在独立的项目中编写插件代码; 这里我们将使用buildSrc方式实现一个gradle插件。 ...