Skip to main content
User Guide

Providers & Search

NeoQN functions as an extension-based aggregator. It does not host any novel content directly; instead, it relies on community-developed scraper extensions (called providers) to browse and index light novels.

Importing Providers

To start browsing novels, you need to import provider extensions. These extensions are typically distributed as APK files.

  1. Download Extensions: Join the official NeoQN Telegram channel or Discord server to get the latest provider APK files.
  2. Import via App:

- Navigate to the Providers tab. - Tap the + (plus) Floating Action Button (FAB). - Use the system file picker to select the downloaded .apk or .dex file.

  1. Activation: NeoQN will automatically install, verify, and load the provider.
Tip

Always use verified community channels to download provider updates to ensure compatibility with the host application.


Extension Sandbox (Backend Specifications)

Under the hood, NeoQN runs a secure, isolated class-loading pipeline for its provider extensions:

  • Always-Trusted Sideloading: While standard Android packages require matching developer certificates, NeoQN's PluginManager.verifyApkSignature is customized to always return true. This bypasses strict signature checks, allowing you to load custom community-built scraper extensions.
  • Dex Class Loading: Once imported, provider files are moved to the internal sandboxed application directory (context.filesDir/plugins). NeoQN loads the scraper classes dynamically at runtime using DexClassLoader.
  • Resource Sandboxing: Each plugin gets its own PluginContextWrapper instance. This creates a sandboxed Android context that links specifically to the extension's assets, allowing it to load custom site icons or assets without polluting the host application's themes or resources.
  • Automatic Cleanup: When you install an updated version of a provider, NeoQN runs a legacy cleanup process to scan class names, identify overlaps, and delete older APK/JSON files from disk to prevent class conflicts and memory leaks.

The global search bar on the Search screen allows you to search for titles across all active providers at the same time , Also it is integrated with famous WebToEpub extension , hence you can put the direct novel link (supported by it) to download that novel.

How Search Works Under the Hood

To maintain responsive search speeds when query tasks are distributed across dozens of websites:

  1. Parallel Queries: When you submit a search query, NeoQN leverages Kotlin Coroutines (async blocks) to query every active provider repository simultaneously on Dispatchers.IO background threads.
  2. WebToEpub Direct Hook: If your query is a direct novel URL, NeoQN bypasses the search engine entirely and routes the URL directly to the WebToEpub parser to resolve details instantly.
  3. Thread-Safe Merging: Results are added to a thread-safe synchronized collection to prevent concurrent write crashes. The final results are merged using a round-robin algorithm (interleaving search cards from each provider) so a single provider does not block or dominate the results page.