Менеджер зависимостей для Android
Меня вдохновляет
Graviton Browser — браузер JVM-приложений. В качестве адреса ему можно передать
groupid:artifactId
— гравитон скачает последнюю версию вместе со всем деревом зависимостей и запустит Main Class.
Подобное можно провернуть для андродиа, но немного в другой форме:
— на телефон устанавливается приложение-менеджер. Графического интерфейса у него нет;
— берётся любое приложение, из него выпиливаются библиотеки, вместо них нужно взять одну маленькую — коннектор к менеджеру зависимостей;
— в метадату манифеста вписываются зависимости, чтобы менеджер пакетов их увидел;
— на старте приложение связывается с менеджером пакетов и получает от него необходимые dex'ы.
Это решает сразу несколько проблем:
— раздутый размер APK. Все библиотеки теперь находятся снаружи, популярные библиотеки не дублируются в каждом приложении;
— фиксы библиотек можно доставлять без пересборки и перезаливки (как, впрочем, и баги);
— менеджер пакетов учитывает версию Android и может подхватывать нужные пакеты в зависимости от этого. Например, брать Гришкин liteX для SDK21+ или, наоборот, подключать бэкпорт CompletableFuture, Streams, java.time, если платформа старая.
Есть, конечно, и минусы:
— не все соблюдают semVer, можно по неосторожности доставить ломающие изменения;
— правила Маркета не позволяют подгружать код не из Маркета;
— возможны просадки времени старта.
Есть вам нравится эта #идея и вы решите поучаствовать в реализации, стучите в личку — помогу чем смогу.