1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/didiopensource-VirtualAPK

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

VirtualAPK — мощный, но лёгкий плагин-фреймворк для Android

Поддерживается Android 9.0! Пожалуйста, используйте последний релиз.

VirtualAPK

license Release Version PRs Welcome

VirtualAPK представляет собой мощный и в то же время лёгкий плагин-фреймворк для Android, который позволяет динамически загружать и запускать файл APK (мы называем его «LoadedPlugin») без проблем, как установленное приложение. Разработчики могут использовать любой класс, ресурсы, активность, сервис, ресивер и провайдер в LoadedPlugin так, будто они зарегистрированы в файле манифеста приложения.

VirtualAPK

Поддерживаемые функции

Функция Описание
Поддерживаемые компоненты Активность, сервис, ресивер и провайдер
Ручная регистрация компонентов в 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 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/didiopensource-VirtualAPK.git
git@api.gitlife.ru:oschina-mirror/didiopensource-VirtualAPK.git
oschina-mirror
didiopensource-VirtualAPK
didiopensource-VirtualAPK
master