原创 淺析Android插件化

前言 在Android 9.0的jar包中,可以發現很多函數添加了@hide,這表示google顯示了對@hide api的反射調用,上有政策,下有對策,我天朝人民的智慧是無窮盡的,具體的方案可以參考一種繞過Android P對非SD

原创 基於ASM的組件化框架

背景 我們在開發一個應用時,會隨着時間、人員和需求的增多,我們的代碼也會以一個非常快的速度在迭代,同時由於每個人的開發水平不一樣,就會有各種各樣的問題,如果一直在一個project中開發,很快演變成一個高耦合、臃腫和複雜的項目,所以我

原创 apk打包流程

aapt資源編譯 編譯assets目錄和res/raw目錄下的資源 編譯res目錄下的資源文件 給res目錄下的每個資源賦予一個資源ID,生成resource.arsc資源索引文件 解析並編譯AndroidMainifest.xml

原创 字節跳動屏幕適配方案解讀

說來慚愧,這個方案在微信公衆號推出來的時候,我纔去瞭解我司自己的適配方案。字節跳動屏幕適配方案 重點 爲什麼要做屏幕適配 從數據上告訴你安卓手機屏幕的碎片化 我司的適配方案 適配中出現的問題 實際演練 爲什麼要做屏幕適配 在An

原创 手摸手帶你走進Kotlin Coroutine

參考文章 kotlin官網 kotlin github Roman Elizarov 視頻(基於1.3之前的,一些用法已經改變,但是主要看原理和思想) Roman Elizarov 視頻深入(基於1.3之前的,一些用法已經改變,但是主

原创 輕量級的MVVM

背景 現在的項目中各種開發框架都有,MVC,MVP,MVVM。比較混亂,雖然也推出了MVVM,但是由於沒有強制和代碼歷史的問題,大部分的時候還是使用之前的開發框架進行開發,所以現在整個項目的結構比較複雜和混亂。 先設立一個小目標,先在

原创 Gradle-自定義plugin

爲什麼要學習Gradle Gradle目前已經應用於多個Android開發的技術體系中,比如構建系統、插件化、熱修復和組件化,如果不瞭解Gradle,那麼對於上述技術體系的瞭解會大打折扣 上述一段文字是比較傳統的解釋,我開始系統的

原创 一年Android工作經驗,今日頭條 阿里 百度 網易 美團 小米 快手面經

轉載請註明出處:http://blog.csdn.net/a296777513/article/details/73610719 前言 人生困難重重,在漫長而艱辛的前行路上,堅持不懈、腳踏實地的“低頭拉車”固然重要。但認清形勢、找準目標

原创 OkHttp3源碼分析

重點 本文打算從三點來剖析OkHttp3: * 網絡請求的整理流程-會使用 * 攔截器模式-易擴展 * 緩存和連接池-高性能 整體流程 我們在閱讀某一類源碼之前,首先要學會怎麼使用,其次纔是去了解內部的實現原理,實現方案上有什麼技巧

原创 Retrofit2源碼閱讀

本次分析的要點: 1. Retrofit中的動態代理和整個流程(Proxy、ServiceMethod、OkHttpCall) 2. Retrofit中的轉換器和適配器(Converter、CallAdapter) Retrofit整

原创 Android 投影MAC,Vysor pro 破解

投影工具 當我們需要做產品演示,或者需要在手機上做一些講解時,需要讓大家看到手機屏幕,這個時候就需要一款好的投影工具。 現在比較好用的是: Vysor是一款可以使用電腦操作安卓手機的谷歌瀏覽器插件,非常流程和方便,但是免費版的話,畫面

原创 優雅解的監聽軟鍵盤隱藏

# 背景 1. Android軟鍵盤的顯示和隱藏,從開始做直播這塊,就一直困擾着我。 2. 從佈局擠壓,到輸入區顯示不全,再到閃屏以及卡頓,這裏的坑讓我跌倒無數次。 3. 各種佈局監聽,回調,代碼冗餘、複

原创 華爲北京研究所第一屆黑客馬拉松比賽-基於Android防止兒童走失

簡介   這個項目是在2016年華爲研究所舉辦的第一屆黑客馬拉松比賽時開發的項目,這個項目是借鑑之前寫Android人臉對比,想出一個關於防止兒童走失的想法,然後增加瀏覽歷史和定位失蹤兒童以及推送附近人的功能。   其實整個項目並不難,

原创 基於Kotlin實現註解生成器(Annotation Processor)

隨着一些使用註解生成器(annotationProcessor)的框架的流行,例如ButterKnife、dagger2、EventBus 3.0。我需要了解註解生成器的相關知識。 APT APT(Annotation Processin

原创 Gradle發佈Library到JCenter

之前工作的時候,認爲只用關注代碼本身就可以,將代碼寫好,其他的都不需要關心,但是這個認識的狹隘的,任何可以提升我們開發效率的工具或者語言我們都應該適當的去關注一下。 平常在工作中我們常常會引用到第三方的開源庫,比如Fresco、Even