Android自動生成程式碼的2種方式

-l囧l-發表於2017-09-20

利用 APT 技術在編譯期生成程式碼

簡介

APT(Annotation Processing Tool 的簡稱),可以在程式碼編譯期解析註解,並且生成新的 Java 檔案,減少手動的程式碼輸入。現在有很多主流庫都用上了 APT,比如 Dagger2, ButterKnife, EventBus3 等。其實AspectJ也是通過apt的方式來實現動態程式碼生成,但一般作用域後端,移動端整合過於複雜很少使用,感興趣的可以參考:linbinghe.com/2017/65db25…
參考:brucezz.itscoder.com/use-apt-in-…

通過自定義Gradle外掛修改編譯後的class檔案

簡介

考慮這樣一種應用場景,為每個編譯後的class檔案新增一行程式碼。比如:在每個Java類的建構函式中加一句System.out.println("xxxx");如果你每次建立一個類的時候都手動加這麼一句話,先不談容易出錯,我們說說工作量。或許你覺得,你願意手動加,那我再跟你提新需求,我現在不要這句程式碼了,我估計你會想要罵x,但是通過Gradle 的Transform api就可以輕鬆的實現。
參考:www.jianshu.com/p/417589a56…

總結

APT:作用的生命週轉期為x.java->x.class,具體的實現方式為通過Annotation 在編譯器動態生成相應的程式碼(Annotation的另一個作用是執行時註解:blog.csdn.net/github_3518…

Gradle外掛: 作用的生命週轉期為x.class->x.class,就是將已經生成的.class檔案通過api插入自己的邏輯,再將新生成的.class檔案匯出到原來的目錄,具體方式為通過project.android.registerTransform註冊相應的Transform例項,常用於自己的專案,比如專案中要在某些地方新增一些相同的業務邏輯同時又不想入侵專案時推薦使用。

相關文章