關(guān)于LeakCanary 的實(shí)現(xiàn)原理,以及諸多好處此處不做贅述迷帜。下面僅講述自己是如何搭建Django+Python+LeakCanary內(nèi)存泄漏統(tǒng)計(jì)平臺(tái)的。
1.在AndroidStudio中配置LeakCanary
(1)在build.gradle文件中引入對(duì)LeakCanary的依賴色洞,其中設(shè)置為正式環(huán)境不使用LeakCanary
debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5'
releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'
testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'
(2)在項(xiàng)目的Application中引用LeakCanary
LeakCanary.install(this)
2.重寫內(nèi)存泄漏處理類
創(chuàng)建一個(gè)LeakUploadService 繼承DisplayLeakService戏锹,并重寫發(fā)生內(nèi)存泄漏后的處理方法:
3.重載LeakCanary類中的install方法
由于LeakCanary類中的install方法傳遞的為DisplayLeakService類,所以為了保證使用自己的處理類锋玲,則需要重載LeakCanary的install方法景用。并修改在Application中對(duì)LeakCanary的引用。此處在項(xiàng)目中重新定義了一個(gè)名為L(zhǎng)eakCanaryWithoutDisplay 的類來實(shí)現(xiàn)該操作惭蹂。
4.LeakUploadService 中上傳內(nèi)存泄漏數(shù)據(jù)所應(yīng)用的接口伞插,需要自己編寫。此處不提供源代碼盾碗。
5.在Python 中引入 JIRA 庫(kù)
(1)通過 pip 安裝JIRA媚污,pip install jira
(2)在python 2.7中通過 from jira import JIRA 時(shí)報(bào)錯(cuò)
解決方法:修改/Library/Python/2.7/site-packages/packaging/requirements.py 中的MARKER_EXPR = originalTextFor(MARKER_EXPR())("marker”) 為 MARKER_EXPR = originalTextFor(MARKER_EXPR)("marker”)
(3)一個(gè)測(cè)試demo
6.實(shí)現(xiàn)最終效果如下