1. 程式人生 > >外掛開發遇到的坑------final 型變數,編譯過程被優化

外掛開發遇到的坑------final 型變數,編譯過程被優化

android 外掛開發遇到的坑

今天遇到一個坑,pdf 外掛,呼叫了主工程的一個靜態final 字串,但是主工程裡面已經沒有這個字串了,卻沒有崩潰。

後來同事說,因為字串可能已經直接被寫死了。你應該看下編譯後的程式碼。我一同事,反編譯apk 之後,發現,果然,因為provide 的jar 裡面是有這個final 的字串的,java 編譯的時候,直接用死的值替換掉了。這樣,根本就沒有去呼叫主工程的那個變數。

總結:
1.provide 的 jar,不一定完全沒有作用。final的變數,編譯器直接寫死了。
2.看java 程式碼解決不了問題,那就看編譯之後的程式碼,你就知道為什麼了。
3.機器永遠不會做錯,只能是你理解錯了。

自己對java 編譯還是不夠理解。自己對java 還有很多其他的東西,根本不懂。比如編譯過程。等。