В документации Android относительно подписывания кода мы можем читать: "Путем подписания нескольких приложений с тем же сертификатом и использования основанных на подписи проверок полномочий, приложения могут совместно использовать код и данные безопасным способом".
Как точно такой код, совместно использующий, может быть сделан? Действительно ли возможно выпустить главное приложение, и несколько сменных плагинов затем обнаруживают их во времени выполнения? То, что делает исходный код, похоже и что такое преимущества перед "стандартными" вызовами намерений из/в различные пакеты APK?
Используйте Context.createPackageContext (), чтобы создать экземпляр пакета для другого интересующего вас .apk. Если он подписан тем же сертификатом, что и ваш, И вы оба используют один и тот же общий идентификатор пользователя, тогда вы можете использовать флаг для загрузки его кода в свой процесс, что позволит вам получить ClassLoader из контекста и создать экземпляры любых классов, которые вы хотите.
В противном случае, если они не подписаны одинаково и явно используют один и тот же совместно используемый идентификатор, вы можете загружать только его ресурсы.
Обратите внимание, что вы не можете изменить общий идентификатор пользователя для приложения (на что-то другое или переключиться между наличием и отсутствием общего идентификатора пользователя), когда это приложение появится на рынке.