Android 如何切換到 Transform API?

摘要: 如果你的 Android 構(gòu)建中涉及到字節(jié)碼插裝(bytecode instrumentation),或者應(yīng)用中提供了進(jìn)行插裝的插件,并希望它能支持 Instant Run,那么你必須切換到 Transform API。

目前,字節(jié)碼插裝雖然可以添加到構(gòu)造過程中,但還沒有對應(yīng)的 API。通用的方法是找到 dx 任務(wù),抓取其輸入,并替換成自己的輸出。隨后,任務(wù)依賴就不得不重新連接,以便將新的中間任務(wù)納入。

該方法存在一定的問題,原因如下:

-無法區(qū)分某些輸入(如子模塊與外部庫)

-主要 dex 類列表的計算也必須包含插裝輸出,因此增加了處理多個遺留dex的難度。

-將一個以上第三方插裝合并時會非常不穩(wěn)定,而且容易被破壞。

除此之外,該方法不支持 Instant Run。盡管原始構(gòu)造的APK的確能通過常規(guī)的構(gòu)建步驟,熱調(diào)換(hotswap)模式卻可運(yùn)行不同的任務(wù)。

在常規(guī)構(gòu)造中,Instant Run添加了以下步驟:

-用項目類插裝為代碼替換添加間接法。

-復(fù)制類,以便在隨后進(jìn)行比較并生成覆蓋類

然而,必須在任何第三方插裝之后,才能執(zhí)行此步驟,而以前的插裝機(jī)制(在最后dx之前添加)不可能出現(xiàn)這種情況。

在hotswap構(gòu)造時, Instant Run 會運(yùn)行 java 編譯程序,并將輸出與先前構(gòu)造的輸出進(jìn)行比較,以生成覆蓋類。隨后, Instant Run 會運(yùn)行不同的dx任務(wù),該任務(wù)僅對覆蓋類進(jìn)行遠(yuǎn)距離交換。這一流程和常規(guī)的構(gòu)造有很大差別,而且之前的連接插裝方法也完全沒有使用該流程。

為了解決這個問題,我們創(chuàng)建了 Transform API 。目的在于提供將第一方和第三方插裝連通并整合至構(gòu)造流程的 API 。該 API 不處理Gradle任務(wù),但處理需要插裝的其他東西,用插件進(jìn)行任務(wù)實體化和布線處理。

訪問http://tools.android.com/tech-docs/new-build-system/transform-api可了解更多關(guān)于transform API的信息

目前, Transform API 還在測試階段,我們希望能盡快進(jìn)入平穩(wěn)運(yùn)行階段,因此希望能得到你的建議。請加入我們的開發(fā)谷歌組,并提出建議:https://groups.google.com/forum/#!forum/adt-dev

OneAPM Mobile Insight 以真實用戶體驗為度量標(biāo)準(zhǔn)進(jìn)行 Crash 分析,監(jiān)控網(wǎng)絡(luò)請求及網(wǎng)絡(luò)錯誤,提升用戶留存。訪問 OneAPM 官方網(wǎng)站感受更多應(yīng)用性能優(yōu)化體驗,想閱讀更多技術(shù)文章,請訪問 OneAPM 官方技術(shù)博客

本文轉(zhuǎn)自 OneAPM 官方博客

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,319評論 25 708
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,822評論 18 399
  • 原文地址 Instant Run: How Does it Work?! Instant Run是Android ...
    sheepm閱讀 1,568評論 0 16
  • 我表白那日,約在學(xué)校少有人路過的一片草地,畢竟人少好說話。到時,景安已經(jīng)在那個地方,灰色衛(wèi)衣搭配小腳黑色運(yùn)動褲,運(yùn)...
    獨(dú)孤飲水閱讀 214評論 0 0
  • 有些特質(zhì)經(jīng)常被誤讀成缺點(diǎn),比如敏感。 覺得男朋友最近好像不關(guān)心自己,你直說,對方告訴你,是你敏感。跟朋友聊天,覺得...
    尚科教育閱讀 794評論 0 3

友情鏈接更多精彩內(nèi)容