VirtualAPK — мощный, но лёгкий плагин-фреймворк для Android
Поддерживается Android 9.0! Пожалуйста, используйте последний релиз.
VirtualAPK представляет собой мощный и в то же время лёгкий плагин-фреймворк для Android, который позволяет динамически загружать и запускать файл APK (мы называем его «LoadedPlugin») без проблем, как установленное приложение. Разработчики могут использовать любой класс, ресурсы, активность, сервис, ресивер и провайдер в LoadedPlugin так, будто они зарегистрированы в файле манифеста приложения.
Поддерживаемые функции
Функция | Описание |
---|---|
Поддерживаемые компоненты | Активность, сервис, ресивер и провайдер |
Ручная регистрация компонентов в AndroidManifest.xml | Не требуется |
Доступ к классам и ресурсам хост-приложения | Поддерживается |
PendingIntent | Поддерживается |
Поддерживаемые функции Android | Почти все функции |
Совместимость | Практически со всеми устройствами |
Система сборки | Gradle плагин |
Поддерживаемые версии Android | API Level 15+ |
Начало работы
Добавьте зависимость в build.gradle в корне хост-проекта следующим образом:
dependencies {
classpath 'com.didi.virtualapk:gradle:0.9.8.6'
}
Примените плагин в модуле приложения build.gradle.
apply plugin: 'com.didi.virtualapk.host'
Скомпилируйте VirtualAPK в модуле приложения build.gradle.
compile 'com.didi.virtualapk:core:0.9.8'
Инициализируйте PluginManager в YourApplication::attachBaseContext().
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
PluginManager.getInstance(base).init();
}
Измените правила Proguard, чтобы сохранить файлы, связанные с VirtualAPK.
-keep class com.didi.virtualapk.internal.VAInstrumentation { *; }
-keep class com.didi.virtualapk.internal.PluginContentResolver { *; }
-dontwarn com.didi.virtualapk.**
-dontwarn android.**
-keep class android.** { *; }
Наконец, загрузите APK и получайте удовольствие!
String pluginPath = Environment.getExternalStorageDirectory().getAbsolutePath().concat("/Test.apk");
File plugin = new File(pluginPath);
PluginManager.getInstance(base).loadPlugin(plugin);
// Учитывая, что «com.didi.virtualapk.demo» — это имя пакета APK плагина,
// и существует активность под названием MainActivity.
Intent intent = new Intent();
intent.setClassName("com.didi.virtualapk.demo", "com.didi.virtualapk.demo.MainActivity");
startActivity(intent);
Добавьте зависимость в build.gradle в корень проекта плагина следующим образом:
dependencies {
classpath 'com.didi.virtualapk:gradle:0.9.8.6'
}
Примените плагин в модуле приложения build.gradle.
apply plugin: 'com.didi.virtualapk.plugin'
Настройте VirtualAPK. Не забудьте поместить следующие строки в конец build.gradle.
virtualApk {
packageId = 0x6f // Идентификатор пакета ресурсов.
targetHost='source/host/app' // Путь модуля приложения в хост-проекте.
applyHostMapping = true // [Необязательно] Значение по умолчанию — true.
}
Руководство разработчика
Известные проблемы
Вклад Добро пожаловать, чтобы внести свой вклад, создавая проблемы или отправляя запросы на вытягивание. См. Руководство по внесению вклада для получения рекомендаций.
Кто использует VirtualAPK?
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )