2015-12-04 3 views
0

В моей библиотеке есть несколько больших баннеров размером, например. guava, math3, но я использую только один или два метода из них. Могу ли я сжать коды третьей части в свою библиотеку? Поскольку с текущим выходом aar размер моей библиотеки кажется небольшим, но для приложения, используемого моей библиотекой, он загрузит все банки третьей части и построит весь код в их apk, что приводит к большому размеру.Как сжать внешнюю библиотеку на мою собственную библиотеку Android.

«aar» кажется только записями, которые он будет использовать, но не компилирует использованный код в него. Есть ли тип вывода библиотеки, который поддерживает сжатие кода?

Я вижу предложение использовать proguard или minifyEnalbed. Они не работают за то, что я хотел. Есть ли кто-нибудь знакомый с компилятором или aar/jar? возможно ли упаковать весь код в один файл, а не загружать банки при компиляции apk?

+0

Вы должны посмотреть, что может сделать Proguard для вас – k3v1n4ud3

ответ

0

В вашем build.gradle установлен minifyEnabled true, чтобы включить proguard. По умолчанию он удалит все неиспользуемые методы. Возможно, вам потребуется установить правильные правила в файле proguard-rules.pro. Обычно библиотека будет документироваться.

Вот пример типа выпуска.

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

Вы также можете установить его для отладки сборки, однако, я предлагаю не включать ProGuard в отладке, как это сделает ваш строить медленно и отладки приложения будет болезненным.

+0

На самом деле это было в build.gradle, но оно не работает для вывода aar. Пожалуйста, проверьте мое последнее предложение. –

0

Как вы хотите уменьшить размер файла вашей библиотеки, чтобы уменьшить зависимости, и вы используете только два метода. Я рекомендую простой и прагматичный подход:

Просто скопируйте эти Методы. (Возможно, проверьте лицензию раньше, если вам разрешено)

Вы можете утверждать, что это не оптимально и сложно поддерживать, но для двух методов это приемлемо.

Вещь в библиотеке заключается в том, что пользователь может также иметь зависимости. Поэтому трудно удалить зависимости из упакованного aar-файла. Это может привести к несогласованности, если у вас есть половина библиотеки, упакованной вам lib, и пользователю может понадобиться более новая версия той же библиотеки.

Примечание:

На самом деле вам не нужно заботиться о размере отключения конечного применения. Поскольку Proguard может сжать это окончательное приложение в конце.

Причина, по которой иногда копируются отдельные методы в мой код, это сокращение времени, затрачиваемого на упаковку приложения-отладки. Потому что время ожидания может стать довольно высоким, если у вас много зависимостей.

Смежные вопросы