4
剛纔我想到,我們使用的ProGuard代碼優化之一,即合併類層次結構,可能根本不是一個好選擇。在Android/Dalvik上推薦使用ProGuard合併類嗎?
我的預感是合併類以減少ClassLoader的調用是有益的,至少在JVM上這是一種特別慢的操作,在我們的代碼中,我們選擇了許多較小的(通常是內部)類而不是大型的God對象類,所以ClassLoader會運行得相對頻繁。但是,考慮到所有類將被合併爲一個類的極端(可能不太可能)的情況,那麼即使加載器只會被調用一次,我們最終會將大量代碼加載到內存中,這很可能會從來沒有使用過(80/20規則適用於此,以及我猜)。
這讓我疑惑:
1)如何快速在Dalvik的真正類加載?這是一個值得減少使用類合併的操作嗎?
2)這就是說,你會推薦在Android上使用類合併嗎?
@直接合並:只是它使調試更加困難,因爲堆棧跟蹤將指向超類中的行,當這些方法實際上定義在子類上時。任何想法如何解決這個困境?我們想要的是能夠調試錯誤報告和小應用程序大小的良好平衡。 – Matthias
另外,我仍然想知道在Dalvik上加載類是否應該儘量避免,或者它是一個相對較快的操作? – Matthias