原创 Android 自定義Gradle插件基礎 測試 總結

Gradle 定義 Gradle是一個基於Apache Ant和Apache Maven概念的項目自動化建構工具。它使用一種基於Groovy的特定領域語言來聲明項目設置,而不是傳統的XML。當前其支持的語言限於Java、Groovy和Sca

原创 Android動態編譯技術 Plugin Transform Javassist操作Class文件 前言 總結

前言 繼續上一章節自定義Gradle插件,利用plugin進一步做一些事情 本章節利用Google提供的Transform API 在編譯的過程中操作.class文件。 先說一下Transform是什麼 gradle從1.5開始,gradl

原创 Android 設備唯一標識

IMEI IMEI 國際移動設備身份碼 目前GSM/WCDMA/LTE手機終端需要使用IMEI號碼,在單卡工程中一個手機號對應一個IMEI號,雙卡手機則會對應兩個IMEI號,一張是手機卡對應一個。 需要權限 <uses-permissi

原创 遲來的2018 年總結

前言 想了很多總結的話語,手放到鍵盤上的那一刻,覺得又不知道怎麼來總結,不知道這一刻你是否也有同感,2018有很多經歷,也有很多故事,喝一口手邊的82年可樂,開始聊聊這一年,滴滴滴老司機開車啦! 博客之路 2018 開始在簡書寫博客,其實

原创 Android AOP三劍客之Javassist

前言 本章節更新的慢了些,最近公司多事之秋,今天靜下心來把AOP最後入門篇補上,做事還要有頭和尾的。 Javassist Javassist作用是在編譯器間修改class文件,與之相似的ASM(熱修復框架女媧)也有這個功能,可以讓我們直接修

原创 Android AOP三劍客之AspectJ

前言 本章節目的不是詳細的介紹AspectJ的細節,而是最近項目用到了AspectJ,通過一個簡單例子來看下定義切片以及使用切片的流程是怎樣的。 AspectJ AspectJ 是使用最爲廣泛的 AOP 實現方案,適用於 Java 平臺,

原创 Android AOP三劍客之APT

AOP概念 AOP爲Aspect Oriented Programming的縮寫,意爲:面向切面編程,通過預編譯方式和運行期動態代理實現程序功能的統一維護的一種技術。AOP是OOP的延續,是軟件開發中的一個熱點,也是Spring框架中的一個

原创 HashMap負載因子

概念 HashMap的底層存在着一個名字爲table的Entry數組,在實例化HashMap的時候,會輸入兩個參數,一個是 int initCapacity(初始化數組大小,默認值是16),一個是float loadFactor(負載因子,

原创 Android 自定義Gradle插件基礎

Gradle 定義 Gradle是一個基於Apache Ant和Apache Maven概念的項目自動化建構工具。它使用一種基於Groovy的特定領域語言來聲明項目設置,而不是傳統的XML。當前其支持的語言限於Java、Groovy和Sca

原创 Android 設計模式-裝飾模式(Decorator Pattern)

定義 飾模式指的是在不必改變原類文件和使用繼承的情況下,動態地擴展一個對象的功能。它是通過創建一個包裝對象,也就是裝飾來包裹真實的對象。 UML結構圖 Component:組件對象接口 ConcreteComponent:具

原创 Flutter和RN對比

前言 本人目前負責的項目是原生+Webview方式開發的,由於Webview的體驗不太友好,所以決定選擇一種混編的方式,選擇一種跨平臺的技術來提升改善Webview的體驗,通過各種權衡考慮使用了RN,雖然目前RN在重構,但是沒有人可以否認目

原创 Android常用的數據結構

前言 今天來介紹一下Android 裏面常用的集合以及各自的特性 Collection Collection是接口,List和Set都實現了Collection接口,基本需要操作的方法都定義在這裏了 Set 常用TreeSet和HashSe

原创 Android 設計模式-建造者模式(Builder Pattern)

定義 將一個複雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示 應用場景 需要生成的產品對象有複雜的內部結構,這些產品對象具備共性; 隔離複雜對象的創建和使用,並使得相同的創建過程可以創建不同的產品。 UML

原创 Android動態編譯技術 Plugin Transform Javassist操作Class文件

前言 繼續上一章節自定義Gradle插件,利用plugin進一步做一些事情 本章節利用Google提供的Transform API 在編譯的過程中操作.class文件。 先說一下Transform是什麼 gradle從1.5開始,gradl