<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] # 總體方案 ## 目標 獨立發布(一周一個版本) ## 插件化方案選型 目前的插件化框架,大部分都是使用 hook 系統的方式來做的。使用代理的基本上沒有成體系的框架,Shadow 框架的開源,在系統 api 控制越來越嚴格的趨勢下,算是一個新的方向。 Shadow 最大的兩個亮點是: 1\. 零反射 2\. 框架自身動態化 3\. 開發無感知 4\. 插件與宿主完全隔離,通過白名單橋街 ## 獨立編譯 ### 背景: 1. 單向依賴: 2. 插件對宿主依賴嚴重,直接依賴幾百個,依賴的類接著依賴 ### 方案1:AS的Analyze工具 1. 只能分析一層依賴 2. 純手工 ### 方案2: 編譯前自建依賴分析插件 s1:分析插件文件對宿主的import//todo import如何轉文件 s2: 工具分析插件加載宿主的依賴類,獲取AST語法樹(java javaparser,kotlin分析用kastree) s3: 對依賴類進行裁剪 刪除 私有變量、私有方法、方法內部實現 保留對外飲用 s4:遞歸的對依賴類的依賴類繼續處理(處理過了不在處理) s5:將裁剪過的類打包成jar,插件依賴改jar包編譯。 ### 成果: 全量1m,增量30s ## 插件過程中遇到的問題 ### 插件對宿主賴需要加混淆白名單 現狀:開發人員容易漏加白名單 方案:transform自動完成 ### 重復打包導致方法內聯問題 現狀:插件化第一次灰度,收到上報錯誤java.lang.IncompatibleClassChangeError,只在Android N上 分析: debug包無問題,線上包有問題,區別在于去掉重復打包 導出dex,無異常 懷疑dex2oat階段,內聯出現異常 root過的手機,將優化后的oat產物pull到電腦,然后使用oatdump反編譯 方案:編譯時,加上檢查 ### ClassNotDef/NotSuchMethod 現狀:宿主的方法改變了,插件無法感知 方案 :空test方法校驗: 宿主的被調的方法生產test\\\_\\\*方法 插件動態生產一個 pluginCheck類,里面包含了對宿主方法的test方法,發送異常就推出 結果 ### 成果: 外網crash率0.01% # 參考資料 [Shadow源碼解析](https://github.com/ChenSiLiang/android-toy/blob/master/Shadow%E6%BA%90%E7%A0%81%E8%A7%A3%E6%9E%90%E7%AC%94%E8%AE%B0/Shadow%E6%BA%90%E7%A0%81%E8%A7%A3%E6%9E%90.md) [Android 插件化的今生前世大揭秘](https://mp.weixin.qq.com/s/EuCqudpPnBRidtmZBocNYg) [Java Parser應用介紹](https://cloud.tencent.com/developer/news/740798) [QFix探索之路——手Q熱補丁輕量級方案](https://mp.weixin.qq.com/s/ce22vVN5zyqY0vAkNt1DDw)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看