android SDK開發(fā)之快速調(diào)試代碼

  1. SDK開發(fā),經(jīng)常需要在使用者(host)環(huán)境下調(diào)試,測試。我們通常的做法是,將SDK發(fā)布到本地,然后拿到host代碼,host依賴本地SDK版本,編譯host,然后安裝調(diào)試

  2. 這個做法的缺點:

    • 你需要去申請host代碼權(quán)限
    • host代碼構(gòu)建復(fù)雜,因為不熟悉,你并不一定能構(gòu)建成功
    • host代碼臃腫,構(gòu)建特別慢,很多時候,我們的時間浪費在host的構(gòu)建上
  3. 改進思路:

    • 能否直接將SDK的代碼更新到host apk里,而不去編譯整個app
  4. 新方法的要求:

    • android studio IDE
    • android gradle tool 插件版本:3.0.0 - 3.4.0
  5. 新方法的限制:

    • 只能更新SDK工程里java和native代碼,不包括再依賴的第三方庫,不支持資源
    • SDK工程里的java和引用到的庫,沒有被host混淆
  6. 新方法的優(yōu)點:

    • 可以將release apk變成debuggable apk
    • 支持?jǐn)帱c調(diào)試SDK的native代碼。(請在SDK Manager 中安裝LLDB)
  7. 新方法的使用:

    • 將下面代碼復(fù)制到SDK工程根目錄的setting.gradle,注意classpath 'com.android.tools.build:gradle:3.0.1' 必須與根目錄中的build.gradle相同,確保根目錄build.gradle中的repositories也加上了jcenter()
    buildscript {
        repositories {
            google()
            jcenter()
        }
        dependencies {
            classpath "com.ydq.android.gradle.build.tool:debughelper:1.0.1"
            classpath 'com.android.tools.build:gradle:3.0.1'
        }
        configurations.all {
            // check for updates every build
            resolutionStrategy.cacheDynamicVersionsFor 0, 'seconds'
            resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
        }
    }

    ext {
        hostApk = "${rootDir}/test.apk"
        //hostFlavor = "audio"
        //updateJavaClass = false 
        //modifyApkDebuggable = false 
        //hostLaunchActivity = "com.ydq.test.demo.MainActivity"
        //excludeSo = "libxx.so;libyy.so"
    }

    apply plugin: 'com.ydq.android.gradle.debug.helper'
  • 指定要調(diào)試的apk路徑給hostApk
  • 如果SDK使用了flavor,指定host所依賴的flavor名字
  • 如果只想更新native,設(shè)置updateJavaClass為false,默認(rèn)是true
  • 如果不想將apk變成可調(diào)試的,設(shè)置modifyApkDebuggable為false,默認(rèn)是true。有些release版APP會檢查這個標(biāo)志,當(dāng)發(fā)現(xiàn)變成可調(diào)試時,就會退出。
  • 如果apk中有多個可啟動activity,請指定默認(rèn)啟動的activity
  • 設(shè)置excludeSo,如果不想將一些so更新到host apk中,以分號劃分多個so
  • 當(dāng)配置好后,上面腳本會自動生成一個dummyHost的app項目到你的工程,選擇這個項目,然后運行/調(diào)試。
  • 當(dāng)host信息有所改變時,也就是ext里的信息有所改變,或是host apk更新了,請clean整個工程
  1. 如果在sync項目時出現(xiàn)了奇怪的錯誤,請關(guān)掉項目,手動將dummyHost和.idea目錄刪掉,重新打開項目

github:https://github.com/howardpang/androiddebughelper

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

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

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