• Stars
    star
    1,676
  • Rank 27,870 (Top 0.6 %)
  • Language
    Java
  • License
    Other
  • Created over 5 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🔥🔥Qigsaw ['tʃɪɡsɔ] is a dynamic modularization library which is based on Android App Bundles(Do not need Google Play Service). It supports dynamic delivery for split APKs without reinstalling the base one.

Qigsaw

Qigsaw is a dynamic modularization library which is based on Android App Bundles. It supports dynamic delivery for split APK without reinstalling the base one.

README 中文版

qigsaw

Getting started

Import qigsaw-gradle-plugin as a dependency in your main build.gradle in the root of your project:

buildscript {
    dependencies {
        classpath 'com.iqiyi.android.qigsaw:gradle-plugin:1.4.1-hotfix01'
    }
}

Then "apply" the plugin and import dependencies by adding the following lines to your app/build.gradle.

dependencies {
    //qigsaw core lib
    implementation "com.iqiyi.android.qigsaw:splitcore:1.4.1-hotfix01"
}
...
...
apply plugin: 'com.iqiyi.qigsaw.application'

At Last, "apply" another plugin by adding the following lines to your dynamicfeature/build.gradle.

...
...
apply plugin: 'com.iqiyi.qigsaw.dynamicfeature'

Considering that every app has its own downloader, qigsaw just provides an interface Downloader and you are expected to implement it. Learn more from the sample SampleDownloader.

Qigsaw-gradle-plugin will upload split APKs which require dynamic delivery during compilation, so you have to implement SplitApkUploader to upload split APKs to your own CND server. Learn more from the sample SampleSplitApkUploader.

How to install qigsaw? Learn more from the sample QigsawApplication.

For proguard, we have already made the proguard config automatically via qigsaw-gradle-plugin.

For multiDex, learn more from the sample multidexkeep.pro.

For more qigsaw configurations, learn more from the sample app/build.gradle.

How to install split APKs? Qigsaw provides the same APIs to Play Core Library, so you may read google developer docs to install.

How to build base and split APKs? During development, you may use qigsawAssembleDebug task or just click Run app in Android Studio to build. When releasing your app, use qigsawAssembleRelease task to build.

How to update splits? Please see our Split Update Guide.

Known Issues

There are some issues which Qigsaw can't update or support at present.

  1. Can't update split AndroidManifest.xml dynamically, for example adding Android Component.
  2. Can't update base APK dynamically.
  3. Doesn't support Android OS version lower than 4.0.
  4. Doesn't support incremental update for split APK.
  5. Learn more from the Known issues about Android App Bundle.

Extensive Functions

Qigsaw supports some functions which Android App Bundle doesn't yet.

  1. Supports to declare Application in split AndroidManifest. Qigsaw will invoke Applicaton#attachBaseContext and Applicaton#onCreate methods for split application.
  2. Supports to declare ContentProvider in split AndroidManifest.

Support

  1. Learn more from qigsaw-sample-android.
  2. Study the source code.
  3. Check wiki or FAQ for help.
  4. Contact us [email protected].
  5. Join QQ group chat.

qigsaw_qq_group_chat

Contributing

For more information about contributing, issues or pull requests, please check our Qigsaw Contributing Guide.

License

Qigsaw is MIT licensed. Read the LICENSE file for detail.

More Repositories

1

xHook

🔥 A PLT hook library for Android native ELF.
C
4,063
star
2

xCrash

🔥 xCrash provides the Android app with the ability to capture java crash, native crash and ANR. No root permission or any system permissions are required.
C
3,703
star
3

dpvs

DPVS is a high performance Layer-4 load balancer based on DPDK.
C
3,010
star
4

Andromeda

Andromeda simplifies local/remote communication for Android modularization
Java
2,275
star
5

FASPell

2019-SOTA简繁中文拼写检查工具:FASPell Chinese Spell Checker (Chinese Spell Check / 中文拼写检错 / 中文拼写纠错 / 中文拼写检查)
Python
1,194
star
6

Neptune

A flexible, powerful and lightweight plugin framework for Android
Java
763
star
7

libfiber

The high performance c/c++ coroutine/fiber library for Linux/FreeBSD/MacOS/Windows, supporting select/poll/epoll/kqueue/iouring/iocp/windows GUI
C
748
star
8

LiteApp

LiteApp is a high performance mobile cross-platform implementation, The realization of cross-platform functionality is base on webview and provides different ideas and solutions for improve webview performance.
JavaScript
677
star
9

qnsm

QNSM is network security monitoring framework based on DPDK.
C
515
star
10

TaskManager

一种支持依赖关系、任务兜底策略的任务调度管理工具。API灵活易用,稳定可靠。轻松提交主线程任务、异步任务。支持周期性任务,顺序执行任务,并行任务等。
Java
476
star
11

Lens

功能简介:一种开发帮助产品研发的效率工具。主要提供了:页面分析、任务分析、网络分析、DataDump、自定义hook 、Data Explorer 等功能。以帮助开发、测试、UI 等同学更便捷的排查和定位问题,提升开发效率。
Java
407
star
12

dexSplitter

Analyze contribution rate of each module to the apk size
Java
198
star
13

xgboost-serving

A flexible, high-performance serving system for machine learning models
C++
138
star
14

auklet

Auklet is a high performance storage engine based on Openstack Swift
Go
93
star
15

lua-resty-couchbase

Lua couchbase client driver for the ngx_lua based on the cosocket API / 使用cosocket纯lua实现的couchbase的client,已经在爱奇艺重要的服务播放服务稳定运行5年多
Lua
79
star
16

lotus

lotus is a framework for intereact between views in Android
Java
73
star
17

HMGNN

Python
62
star
18

Navi

Java
18
star