原创 Android 插件化框架 Replugin 源碼解讀(四)插件安裝與更新、預加載

       插件安裝的過程只將APK移動(或複製)到“插件路徑”下,不釋放優化後的Dex和Native庫,不會加載插件。可以在 插件路徑data/data/包名/app_p_a (這裏是apk插件,不同的插件會放到不同的文件夾下,app

原创 Android AIDL 初步探索

        在Android 應用開發過程中涉及到進程間通信的場景不多,但是隨着進程化開發的實現,單APP多進程的情況也越來越多。這就涉及到IPC進程間通信,而Binder 就是其中的一種,Android中很多情況 IPC 通信都是通

原创 Android 插件化框架 Replugin 源碼解讀(五)startActivity

前面分析插件加載的過程中其實插件已經啓動了,在callApp 方法中啓動了插件的application,只是組件還沒有加載,這裏我們探索一下activity 組件的加載過程,startActivity。 先介紹一下Replugin 的 實

原创 Android 插件化框架 Replugin 源碼解讀(二)hook系統ClassLoader

        在上一章節中我們講到了Replugin初始化的時候創建了插件管理進程作爲服務端。其他工作進程作爲客戶端,然後分別在各自的進程中初始化自己要做的事情。創建了多個Binder對象用來完成客戶端和服務端的信息交互。在完成PmBa

原创 Android 插件化框架 Replugin 源碼解讀(一)初始化

     Android 插件化框架經過多年的發展已經出現很多成熟的方案。依然記得自己最早接觸的DL框架,在能夠讓APP不經過安裝就可以加載功能新模塊,別提有多興奮。再到之後的360的 DroidPlugin 等等,感謝開發者們無私的奉獻

原创 Android 插件化框架 Replugin 源碼解讀(三)插件加載

//com.qihoo360.loader2.PmBase final void callAttach() { //獲取ClassLoader mClassLoader = PmBase.c

原创 MacOS 10.15 下 Android Q 源碼 下載 編譯 詳解

      最近換了臺新的 MacBook Pro 之前沒有在MacOS 下下載過編譯過Android 源碼,這次準備試一試,同時記錄下遇到的問題。 考慮到很多人是爲了深入學習Android 的源碼纔來看這個文章都是新手上車,所以我準備從

原创 Android AIDL 牛刀小試

        在Android 應用開發過程中涉及到進程間通信的場景不多,但是隨着進程化開發的實現,單APP多進程的情況也越來越多。這就涉及到IPC進程間通信,而Binder 就是其中的一種,Android中很多情況 IPC 通信都是通

原创 Handler 工作原理和源碼解析

        在Android 開發中 有這樣一個最基本的場景,當我們通過網絡請求拿到服務端返給我們的數據後,我們需要把數據放到我們的頁面上,一般網絡請求的耗時操作我們都會在子線程中完成,如果這個時候你直接 去更新界面 就會報錯,告訴你

原创 Android 構建 修改apk 包名的gradle 插件 並上傳本地maven 倉庫

         Android 工程打包的時候apk 的名字會使用默認的名字,每次發佈還需要手工修改名字比較麻煩 之前 是在module 的build.gradle 中添加了 groovy 代碼,但是在進行其他項目的時候還需要將代碼添加

原创 recyclerview 列表的item 拖拽 置頂 全選 刪除 功能

        很多時候我們需要對列表進行一些操作,比如說股票的自選列表 我們希望能夠拖拽刪除置頂等操作。在recyclerveiw 之前 我們使用listview 完成這些操作 有點點麻煩,但是在recyclerview 出來之後Ite

原创 Android 反編譯工具 apktool ,smali2java, dex2jar , jd-gui ,jadx-gui 的安裝與使用

1.apktool  下載地址 https://ibotpeaches.github.io/Apktool/install/ 按照上面的步驟 第一步:就是要讓我們下載apktool.bat,把鼠標移至wrapper script上,然後右

原创 android 代碼 混淆

       代碼混淆對於每個上線的應用來說,是安全方面最基本的操作。也是每個Android 開發者必備知識點,但是對於初學者來說這方面的內容很容易被忽略。畢竟不添加混淆 APP 也照樣可以跑起來。當然這樣的應用是很不安全的,利用 反編譯

原创 Manifest merger failed with multiple errors, see logs

  Error:Execution failed for task ':test:processDebugManifest'.> Manifest merger failed with multiple errors, see logs

原创 Android 自定義DialogFragment 以及設置寬高

         DialogFragment  的特點是具有dialog 的 效果,同時又可以擁有Fragment 的生命週期,因此我們可以像管理Fragment 一樣管理DialogFragment 。在 Android  中我們已經