# qihoo360/replugin

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/qihoo360-replugin).**

7,346 stars · 1,557 forks · Java · apache-2.0

## Links

- GitHub: https://github.com/Qihoo360/RePlugin
- awesome-repositories: https://awesome-repositories.com/repository/qihoo360-replugin.md

## Description

RePlugin is an Android plugin framework and component orchestrator designed to load external activities, services, and receivers into an application without updating the main binary. It functions as a dynamic feature delivery system that decouples application modules into independent plugins.

The framework provides a communication bridge for bidirectional data exchange between the host application and external plugins, as well as inter-plugin synchronization. It manages the entire plugin lifecycle, including installation, version management, and integrity verification to ensure the safety of modules before execution.

The system covers high-level capabilities for resource isolation, dynamic component loading, and shared library dependency management. It maintains compatibility with native Android features such as multi-process support, data binding, and user-defined themes.

Build-time utilities are provided to automate source code modifications, generate host configurations, and prepare application manifests with placeholder entries.

## Tags

### Mobile Development

- [Android Component Orchestrators](https://awesome-repositories.com/f/mobile-development/android-component-orchestrators.md) — Acts as an orchestrator managing the lifecycle and resource isolation of third-party Android components.
- [Android App Modularization](https://awesome-repositories.com/f/mobile-development/android-app-modularization.md) — Decouples large application features into independent plugins to reduce main binary size and improve development agility.
- [Android Plugin Frameworks](https://awesome-repositories.com/f/mobile-development/android-plugin-frameworks.md) — Provides a framework for loading external activities, services, and receivers into an Android application dynamically.
- [Android Resource Isolation](https://awesome-repositories.com/f/mobile-development/android-resource-isolation.md) — Manages independent resources and contexts within plugins to ensure compatibility across different operating system versions.
- [Android Runtime Execution](https://awesome-repositories.com/f/mobile-development/android-runtime-execution.md) — Executes activities, services, providers, and receivers within a plugin environment while maintaining native task and affinity behavior. ([source](https://github.com/Qihoo360/RePlugin#readme))
- [Cross-Module Communication Bridges](https://awesome-repositories.com/f/mobile-development/cross-module-communication-bridges.md) — Shadow establishes a communication channel to exchange data and trigger specific actions between a plugin and the main application. ([source](https://github.com/Qihoo360/RePlugin/tree/dev/replugin-plugin-library))
- [Native Android System Compatibility](https://awesome-repositories.com/f/mobile-development/native-android-system-compatibility.md) — Maintains compatibility with standard Android features including multi-process support and user-defined themes. ([source](https://github.com/Qihoo360/RePlugin/blob/dev/README.md))

### Software Engineering & Architecture

- [Android Architectures](https://awesome-repositories.com/f/software-engineering-architecture/feature-based-project-structures/android-architectures.md) — Provides a structural pattern and modularization strategy for adding new features to Android apps via external modules.
- [Dynamic Component Lifecycles](https://awesome-repositories.com/f/software-engineering-architecture/component-lifecycle-management/application-component-lifecycles/dynamic-component-lifecycles.md) — Simulates native Android system component lifecycles to manage the installation and execution of plugin activities and services.
- [Dynamic Feature Delivery Systems](https://awesome-repositories.com/f/software-engineering-architecture/dynamic-feature-delivery-systems.md) — Decouples application modules into independent plugins that can be installed and updated without updating the main binary.
- [Dynamic Component Invocation](https://awesome-repositories.com/f/software-engineering-architecture/integration-extensibility/extensibility/plugin-architectures/application-plugins/dynamic-component-invocation.md) — Launches activities, services, broadcast receivers, and content providers across the main application and multiple plugins. ([source](https://github.com/Qihoo360/RePlugin/wiki/%E8%AF%A6%E7%BB%86%E6%95%99%E7%A8%8B))
- [Plugin Communication Bridges](https://awesome-repositories.com/f/software-engineering-architecture/plugin-communication-bridges.md) — Implements a communication bridge using binders and broadcasts for data exchange between the host and plugins.
- [Decoupled Architectures](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/modular-decoupled-design/decoupled-architectures.md) — Decouples feature modules into separate plugins that load into a host application independently of the main binary. ([source](https://github.com/Qihoo360/RePlugin/blob/dev/rp-config.gradle))
- [Cross-Process Communication Systems](https://awesome-repositories.com/f/software-engineering-architecture/cross-process-communication-systems.md) — Facilitates data and command exchange between the host application and various plugins using binders and system broadcasts.
- [Manifest Placeholder Injection](https://awesome-repositories.com/f/software-engineering-architecture/declarative-manifest-systems/manifest-transformations/manifest-placeholder-injection.md) — Uses reserved manifest entries to register dynamic components at runtime without modifying the original application binary.
- [Plugin Manifest Generation](https://awesome-repositories.com/f/software-engineering-architecture/declarative-manifest-systems/manifest-transformations/plugin-manifest-generation.md) — Generates manifest files with reserved placeholder entries to ensure sufficient space for loading dynamic plugins. ([source](https://github.com/Qihoo360/RePlugin/tree/dev/replugin-host-gradle))
- [Plugin Verification](https://awesome-repositories.com/f/software-engineering-architecture/extensible-plugin-architectures/plugin-verification.md) — Performs security and safety checks during installation to ensure the integrity of a plugin before execution. ([source](https://github.com/Qihoo360/RePlugin#readme))
- [Inter-Process Communication](https://awesome-repositories.com/f/software-engineering-architecture/inter-process-communication.md) — Implements synchronous and asynchronous data exchange between the host application and plugins using Android's Binder mechanism.
- [Shared Instance Mapping](https://awesome-repositories.com/f/software-engineering-architecture/library-compatibility-managers/library-dependency-managers/shared-instance-mapping.md) — Implements shared library instance mapping to minimize memory overhead across the host and its plugins. ([source](https://github.com/Qihoo360/RePlugin/tree/dev/replugin-sample-extra))

### Development Tools & Productivity

- [Modular Feature Extensions](https://awesome-repositories.com/f/development-tools-productivity/extensible-application-frameworks/modular-feature-extensions.md) — Integrates external or built-in components into a host application without requiring a full application update. ([source](https://github.com/Qihoo360/RePlugin#readme))
- [Inter-Plugin Communication](https://awesome-repositories.com/f/development-tools-productivity/plugin-architectures/inter-plugin-communication.md) — Enables synchronous and asynchronous data exchange between different plugin modules to coordinate actions. ([source](https://github.com/Qihoo360/RePlugin#readme))
- [Plugin Resource Context Isolation](https://awesome-repositories.com/f/development-tools-productivity/plugin-systems/process-isolated-plugins/plugin-resource-context-isolation.md) — Manages independent resources and context passing to ensure plugin compatibility across different operating system versions. ([source](https://github.com/Qihoo360/RePlugin/blob/dev))
- [Build-Time Source Transformations](https://awesome-repositories.com/f/development-tools-productivity/source-build-tools/build-time-source-transformations.md) — Provides automated source code modification during compilation to reroute component calls through the plugin framework.

### Operating Systems & Systems Programming

- [Dynamic Android Component Loading](https://awesome-repositories.com/f/operating-systems-systems-programming/dynamic-library-loading/dynamic-android-component-loading.md) — Executes activities, services, and receivers from separate binaries while maintaining native Android system behavior and task affinity.
- [Reflection-Based Interface Proxies](https://awesome-repositories.com/f/operating-systems-systems-programming/host-function-interfacing/reflection-based-interface-proxies.md) — Allows plugins to invoke specific functions and interfaces within the main application using reflection. ([source](https://github.com/Qihoo360/RePlugin/tree/dev/replugin-plugin-library))

### Programming Languages & Runtimes

- [Isolated Loader Instances](https://awesome-repositories.com/f/programming-languages-runtimes/language-ecosystems-tooling/module-management/module-loaders/isolated-loader-instances.md) — Manages independent class-loader instances to provide resource isolation and prevent dependency version conflicts between plugins.

### DevOps & Infrastructure

- [Plugin Compilation Automation](https://awesome-repositories.com/f/devops-infrastructure/cicd-pipeline-automation/core-build-engines/build-tooling/build-pipeline-extensions/build-plugins/plugin-compilation-automation.md) — Automates source code modification and call redirection during the build process to ensure plugin-host compatibility. ([source](https://github.com/Qihoo360/RePlugin/tree/dev/replugin-plugin-gradle))
- [Application Behavior Configurations](https://awesome-repositories.com/f/devops-infrastructure/configuration-management/application-settings-management/application-behavior-configurations.md) — Defines specific properties and behaviors that determine how the application initializes and manages external plugin components. ([source](https://github.com/Qihoo360/RePlugin/tree/dev/replugin-host-gradle))
- [Plugin Managers](https://awesome-repositories.com/f/devops-infrastructure/release-automation/plugin-extensibility/plugin-managers.md) — Handles the installation, upgrading, uninstallation, and version management of built-in and external plugin modules. ([source](https://github.com/Qihoo360/RePlugin#readme))

### Web Development

- [Reflection-Based Proxies](https://awesome-repositories.com/f/web-development/dynamic-proxies/runtime-proxy-interceptors/reflection-based-proxies.md) — Employs Java reflection to create proxies that allow plugin modules to invoke interfaces within the host application.
