2017-02-15 91 views
0

是否有方法轉換/修改由自定義註釋註釋的類和方法? #字節碼操作(但對於dex)通過註釋轉換類/方法

這樣做的最佳方式是什麼?

代理不是我正在尋找的合適方式

回答

0

Dex文件庫的操作是可能的,但非常複雜,幾乎沒有好的工具。

相反,您應該在構建期間對代碼進行衡量,當它仍然表示爲類文件時。有各種各樣的工具。我寫了一個名爲Byte Buddy的工具,它允許您在編譯期間通過使用Maven或Gradle插件運行代碼。

爲了更改類,您必須實現庫的接口Plugin,該接口允許您指定要更改的類以及要如何更改它。 Byte Buddy將所有類內聯,以便您不需要創建運行時代理。

對於搖籃,你必須創建一個配置引用您的插件代碼:

configuration { 
    myPlugin 
} 
dependencies { 
    myPlugin "my:plugin:1.0" 
} 
byteBuddy { 
    transformation { 
    plugin "pkg.MyPluginImpl" 
    classpath configuration.myPlugin 
    } 
} 

我以爲是你使用讓您的Android開發。

+0

如何讓這個庫模塊的工作呢?僅在主應用程序項目中的類纔得到轉換。 – Reymanx

+0

不幸的是,這是不可能的。庫不是您部署的工件的一部分。你需要重建它們。或者,您必須在運行時使用Java代理(這在Android上是不可能的)。 –