問題的發(fā)現(xiàn)
今天查看AlertDialog源碼的時候江咳,看到AlertController返咱,發(fā)現(xiàn)關(guān)于這部分的代碼全都報紅钥庇,原來AlertController類在com.android.internal.app這個包下,看這個包名internal(內(nèi)部的)咖摹,也就是說這部分代碼是Google公司由于安全和穩(wěn)定等因素考慮评姨,是不對外開放的。
問題的解決
這個問題萤晴,其實一直都有吐句,但是以前沒仔細(xì)查看這些隱藏的源碼,一帶而過罷了店读!那有問題嗦枢,總得解決啊,這個該怎么解決呢两入?其實解決辦法還是有的:
第一種解決辦法:
http://androidxref.com/ 這個網(wǎng)址下面有Android各個版本的源碼(包括C層的)净宵,都是在線的,很方便查看:
隨意點擊一個版本就去裹纳,我們輸入我們想要找的類:
我們找到這個類择葡,點擊進去就能查看這個類的源碼了,還是比較方便的剃氧。
第二種解決辦法:
GitHub已有人去除Android.jar中@hide注解敏储,這里的源碼算是比較全的(注意只能是比較全,對于C層的代碼還是沒有的朋鞍,因為只是jar包)
地址: https://github.com/anggrayudi/android-hidden-api
- 關(guān)閉Android Studio
- 下載對應(yīng)API版本的Android.jar
- 替換SDK/platforms/android-版本/Android.jar
- 重新打開Android Stuido就可以查看
這時候我們就可以在Android Studio中隨意查看這些隱藏的Api了已添。
總結(jié)
兩種方法其實都是可以的,兩種方法都有自己的優(yōu)缺點滥酥。第一種方法簡單更舞,包含C層源碼,但是查看代碼坎吻,跳轉(zhuǎn)不是很方便缆蝉;第二種方法比較適合查看Java源代碼,跳轉(zhuǎn)方便瘦真,但是沒有C層源碼刊头。一般我用的時候,都是兩者配合使用诸尽,效率會更好一點原杂!
喜歡本篇博客的簡友們,就請來一波點贊您机,您的每一次關(guān)注穿肄,將成為我前進的動力年局,謝謝!