十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
什么是AOP

AOP是Aspect Oriented Programming的縮寫,即『面向切面編程』。它和我們平時(shí)接觸到的OOP都是編程的不同思想,OOP,即『面向?qū)ο缶幊獭?,它提倡的是將功能模塊化,對(duì)象化,而AOP的思想,則不太一樣,它提倡的是針對(duì)同一類問(wèn)題的統(tǒng)一處理,當(dāng)然,我們?cè)趯?shí)際編程過(guò)程中,不可能單純的安裝AOP或者OOP的思想來(lái)編程,很多時(shí)候,可能會(huì)混合多種編程思想,大家也不必要糾結(jié)該使用哪種思想,取百家之長(zhǎng),才是正道。
那么AOP這種編程思想有什么用呢,一般來(lái)說(shuō),主要用于不想侵入原有代碼的場(chǎng)景中,例如SDK需要無(wú)侵入的在宿主中插入一些代碼,做日志埋點(diǎn)、性能監(jiān)控、動(dòng)態(tài)權(quán)限控制、甚至是代碼調(diào)試等等。
AspectJ
AspectJ實(shí)際上是對(duì)AOP編程思想的一個(gè)實(shí)踐,當(dāng)然,除了AspectJ以外,還有很多其它的AOP實(shí)現(xiàn),例如ASMDex,但目前最好、最方便的,依然是AspectJ。
在Android項(xiàng)目中使用AspectJ
在android中配置aspectj是特別麻煩的,嘗試在android studio中直接配置aspectj,折騰了半天沒(méi)有成功,就放棄了,還好github上有個(gè)開(kāi)源的sdkhttps://github.com/HujiangTechnology/gradle_plugin_android_aspectjx,可以直接拿來(lái)用,很方便。
接入說(shuō)明
在項(xiàng)目的根目錄的build.gradle文件中添加依賴,修改后文件如下
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.0'
classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:1.0.8'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}