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? # Лицензия
VirtualAPK лицензирован в соответствии с Apache License 2.0. Смотрите файл LICENSE.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )