原创 Android View刷新原理Invalidate()和PostInvalidate()源碼分析

一般Ui控件使用來簡單開發時,並沒有注意到系統如何刷新,而當我們自定義View或開發複雜的view時,就需要主動調用Invalidate或者postInvalidate等來通知系統刷新繪製UI,刷新視圖。那接下來一個個來剖這兩個A

原创 Android 雙卡識別Imsi以及副卡發送短信總結

本篇文章已授權微信公衆號 guolin_blog (郭霖)獨家發佈 Android5.0系統纔開始提供對雙卡識別支持,提供SubscriptionManager類來完成對雙卡相關設備信息的讀取。在5.0之前只能根據機型來適配來獲取

原创 談Android接入Sdk開發的安全性方案

Android 接入sdk是指某公司作爲能力提供方經常以接入Sdk形式來暴露能力供用戶使用,這樣的能力對公司來說是財富實現的資本,不能被外界窺探或者破解成免費使用,那下面來分析下有哪些危害以及解決方案。 裸sdk的危害 裸Sdk是

原创 Android Animation動畫原理源碼分析

Android 平臺提供了三類動畫,一類是 Tween 動畫-Animation,即通過對場景裏的對象不斷做圖像變換 ( 平移、縮放、旋轉 ) 產生動畫效果;第二類是 Frame 動畫,即順序播放事先做好的圖像,跟電影類似。最後一

原创 Android多進程Process開發總結-優點與缺陷

Androiod多進程 爲何使用多進程 什麼情況下,我們會去想到使用多進程呢? 就我個人開發實踐中就多次使用了Android多進程機制,如項目中的推送業務開發,提出要求如下: - 不能影響主業務的代碼穩定運行 - 不

原创 Android高級進階-NDK 開發總結

總結下之前的ndk開發

原创 插件Manifest註冊組件支持

現有的技術方案 主要分幾種: 1)基類代理Activity同步反射方式子類 2)Hook Instrumentation來同步創建插件Activity實例,記錄在ActivityRecord隊列中 3)HooK ,同步AMS對生命週期

原创 插件Apk Dex加載機制

ClassLoader簡介 Android 系統中有多個classLoader的實現,如PathClassLoader、DexClassLoader、BootClassLoader;對於自定義動態加載dex文件,我們可以通過DexCl

原创 插件Apk 資源加載機制

系統安裝過的Apk資源加載原理 可以參考下之前寫的文章:Android App啓動時Apk資源加載機制源碼分析 一句總結要表達的是Apk資源都是由AssetManager來加載維護的,核心代碼 // AssetManager創建

原创 插件化so庫加載原理及實現

前言 在正常開發中,我們只負責調用方法加載so,整個實現交給系統去完成,那插件中要加載so庫要做什麼單獨的處理麼,在不清楚的情況下,先看下系統是怎麼實現的,我們直接利用系統來完成加載要怎麼做。 系統加載so庫流程源碼分析 先看下開發中

原创 插件化框架對Android P的適配

Android P non-sdk 對於非sdk接口的hide field和方法,Android P進行限制調用,可以參考如下文章https://juejin.im/post/5b8959f96fb9a019fe685eb3 爲了適配

原创 源碼詳細解析Activity生命週期onResume中Handler.Post(Runnable)和View.Post(Runnable)的UI效果差異原因

一般需求中會出現在Activity啓動中需要獲取Ui控件相關大小或者在界面繪製完成之後刷新數據,我們都知道在UI繪製完成之後,時機最好,不會阻塞主線程導致卡頓或者UI控件參數獲取失敗。 也許大家使用過或 知道Handler(MainLoo

原创 《Android徹底組件化方案實踐》讀後分析

《得到》App相關開發成員開源關於Android組件話的實踐方案及demo,看似實現代碼簡單,但核心是組件化的實現想法以及自動集成、單獨運行的構建實現。現對其中的核心思想和gradle插件寫些自己的理解以及Gradle插件開發學習筆記,填

原创 IDA動態調試技術及Dump內存

最近研究SO文件調試和dump內存時,爲了完整IDA調試起來,前後摸索了3天才成功,裏面有很多坑和細節,稍微不注意,就一直排行,需要理解每步驟的作用意義,否則就會覺得教程不對,要詳細的教程可能找不到,大部分都是簡單介紹,沒有提醒細節和易忽

原创 手機dump內存Odex格式反編譯

在上篇文中介紹瞭如何dump內存,生成的文件爲odex格式,需要進一步反編譯才能查閱。先是通過baksmali工具轉成smali格式文件,然後再通過smali工具把smali格式逆向dex。 如下命令: 1、通過java命令運行baksm