gitextract_rqio205u/ ├── .github/ │ └── workflows/ │ └── android.yml ├── .gitignore ├── LICENSE ├── README.md ├── README_EN.md ├── app/ │ ├── .gitignore │ ├── build.gradle.kts │ ├── proguard-rules.pro │ └── src/ │ ├── androidTest/ │ │ └── java/ │ │ └── top/ │ │ └── zibin/ │ │ └── luban/ │ │ └── app/ │ │ └── ExampleInstrumentedTest.kt │ ├── main/ │ │ ├── AndroidManifest.xml │ │ ├── java/ │ │ │ └── top/ │ │ │ └── zibin/ │ │ │ └── luban/ │ │ │ └── app/ │ │ │ ├── MainActivity.kt │ │ │ ├── MainViewModel.kt │ │ │ └── ui/ │ │ │ └── theme/ │ │ │ ├── Color.kt │ │ │ ├── Theme.kt │ │ │ └── Type.kt │ │ └── res/ │ │ ├── drawable/ │ │ │ ├── ic_launcher_background.xml │ │ │ └── ic_launcher_foreground.xml │ │ ├── mipmap-anydpi/ │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ ├── values/ │ │ │ ├── colors.xml │ │ │ ├── strings.xml │ │ │ └── themes.xml │ │ └── xml/ │ │ ├── backup_rules.xml │ │ └── data_extraction_rules.xml │ └── test/ │ └── java/ │ └── top/ │ └── zibin/ │ └── luban/ │ └── app/ │ └── ExampleUnitTest.kt ├── app-java/ │ ├── .gitignore │ ├── build.gradle.kts │ ├── proguard-rules.pro │ └── src/ │ ├── androidTest/ │ │ └── java/ │ │ └── top/ │ │ └── zibin/ │ │ └── luban/ │ │ └── app/ │ │ └── java/ │ │ └── ExampleInstrumentedTest.java │ ├── main/ │ │ ├── AndroidManifest.xml │ │ ├── java/ │ │ │ └── top/ │ │ │ └── zibin/ │ │ │ └── luban/ │ │ │ └── app/ │ │ │ └── java/ │ │ │ └── MainActivity.java │ │ └── res/ │ │ ├── drawable/ │ │ │ ├── ic_launcher_background.xml │ │ │ └── ic_launcher_foreground.xml │ │ ├── layout/ │ │ │ └── activity_main.xml │ │ ├── mipmap-anydpi/ │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ ├── values/ │ │ │ ├── colors.xml │ │ │ ├── strings.xml │ │ │ └── themes.xml │ │ ├── values-night/ │ │ │ └── themes.xml │ │ └── xml/ │ │ ├── backup_rules.xml │ │ └── data_extraction_rules.xml │ └── test/ │ └── java/ │ └── top/ │ └── zibin/ │ └── luban/ │ └── app/ │ └── java/ │ └── ExampleUnitTest.java ├── build.gradle.kts ├── gradle/ │ ├── libs.versions.toml │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat ├── luban/ │ ├── .gitignore │ ├── build.gradle.kts │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src/ │ ├── androidTest/ │ │ └── java/ │ │ └── top/ │ │ └── zibin/ │ │ └── luban/ │ │ └── ExampleInstrumentedTest.kt │ ├── main/ │ │ ├── AndroidManifest.xml │ │ ├── cpp/ │ │ │ ├── CMakeLists.txt │ │ │ ├── turbojpeg.h │ │ │ └── turbojpeg_wrapper.cpp │ │ └── java/ │ │ └── top/ │ │ └── zibin/ │ │ └── luban/ │ │ ├── algorithm/ │ │ │ └── CompressionCalculator.kt │ │ ├── api/ │ │ │ ├── CompressionTask.kt │ │ │ ├── Luban.kt │ │ │ ├── LubanCompat.kt │ │ │ └── OnCompressListener.kt │ │ ├── compression/ │ │ │ ├── Compressor.kt │ │ │ ├── JpegCompressor.kt │ │ │ └── TurboJpegNative.kt │ │ └── io/ │ │ └── ImageLoader.kt │ └── test/ │ └── java/ │ └── top/ │ └── zibin/ │ └── luban/ │ ├── CompressionCalculatorTest.kt │ └── ExampleUnitTest.kt └── settings.gradle.kts