原创 Android 編譯流程解析03-手動編譯Apk

Android編譯流程 通過之前兩篇文章,我們已經大致瞭解了編譯相關的Gradle,它們的編譯流程如下圖所示,這篇文章我們來通過手動編譯的方式,來模擬Gradle 編譯Android APK文件。 手動編譯APK 從這裏,我們就

原创 Android 編譯流程解析02-相關Task解析

簡介 上篇文章中,我們介紹了AppPlugin的初始化,在其父類BasePlugin的apply()中,會調用ApplicationTaskManager的createTasksForVariantScope(),方法內初始化了很

原创 Android 編譯流程解析01-AppPlugin初始化

簡介 Android編譯由Gradle插件來完成。 在平時開發中,我們都知道,添加以下Gradle插件,我們就可以編譯Android項目。 dependencies { classpath 'com.android.too

原创 Android 新建自定義Gradle插件

首先,我們新建一個項目,然後新建一個Android Library。 我們將library取名爲myplugin 然後,我們要刪除myplugin/src目錄下所有的文件,然後按照下圖創建相關的路徑。 添加依賴關係 修改my

原创 Android 創建一個最簡單的Gradle插件

創建最簡單的Plugin 在app的gradle中,添加如下代碼 class MyPlugin implements Plugin<Project>{ @Override void apply(Project ta

原创 android cardview 取消陰影,高度

cardview默認情況下會有陰影,如果我們不需要陰影效果,需要進行設置。 我們先來看下cardview常見的屬性 屬性 說明 app:cardElevation 陰影的大小 app:cardMaxElevati

原创 Android Gradle中判斷是否是正式包 (BuildTypes)

在app的gradle中增加如下方法 boolean isReleaseBuildType(){ for(String s : gradle.startParameter.taskNames) { if (

原创 RxJava查漏補缺

RxJava概念 標準中的觀察者設計模式,一個被觀察者,多個觀察者,多次註冊。 RxJava是改裝的觀察者設計模式,一個訂閱(註冊) 一個觀察者。 一旦滿足 起點 和 終點 這樣的需求,都可以使用RxJava來實現。 RxJava

原创 Java泛型的上下限及可讀可寫模式

泛型的上下限我們都知道,但是泛型的可讀可寫模式卻是第一次聽說,在這裏記錄一下。 泛型的上限 extends 上限 Person or Person的所有子類 都可以, 最高的類型只能是Person,把最高的類型給限制住了 泛型

原创 Android DEX加固方案與原理

Android 反編譯的威脅 逆向分析: 漏洞挖掘、協議分析 二次打包: 盜版、破解、廣告 保護方案 代碼混淆:Java代碼、C\C++帶馬甲、JS\HTML代碼 應用加固:DEX文件、SO文件、資源文件 APP構建過程中用到的工

原创 Android Apk安裝原理

APK安裝分爲有界面安裝和無界面安裝 有界面安裝 UI界面在packages/apps/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActiv

原创 Android Tinker 熱修復原理

熱修復流派 基於Multidex的Dex注入 代表:TInker,手機QQ空間、Nuwa 原理:將補丁Dex對象的DexFile對象注入到系統ClassLoader相關聯的DexPathList對象的dexElements數組的最

原创 Android Launcher啓動流程

Launcher App 由SystemServer啓動,而SystemServer由Zygote進程孵化出來的。 Zygote是孵化器,所有其他Dalvik/ART虛擬機進程都是用過zygote孵化(fock)出來的 Syst

原创 Android adb錄製適配及轉換爲Gif

錄製視頻 默認錄製180秒,按下ctrl+c可以提前結束錄製 adb shell screenrecord /sdcard/test.mp4 設定視頻分辨率 對於高分辨率的手機,錄製的視頻很大,我們分享又不需要這麼大的 我們可以

原创 Android - App瘦身

爲什麼要瘦身 安裝包變大,導致很多用戶不願意安裝更新 安裝包變大,導致很多用戶不願意下載 安裝包變大,流量使用增多,增加其他邊際成本 優化方式 圖片資源的優化 圖片選擇順序 首先選選擇SVG 否則選擇WebP 之後如果有透明