簡體   English   中英

如何將外部庫壓縮到我自己的Android庫構建中

[英]How to shrink external lib to my own Android Library build

我的圖書館引用了一些大罐子,例如番石榴,math3,但我只使用一種或兩種方法。 我可以將第三方代碼縮小到我的庫中嗎? 因為使用當前的aar輸出,我的庫大小似乎很小,但是對於使用我的lib的應用程序,它將下載所有第三部分jar並將整個代碼構建到它們的apk中,這會導致很大的體積。

“ aar”似乎僅記錄它將使用的庫,而不會將使用的代碼編譯到其中。 是否有支持縮小代碼的庫輸出類型?

我看到使用proguard或minifyEnalbed的建議。 他們沒有為我想要的工作。 是否有人熟悉編譯器或aar / jar? 是否可以將所有代碼打包在一個文件中,而不是在apk編譯時下載jar?

在build.gradle中,將minifyEnabled設置minifyEnabled true以啟用proguard。 默認情況下,它將刪除所有未使用的方法。 您可能需要在proguard-rules.pro文件中設置適當的規則。 通常,圖書館會記錄這些內容。

這是示例發行版本類型。

release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }

您也可以為調試版本設置它,但是,我建議不要在調試中啟用proguard,因為它會使構建速度變慢,並且調試應用程序會很痛苦。

由於要減少庫的文件大小以減少依賴性,因此僅使用兩種方法。 我建議一種簡單實用的方法:

只需復制這些方法。 (如果允許,請先檢查許可證)

您可以辯稱這不是最佳且難於維護的方法,但是對於兩種方法而言,這是可以接受的。

關於庫的事情是用戶可能還希望擁有依賴項。 因此很難從打包的aar文件中刪除依賴項。 如果您將一半的庫打包到lib中,並且用戶可能需要該庫的最新版本,則可能導致不一致。

注意:

實際上,您不需要關心最終應用程序的大小。 因為Proguard最終可以縮減此最終應用程序。

有時將單個方法復制到我的代碼中的原因是減少了打包調試應用程序所花費的時間。 因為如果您有很多依賴關系,那么等待時間會變得非常長。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM