├── .gitignore ├── .idea └── .gitignore ├── LICENSE ├── README.md ├── build.gradle ├── gradle.properties ├── gradle ├── publish.gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── library ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ ├── assets │ └── lcrules │ │ ├── rules.db │ │ └── version.prop │ ├── java │ └── com │ │ └── absinthe │ │ └── rulesbundle │ │ ├── IAPI.kt │ │ ├── IconResMap.kt │ │ ├── LCLocale.kt │ │ ├── LCRemoteRepo.kt │ │ ├── LCRules.kt │ │ ├── LibType.kt │ │ ├── Repositories.kt │ │ ├── Rule.kt │ │ ├── RuleDao.kt │ │ ├── RuleDao_Impl.java │ │ ├── RuleDatabase.kt │ │ ├── RuleDatabase_Impl.java │ │ ├── RuleEntity.kt │ │ ├── RuleRepository.kt │ │ ├── Urls.kt │ │ └── utils │ │ ├── FileUtils.kt │ │ └── HashUtils.kt │ └── res │ ├── drawable │ ├── ic_lib_360.xml │ ├── ic_lib_agora.xml │ ├── ic_lib_airbnb.xml │ ├── ic_lib_ali_security.xml │ ├── ic_lib_alibaba.xml │ ├── ic_lib_alipay.xml │ ├── ic_lib_aliyun.xml │ ├── ic_lib_amap.xml │ ├── ic_lib_android.xml │ ├── ic_lib_android_ide.xml │ ├── ic_lib_appauth.xml │ ├── ic_lib_applovin.xml │ ├── ic_lib_baidu.xml │ ├── ic_lib_bilibili.xml │ ├── ic_lib_bytedance.xml │ ├── ic_lib_chromium.xml │ ├── ic_lib_clash.xml │ ├── ic_lib_cmb.xml │ ├── ic_lib_cmcc.xml │ ├── ic_lib_cpp.xml │ ├── ic_lib_curl.xml │ ├── ic_lib_dataranger.xml │ ├── ic_lib_didi.xml │ ├── ic_lib_douyin.xml │ ├── ic_lib_dx_risk.xml │ ├── ic_lib_evernote.xml │ ├── ic_lib_facebook.xml │ ├── ic_lib_fcitx.xml │ ├── ic_lib_ffmpeg.xml │ ├── ic_lib_firebase.xml │ ├── ic_lib_flutter.xml │ ├── ic_lib_folly.xml │ ├── ic_lib_fresco.xml │ ├── ic_lib_gamemaker.xml │ ├── ic_lib_getui.xml │ ├── ic_lib_gio.xml │ ├── ic_lib_godot.xml │ ├── ic_lib_golang.xml │ ├── ic_lib_google.xml │ ├── ic_lib_google_analytics.xml │ ├── ic_lib_google_arcore.xml │ ├── ic_lib_google_cardboard.xml │ ├── ic_lib_google_mediapipe.xml │ ├── ic_lib_google_ml_kit.xml │ ├── ic_lib_graphene_os.xml │ ├── ic_lib_hapjs.xml │ ├── ic_lib_hermes.xml │ ├── ic_lib_honor.xml │ ├── ic_lib_huawei.xml │ ├── ic_lib_instabug.xml │ ├── ic_lib_iqiyi.xml │ ├── ic_lib_ironsource.xml │ ├── ic_lib_isar.xml │ ├── ic_lib_javet.xml │ ├── ic_lib_jd.xml │ ├── ic_lib_jetpack.xml │ ├── ic_lib_jetpack_compose.xml │ ├── ic_lib_jna.xml │ ├── ic_lib_jpush.xml │ ├── ic_lib_jverification.xml │ ├── ic_lib_kotlin.xml │ ├── ic_lib_kuaishou.xml │ ├── ic_lib_live2d.xml │ ├── ic_lib_lua.xml │ ├── ic_lib_lynx.xml │ ├── ic_lib_mapbox.xml │ ├── ic_lib_maplibre_native.xml │ ├── ic_lib_material.xml │ ├── ic_lib_megvii.xml │ ├── ic_lib_meiqia.xml │ ├── ic_lib_meituan.xml │ ├── ic_lib_meizu.xml │ ├── ic_lib_meta.xml │ ├── ic_lib_microsoft.xml │ ├── ic_lib_mpaas.xml │ ├── ic_lib_mpv.xml │ ├── ic_lib_ncnn.xml │ ├── ic_lib_netease.xml │ ├── ic_lib_netease_shield.xml │ ├── ic_lib_netease_yunxin.xml │ ├── ic_lib_node_js.xml │ ├── ic_lib_opencc.xml │ ├── ic_lib_opencv.xml │ ├── ic_lib_openvpn.xml │ ├── ic_lib_oppo.xml │ ├── ic_lib_opus.xml │ ├── ic_lib_oracle.xml │ ├── ic_lib_paypal.xml │ ├── ic_lib_play_store.xml │ ├── ic_lib_qiniu.xml │ ├── ic_lib_qt.xml │ ├── ic_lib_rclone.xml │ ├── ic_lib_react.xml │ ├── ic_lib_realm.xml │ ├── ic_lib_rive.xml │ ├── ic_lib_rn_reanimated.xml │ ├── ic_lib_rnscreen.xml │ ├── ic_lib_rongyun.xml │ ├── ic_lib_rootbeer.xml │ ├── ic_lib_rust.xml │ ├── ic_lib_sensors.xml │ ├── ic_lib_sentry.xml │ ├── ic_lib_shizuku.xml │ ├── ic_lib_singbox.xml │ ├── ic_lib_snapdragon.xml │ ├── ic_lib_sqlite.xml │ ├── ic_lib_square.xml │ ├── ic_lib_telegram.xml │ ├── ic_lib_tencent.xml │ ├── ic_lib_tencent_ad.xml │ ├── ic_lib_tencent_beacon.xml │ ├── ic_lib_tencent_cloud.xml │ ├── ic_lib_tencent_map.xml │ ├── ic_lib_tencent_tds.xml │ ├── ic_lib_tencent_youtu.xml │ ├── ic_lib_tensorflow.xml │ ├── ic_lib_termux.xml │ ├── ic_lib_tuanjie.xml │ ├── ic_lib_tvm.xml │ ├── ic_lib_umeng.xml │ ├── ic_lib_unionpay.xml │ ├── ic_lib_unity.xml │ ├── ic_lib_unreal_engine.xml │ ├── ic_lib_vivo.xml │ ├── ic_lib_vlc.xml │ ├── ic_lib_volcengine.xml │ ├── ic_lib_vorbis.xml │ ├── ic_lib_webrtc.xml │ ├── ic_lib_weibo.xml │ ├── ic_lib_wireguard.xml │ ├── ic_lib_wwise.xml │ ├── ic_lib_xamarin.xml │ ├── ic_lib_xiaoai.xml │ ├── ic_lib_xiaohongshu.xml │ ├── ic_lib_xiaomi.xml │ ├── ic_lib_xunfei.xml │ ├── ic_lib_yandex_speech_kit.xml │ ├── ic_lib_youdao.xml │ ├── ic_lib_zbar.xml │ ├── ic_lib_zhihu.xml │ └── ic_sdk_placeholder.xml │ ├── values-night │ └── colors.xml │ └── values │ ├── colors.xml │ └── strings.xml ├── renovate.json └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | # Built application files 2 | *.apk 3 | *.ap_ 4 | *.aab 5 | 6 | # Files for the ART/Dalvik VM 7 | *.dex 8 | 9 | # Java class files 10 | *.class 11 | 12 | # Generated files 13 | bin/ 14 | gen/ 15 | out/ 16 | # Uncomment the following line in case you need and you don't have the release build type files in your library 17 | # release/ 18 | 19 | # Gradle files 20 | .gradle/ 21 | **/build/ 22 | 23 | # Local configuration file (sdk path, etc) 24 | local.properties 25 | 26 | # Proguard folder generated by Eclipse 27 | proguard/ 28 | 29 | # Log Files 30 | *.log 31 | 32 | # Android Studio Navigation editor temp files 33 | .navigation/ 34 | 35 | # Android Studio captures folder 36 | captures/ 37 | 38 | # IntelliJ 39 | *.iml 40 | .idea/ 41 | # Android Studio 3 in .gitignore file. 42 | .idea/caches 43 | .idea/modules.xml 44 | # Comment next line if keeping position of elements in Navigation Editor is relevant for you 45 | .idea/navEditor.xml 46 | 47 | # Keystore files 48 | # Uncomment the following lines if you do not want to check your keystore files in. 49 | #*.jks 50 | #*.keystore 51 | 52 | # External native build folder generated in Android Studio 2.2 and later 53 | .externalNativeBuild 54 | 55 | # Google Services (e.g. APIs or Firebase) 56 | # google-services.json 57 | 58 | # Freeline 59 | freeline.py 60 | freeline/ 61 | freeline_project_description.json 62 | 63 | # fastlane 64 | fastlane/report.xml 65 | fastlane/Preview.html 66 | fastlane/screenshots 67 | fastlane/test_output 68 | fastlane/readme.md 69 | 70 | # Version control 71 | vcs.xml 72 | 73 | # lint 74 | lint/intermediates/ 75 | lint/generated/ 76 | lint/outputs/ 77 | lint/tmp/ 78 | # lint/reports/ 79 | library/.classpath 80 | library/.project 81 | library/release/* 82 | library/debug/* 83 | 84 | .project 85 | .settings/org.eclipse.buildship.core.prefs 86 | library/.settings/org.eclipse.buildship.core.prefs 87 | .DS_Store -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | # GitHub Copilot persisted chat sessions 5 | /copilot/chatSessions 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # LibChecker-Rules-Bundle 2 | 3 | [![](https://jitpack.io/v/LibChecker/LibChecker-Rules-Bundle.svg)](https://jitpack.io/v/LibChecker/LibChecker-Rules-Bundle.svg) 4 | 5 | Make it easy to use [LibChecker](https://github.com/LibChecker/LibChecker) marked libraries rules in your apps. 6 | 7 | ## Download 8 | 9 | ```groovy 10 | repositories { 11 | maven { url 'https://jitpack.io' } 12 | } 13 | dependencies { 14 | implementation "com.github.LibChecker:LibChecker-Rules-Bundle:${latest_version}" 15 | 16 | // Required: AndroidX Room 17 | implementation 'androidx.room:room-runtime:2.5.0' 18 | implementation 'androidx.room:room-ktx:2.5.0' 19 | 20 | // Required: Kotlin Coroutines 21 | implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.0' 22 | } 23 | ``` 24 | 25 | ## Quick Tutorial 26 | 27 | Initialize SDK in `Application` class 28 | ```kotlin 29 | class App : Application() { 30 | 31 | override fun onCreate() { 32 | super.onCreate() 33 | LCRules.init(this) 34 | 35 | // Optional: set online repo (GitHub repo as default) 36 | LCRules.setRemoteRepo(LCRemoteRepo.GitHub) 37 | 38 | // WIP: set rules locale 39 | LCRules.setLocale(LCLocale.ZH) 40 | } 41 | ``` 42 | 43 | Get marked rule 44 | ```kotlin 45 | // Native library 46 | val rule: Rule = LCRules.getRule(name = "libflutter.so", type = NATIVE, useRegex = false) 47 | 48 | // Activity library 49 | val rule2: Rule = LCRules.getRule(name = "androidx.compose.ui.tooling.PreviewActivity", type = ACTIVITY, useRegex = false) 50 | 51 | // Query library with RegEx 52 | val rule3: Rule = LCRules.getRule(name = "libAMapSDK_MAP_v7_9_1.so", type = NATIVE, useRegex = true) 53 | ``` 54 | -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | buildscript { 3 | repositories { 4 | google() 5 | mavenCentral() 6 | } 7 | dependencies { 8 | classpath "com.android.tools.build:gradle:7.3.1" 9 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.23" 10 | 11 | // NOTE: Do not place your application dependencies here; they belong 12 | // in the individual module build.gradle files 13 | } 14 | } 15 | 16 | task clean(type: Delete) { 17 | delete rootProject.buildDir 18 | } 19 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx4g -XX:+UseParallelGC -Dfile.encoding=UTF-8 2 | org.gradle.parallel=true 3 | org.gradle.caching=true 4 | org.gradle.configureondemand=true 5 | 6 | android.useAndroidX=true 7 | android.enableJetifier=true 8 | 9 | kotlin.code.style=official 10 | 11 | kapt.verbose=true 12 | kapt.incremental.apt=true 13 | 14 | PROJ_GROUP=com.absinthe 15 | PROJ_ARTIFACTID=lcrules 16 | PROJ_NAME=LibChecker-Rules-Bundle 17 | PROJ_VERSION=20 18 | DEVELOPER_ID=LibChecker 19 | DEVELOPER_NAME=LibChecker 20 | PROJ_WEBSITEURL=https://github.com/LibChecker/LibChecker-Rules-Bundle 21 | PROJ_ISSUETRACKERURL=https://github.com/LibChecker/LibChecker-Rules-Bundle/issues 22 | PROJ_VCSURL=https://github.com/LibChecker/LibChecker-Rules-Bundle.git 23 | PROJ_DESCRIPTION=LibChecker-Rules-Bundle 24 | PROJ_USER_MAVEN=LibChecker -------------------------------------------------------------------------------- /gradle/publish.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: "maven-publish" 2 | 3 | afterEvaluate { 4 | publishing { 5 | publications { 6 | release(MavenPublication) { 7 | from components.release 8 | 9 | group = PROJ_GROUP 10 | artifactId = PROJ_ARTIFACTID 11 | version = PROJ_VERSION 12 | 13 | pom { 14 | name = PROJ_NAME 15 | description = PROJ_DESCRIPTION 16 | url = PROJ_VCSURL 17 | licenses { 18 | license { 19 | name = "The Apache License, Version 2.0" 20 | url = "https://www.apache.org/licenses/LICENSE-2.0.txt" 21 | } 22 | } 23 | developers { 24 | developer { 25 | id = DEVELOPER_ID 26 | name = DEVELOPER_NAME 27 | } 28 | } 29 | scm { 30 | connection = PROJ_ISSUETRACKERURL 31 | developerConnection = PROJ_VCSURL 32 | url = PROJ_WEBSITEURL 33 | } 34 | } 35 | } 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibChecker/LibChecker-Rules-Bundle/d45156a5e384aee830a6fec1106f187eacb797e2/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://downloads.gradle.org/distributions/gradle-8.6-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- 1 | @rem 2 | @rem Copyright 2015 the original author or authors. 3 | @rem 4 | @rem Licensed under the Apache License, Version 2.0 (the "License"); 5 | @rem you may not use this file except in compliance with the License. 6 | @rem You may obtain a copy of the License at 7 | @rem 8 | @rem https://www.apache.org/licenses/LICENSE-2.0 9 | @rem 10 | @rem Unless required by applicable law or agreed to in writing, software 11 | @rem distributed under the License is distributed on an "AS IS" BASIS, 12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | @rem See the License for the specific language governing permissions and 14 | @rem limitations under the License. 15 | @rem 16 | 17 | @if "%DEBUG%"=="" @echo off 18 | @rem ########################################################################## 19 | @rem 20 | @rem Gradle startup script for Windows 21 | @rem 22 | @rem ########################################################################## 23 | 24 | @rem Set local scope for the variables with windows NT shell 25 | if "%OS%"=="Windows_NT" setlocal 26 | 27 | set DIRNAME=%~dp0 28 | if "%DIRNAME%"=="" set DIRNAME=. 29 | @rem This is normally unused 30 | set APP_BASE_NAME=%~n0 31 | set APP_HOME=%DIRNAME% 32 | 33 | @rem Resolve any "." and ".." in APP_HOME to make it shorter. 34 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi 35 | 36 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 37 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" 38 | 39 | @rem Find java.exe 40 | if defined JAVA_HOME goto findJavaFromJavaHome 41 | 42 | set JAVA_EXE=java.exe 43 | %JAVA_EXE% -version >NUL 2>&1 44 | if %ERRORLEVEL% equ 0 goto execute 45 | 46 | echo. 1>&2 47 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 48 | echo. 1>&2 49 | echo Please set the JAVA_HOME variable in your environment to match the 1>&2 50 | echo location of your Java installation. 1>&2 51 | 52 | goto fail 53 | 54 | :findJavaFromJavaHome 55 | set JAVA_HOME=%JAVA_HOME:"=% 56 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 57 | 58 | if exist "%JAVA_EXE%" goto execute 59 | 60 | echo. 1>&2 61 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 62 | echo. 1>&2 63 | echo Please set the JAVA_HOME variable in your environment to match the 1>&2 64 | echo location of your Java installation. 1>&2 65 | 66 | goto fail 67 | 68 | :execute 69 | @rem Setup the command line 70 | 71 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 72 | 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if %ERRORLEVEL% equ 0 goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | set EXIT_CODE=%ERRORLEVEL% 85 | if %EXIT_CODE% equ 0 set EXIT_CODE=1 86 | if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% 87 | exit /b %EXIT_CODE% 88 | 89 | :mainEnd 90 | if "%OS%"=="Windows_NT" endlocal 91 | 92 | :omega 93 | -------------------------------------------------------------------------------- /library/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | /release 3 | -------------------------------------------------------------------------------- /library/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | apply plugin: 'kotlin-android' 3 | apply plugin: 'kotlin-parcelize' 4 | 5 | apply from: "${rootDir.path}/gradle/publish.gradle" 6 | 7 | android { 8 | compileSdk 34 9 | namespace "com.absinthe.lc.rulesbundle" 10 | 11 | defaultConfig { 12 | minSdk 21 13 | targetSdk 33 14 | versionCode 1 15 | versionName "1.0" 16 | } 17 | 18 | buildTypes { 19 | release { 20 | minifyEnabled false 21 | shrinkResources false 22 | proguardFiles 'proguard-rules.pro' 23 | } 24 | } 25 | 26 | compileOptions { 27 | sourceCompatibility JavaVersion.VERSION_11 28 | targetCompatibility JavaVersion.VERSION_11 29 | } 30 | 31 | kotlinOptions { 32 | jvmTarget = '11' 33 | } 34 | } 35 | 36 | dependencies { 37 | implementation 'androidx.appcompat:appcompat:1.6.1' 38 | implementation 'androidx.core:core-ktx:1.12.0' 39 | implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.0' 40 | 41 | implementation 'androidx.room:room-runtime:2.6.1' 42 | implementation 'androidx.room:room-ktx:2.6.1' 43 | compileOnly 'javax.annotation:javax.annotation-api:1.3.2' 44 | } 45 | -------------------------------------------------------------------------------- /library/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | -keepclassmembers class * { 2 | @android.webkit.JavascriptInterface ; 3 | } 4 | 5 | -keepclassmembers class * implements android.os.Parcelable { 6 | public static final ** CREATOR; 7 | } 8 | 9 | -assumenosideeffects class kotlin.jvm.internal.Intrinsics { 10 | public static void check*(...); 11 | public static void throw*(...); 12 | } 13 | 14 | -allowaccessmodification 15 | -overloadaggressively 16 | -------------------------------------------------------------------------------- /library/src/main/assets/lcrules/rules.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LibChecker/LibChecker-Rules-Bundle/d45156a5e384aee830a6fec1106f187eacb797e2/library/src/main/assets/lcrules/rules.db -------------------------------------------------------------------------------- /library/src/main/assets/lcrules/version.prop: -------------------------------------------------------------------------------- 1 | version=40 2 | items=2204 -------------------------------------------------------------------------------- /library/src/main/java/com/absinthe/rulesbundle/IAPI.kt: -------------------------------------------------------------------------------- 1 | package com.absinthe.rulesbundle 2 | 3 | interface IAPI { 4 | fun getVersion(): Int 5 | fun getItemCounts(): Int 6 | fun getRulesAssetPath(): String 7 | suspend fun getRule(libName: String, @LibType type: Int, useRegex: Boolean): Rule? 8 | fun setLocale(locale: LCLocale) 9 | fun setRemoteRepo(repo: LCRemoteRepo) 10 | } -------------------------------------------------------------------------------- /library/src/main/java/com/absinthe/rulesbundle/LCLocale.kt: -------------------------------------------------------------------------------- 1 | package com.absinthe.rulesbundle 2 | 3 | sealed class LCLocale { 4 | object ZH : LCLocale() 5 | object EN : LCLocale() 6 | } -------------------------------------------------------------------------------- /library/src/main/java/com/absinthe/rulesbundle/LCRemoteRepo.kt: -------------------------------------------------------------------------------- 1 | package com.absinthe.rulesbundle 2 | 3 | sealed class LCRemoteRepo { 4 | object Github : LCRemoteRepo() 5 | object Gitlab : LCRemoteRepo() 6 | } -------------------------------------------------------------------------------- /library/src/main/java/com/absinthe/rulesbundle/LibType.kt: -------------------------------------------------------------------------------- 1 | package com.absinthe.rulesbundle 2 | 3 | import androidx.annotation.IntDef 4 | 5 | /** 6 | *
 7 |  * author : Absinthe
 8 |  * time : 2020/08/04
 9 |  * 
10 | */ 11 | const val NOT_MARKED = -2 12 | const val ALL = -1 13 | const val NATIVE = 0 14 | const val SERVICE = 1 15 | const val ACTIVITY = 2 16 | const val RECEIVER = 3 17 | const val PROVIDER = 4 18 | const val DEX = 5 19 | const val STATIC = 6 20 | const val PERMISSION = 7 21 | const val METADATA = 8 22 | 23 | @IntDef(ALL, NATIVE, SERVICE, ACTIVITY, RECEIVER, PROVIDER, DEX, STATIC, PERMISSION, METADATA) 24 | @Target(AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.FIELD, AnnotationTarget.FUNCTION) 25 | @Retention(AnnotationRetention.SOURCE) 26 | annotation class LibType 27 | -------------------------------------------------------------------------------- /library/src/main/java/com/absinthe/rulesbundle/Repositories.kt: -------------------------------------------------------------------------------- 1 | package com.absinthe.rulesbundle 2 | 3 | import android.content.Context 4 | import com.absinthe.rulesbundle.utils.FileUtils 5 | import com.absinthe.rulesbundle.utils.HashUtils 6 | import java.io.File 7 | 8 | object Repositories { 9 | 10 | const val RULES_DATABASE_NAME = "rules_database" 11 | private const val LOCAL_RULES_VERSION_FILE = "lcrules/version" 12 | 13 | fun checkRulesDatabase(context: Context) { 14 | if (!checkMd5(context) && !checkVersion(context)) { 15 | deleteRulesDatabase(context) 16 | } 17 | } 18 | 19 | fun getLocalRulesVersion(context: Context): Int { 20 | val localCloudVersionFile = File(context.filesDir, LOCAL_RULES_VERSION_FILE) 21 | if (localCloudVersionFile.exists().not()) return LCRules.getVersion() 22 | if (localCloudVersionFile.isDirectory.not()) return LCRules.getVersion() 23 | localCloudVersionFile.listFiles()?.takeIf { it.isNotEmpty() }?.let { files -> 24 | return runCatching { files.maxOf { it.name.toInt() } }.getOrDefault(LCRules.getVersion()) 25 | } ?: return LCRules.getVersion() 26 | } 27 | 28 | fun setLocalRulesVersion(context: Context, version: Int): Boolean { 29 | val localCloudVersionFile = File(context.filesDir, LOCAL_RULES_VERSION_FILE) 30 | if (localCloudVersionFile.isDirectory.not()) localCloudVersionFile.delete() 31 | if (localCloudVersionFile.exists().not()) localCloudVersionFile.mkdirs() 32 | return File(localCloudVersionFile, version.toString()).createNewFile() 33 | } 34 | 35 | private fun deleteRulesDatabase(context: Context) { 36 | val databaseDir = context.getDatabasePath(RULES_DATABASE_NAME).parent 37 | FileUtils.delete(File(databaseDir, RULES_DATABASE_NAME)) 38 | FileUtils.delete(File(databaseDir, "${RULES_DATABASE_NAME}-shm")) 39 | FileUtils.delete(File(databaseDir, "${RULES_DATABASE_NAME}-wal")) 40 | } 41 | 42 | private fun checkMd5(context: Context): Boolean { 43 | val databaseDir = context.getDatabasePath(RULES_DATABASE_NAME).parent 44 | val localDB = File(databaseDir, RULES_DATABASE_NAME) 45 | if (localDB.exists().not()) return false 46 | val localDBMd5 = HashUtils.md5(localDB.readBytes()) 47 | val assetDBMd5 = context.assets.open(LCRules.getRulesAssetPath()).use { 48 | HashUtils.md5(it.readBytes()) 49 | } 50 | return localDBMd5 == assetDBMd5 51 | } 52 | 53 | private fun checkVersion(context: Context): Boolean { 54 | val versionFile = File(context.filesDir, LOCAL_RULES_VERSION_FILE) 55 | if (versionFile.exists().not()) return false 56 | if (versionFile.isDirectory.not()) return false 57 | versionFile.listFiles()?.takeIf { it.isNotEmpty() }?.let { files -> 58 | val version = runCatching { files.maxOf { it.name.toInt() } }.getOrDefault(0) 59 | return version >= LCRules.getVersion() 60 | } ?: return false 61 | } 62 | } -------------------------------------------------------------------------------- /library/src/main/java/com/absinthe/rulesbundle/Rule.kt: -------------------------------------------------------------------------------- 1 | package com.absinthe.rulesbundle 2 | 3 | import android.os.Parcelable 4 | import androidx.annotation.DrawableRes 5 | import kotlinx.parcelize.Parcelize 6 | 7 | @Parcelize 8 | data class Rule( 9 | val label: String, 10 | @DrawableRes val iconRes: Int, 11 | val descriptionUrl: String?, 12 | val regexName: String?, 13 | val isSimpleColorIcon: Boolean 14 | ) : Parcelable -------------------------------------------------------------------------------- /library/src/main/java/com/absinthe/rulesbundle/RuleDao.kt: -------------------------------------------------------------------------------- 1 | package com.absinthe.rulesbundle 2 | 3 | import android.database.Cursor 4 | import androidx.room.Dao 5 | import androidx.room.Insert 6 | import androidx.room.OnConflictStrategy 7 | import androidx.room.Query 8 | 9 | @Dao 10 | interface RuleDao { 11 | // Rules 12 | @Insert(onConflict = OnConflictStrategy.REPLACE) 13 | suspend fun insertRules(items: List) 14 | 15 | @Query("DELETE FROM rules_table") 16 | fun deleteAllRules() 17 | 18 | @Query("SELECT * from rules_table WHERE name LIKE :name") 19 | suspend fun getRule(name: String): RuleEntity? 20 | 21 | @Query("SELECT * from rules_table") 22 | suspend fun getAllRules(): List 23 | 24 | @Query("SELECT * from rules_table WHERE isRegexRule = 1") 25 | suspend fun getRegexRules(): List 26 | 27 | @Query("SELECT * FROM rules_table") 28 | fun selectAllRules(): Cursor? 29 | 30 | @Query("SELECT * FROM rules_table WHERE name LIKE :name") 31 | fun selectRuleByName(name: String): Cursor? 32 | } 33 | -------------------------------------------------------------------------------- /library/src/main/java/com/absinthe/rulesbundle/RuleDatabase.kt: -------------------------------------------------------------------------------- 1 | package com.absinthe.rulesbundle 2 | 3 | import android.content.Context 4 | import androidx.room.Database 5 | import androidx.room.Room 6 | import androidx.room.RoomDatabase 7 | 8 | @Database(entities = [RuleEntity::class], version = 1) 9 | abstract class RuleDatabase : RoomDatabase() { 10 | 11 | abstract fun ruleDao(): RuleDao 12 | 13 | override fun close() { 14 | super.close() 15 | instance = null 16 | } 17 | 18 | companion object { 19 | // Singleton prevents multiple instances of database opening at the 20 | // same time. 21 | @Volatile 22 | private var instance: RuleDatabase? = null 23 | 24 | fun getDatabase(context: Context): RuleDatabase { 25 | return instance ?: synchronized(this) { 26 | instance ?: buildDatabase(context).also { instance = it } 27 | } 28 | } 29 | 30 | private fun buildDatabase(context: Context): RuleDatabase { 31 | return Room.databaseBuilder( 32 | context.applicationContext, 33 | RuleDatabase::class.java, 34 | Repositories.RULES_DATABASE_NAME 35 | ).fallbackToDestructiveMigration() 36 | .createFromAsset(LCRules.getRulesAssetPath()) 37 | .build() 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /library/src/main/java/com/absinthe/rulesbundle/RuleEntity.kt: -------------------------------------------------------------------------------- 1 | package com.absinthe.rulesbundle 2 | 3 | import android.provider.BaseColumns 4 | import androidx.room.ColumnInfo 5 | import androidx.room.Entity 6 | import androidx.room.PrimaryKey 7 | 8 | @Entity(tableName = "rules_table") 9 | data class RuleEntity( 10 | @PrimaryKey @ColumnInfo(name = BaseColumns._ID) val id: Int, 11 | @ColumnInfo(name = "name") val name: String, 12 | @ColumnInfo(name = "label") val label: String, 13 | @ColumnInfo(name = "type") @LibType val type: Int, 14 | @ColumnInfo(name = "iconIndex") val iconIndex: Int, 15 | @ColumnInfo(name = "isRegexRule") val isRegexRule: Boolean, 16 | @ColumnInfo(name = "regexName") val regexName: String? 17 | ) 18 | -------------------------------------------------------------------------------- /library/src/main/java/com/absinthe/rulesbundle/RuleRepository.kt: -------------------------------------------------------------------------------- 1 | package com.absinthe.rulesbundle 2 | 3 | import kotlinx.coroutines.Dispatchers 4 | import kotlinx.coroutines.GlobalScope 5 | import kotlinx.coroutines.launch 6 | import java.util.regex.Pattern 7 | 8 | class RuleRepository(private val ruleDao: RuleDao) { 9 | 10 | init { 11 | GlobalScope.launch(Dispatchers.IO) { 12 | if (rules == null) { 13 | rules = getAllRules().asSequence() 14 | .map { 15 | it.name to it 16 | } 17 | .toMap() 18 | } 19 | if (regexRules == null) { 20 | regexRules = getRegexRules().asSequence() 21 | .map { Pattern.compile(it.name) to it } 22 | .toMap() 23 | } 24 | } 25 | } 26 | 27 | fun getRule(name: String) = rules?.get(name) 28 | 29 | suspend fun insertRules(rules: List) { 30 | ruleDao.insertRules(rules) 31 | } 32 | 33 | fun deleteAllRules() { 34 | ruleDao.deleteAllRules() 35 | } 36 | 37 | suspend fun getAllRules() = ruleDao.getAllRules() 38 | 39 | suspend fun getRegexRules() = ruleDao.getRegexRules() 40 | 41 | companion object { 42 | var rules: Map? = null 43 | var regexRules: Map? = null 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /library/src/main/java/com/absinthe/rulesbundle/Urls.kt: -------------------------------------------------------------------------------- 1 | package com.absinthe.rulesbundle 2 | 3 | private const val BRANCH_MASTER = "master" 4 | private const val WORKING_BRANCH = BRANCH_MASTER 5 | 6 | object Urls { 7 | const val GITHUB_ROOT_URL = 8 | "https://raw.githubusercontent.com/LibChecker/LibChecker-Rules/$WORKING_BRANCH/" 9 | const val GITLAB_ROOT_URL = 10 | "https://gitlab.com/zhaobozhen/LibChecker-Rules/-/raw/$WORKING_BRANCH/" 11 | } 12 | -------------------------------------------------------------------------------- /library/src/main/java/com/absinthe/rulesbundle/utils/FileUtils.kt: -------------------------------------------------------------------------------- 1 | package com.absinthe.rulesbundle.utils 2 | 3 | import java.io.File 4 | 5 | object FileUtils { 6 | 7 | fun delete(file: File?): Boolean { 8 | if (file == null) return false 9 | return if (file.isDirectory) { 10 | deleteDir(file) 11 | } else { 12 | deleteFile(file) 13 | } 14 | } 15 | 16 | private fun deleteDir(dir: File?): Boolean { 17 | if (dir == null) return false 18 | // dir doesn't exist then return true 19 | if (!dir.exists()) return true 20 | // dir isn't a directory then return false 21 | if (!dir.isDirectory) return false 22 | val files = dir.listFiles() 23 | if (files != null && files.isNotEmpty()) { 24 | for (file in files) { 25 | if (file.isFile) { 26 | if (!file.delete()) return false 27 | } else if (file.isDirectory) { 28 | if (!deleteDir(file)) return false 29 | } 30 | } 31 | } 32 | return dir.delete() 33 | } 34 | 35 | private fun deleteFile(file: File?): Boolean { 36 | return file != null && (!file.exists() || file.isFile && file.delete()) 37 | } 38 | } -------------------------------------------------------------------------------- /library/src/main/java/com/absinthe/rulesbundle/utils/HashUtils.kt: -------------------------------------------------------------------------------- 1 | package com.absinthe.rulesbundle.utils 2 | 3 | import java.security.MessageDigest 4 | 5 | object HashUtils { 6 | fun md5(byteArray: ByteArray): String = digest(byteArray, "MD5") 7 | 8 | fun sha1(byteArray: ByteArray): String = digest(byteArray, "SHA-1") 9 | 10 | fun sha256(byteArray: ByteArray): String = digest(byteArray, "SHA-256") 11 | 12 | fun sha512(byteArray: ByteArray): String = digest(byteArray, "SHA-512") 13 | 14 | private fun digest(byteArray: ByteArray, algorithm: String): String { 15 | val messageDigest = MessageDigest.getInstance(algorithm).apply { 16 | reset() 17 | } 18 | messageDigest.update(byteArray) 19 | return messageDigest.digest().toHexString() 20 | } 21 | 22 | private fun ByteArray.toHexString() : String { 23 | return this.joinToString("") { it.toString(16) } 24 | } 25 | } -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_360.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 15 | 16 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_agora.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_airbnb.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_alibaba.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_aliyun.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_amap.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_android.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_appauth.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 15 | 16 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_applovin.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 14 | 18 | 21 | 22 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_baidu.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_bytedance.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_chromium.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_clash.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_cmb.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_cmcc.xml: -------------------------------------------------------------------------------- 1 | 7 | 11 | 12 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_cpp.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_dataranger.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 15 | 18 | 21 | 22 | 23 | 24 | 27 | 28 | 34 | 37 | 40 | 41 | 42 | 43 | 46 | 47 | 53 | 56 | 59 | 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_didi.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_douyin.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 13 | 16 | 17 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_evernote.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_facebook.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_firebase.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 9 | 10 | 11 | 14 | 15 | 18 | 19 | 22 | 23 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_flutter.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_fresco.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 16 | 23 | 30 | 37 | 44 | 51 | 52 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_gamemaker.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_gio.xml: -------------------------------------------------------------------------------- 1 | 7 | 11 | 15 | 19 | 20 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_golang.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_google.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_google_analytics.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 15 | 16 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_google_arcore.xml: -------------------------------------------------------------------------------- 1 | 7 | 11 | 15 | 19 | 23 | 27 | 31 | 35 | 38 | 39 | 45 | 48 | 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_google_cardboard.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_google_mediapipe.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 10 | 11 | 15 | 16 | 20 | 21 | 25 | 26 | 30 | 31 | 35 | 36 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_graphene_os.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_hapjs.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 13 | 16 | 17 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_honor.xml: -------------------------------------------------------------------------------- 1 | 7 | 11 | 12 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_huawei.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_iqiyi.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_ironsource.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 9 | 10 | 11 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_isar.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 15 | 18 | 21 | 22 | 23 | 24 | 25 | 26 | 32 | 35 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_javet.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 15 | 18 | 21 | 22 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_jd.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_jpush.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 15 | 18 | 21 | 24 | 25 | 26 | 27 | 28 | 29 | 35 | 38 | 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_jverification.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_kotlin.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 14 | 17 | 20 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_kuaishou.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 13 | 16 | 19 | 20 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_live2d.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 15 | 16 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_lua.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_lynx.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 10 | 11 | 12 | 16 | 17 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_mapbox.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 13 | 14 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_maplibre_native.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 9 | 10 | 11 | 15 | 16 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_material.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 15 | 16 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_megvii.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 10 | 11 | 14 | 15 | 18 | 19 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_meituan.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 13 | 14 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_meizu.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_meta.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 12 | 13 | 14 | 20 | 23 | 26 | 29 | 32 | 33 | 34 | 35 | 36 | 37 | 43 | 46 | 49 | 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_microsoft.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_mpaas.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 15 | 18 | 21 | 24 | 27 | 30 | 33 | 36 | 39 | 42 | 45 | 48 | 51 | 52 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_ncnn.xml: -------------------------------------------------------------------------------- 1 | 6 | 11 | 16 | 21 | 26 | 31 | 36 | 41 | 46 | 47 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_netease_shield.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 11 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_netease_yunxin.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_node_js.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_opencv.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 15 | 16 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_openvpn.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_oppo.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_oracle.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_paypal.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 15 | 16 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_play_store.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_qiniu.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_qt.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | 11 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_rclone.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 10 | 13 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_react.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_rive.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 10 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_rn_reanimated.xml: -------------------------------------------------------------------------------- 1 | 6 | 11 | 16 | 19 | 20 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_rnscreen.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 10 | 11 | 14 | 15 | 19 | 20 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_rongyun.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 13 | 14 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_sentry.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_shizuku.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | 16 | 20 | 24 | 25 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_snapdragon.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_sqlite.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | 12 | 18 | 21 | 24 | 27 | 28 | 29 | 30 | 33 | 34 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_square.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_telegram.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_tencent.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_tencent_ad.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 15 | 18 | 21 | 22 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_tencent_beacon.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_tencent_cloud.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 13 | 16 | 17 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_tencent_map.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_tensorflow.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 15 | 18 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_termux.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 9 | 10 | 11 | 14 | 15 | 18 | 19 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_tuanjie.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 9 | 12 | 13 | 16 | 17 | 20 | 21 | 24 | 25 | 28 | 29 | 32 | 33 | 36 | 37 | 40 | 41 | 44 | 45 | 48 | 49 | 52 | 53 | 56 | 57 | 60 | 61 | 64 | 65 | 68 | 69 | 72 | 73 | 76 | 77 | 80 | 81 | 84 | 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_tvm.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_umeng.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 13 | 16 | 17 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_unity.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_unreal_engine.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_vlc.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_volcengine.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_webrtc.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 15 | 18 | 21 | 24 | 27 | 30 | 33 | 36 | 39 | 40 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_weibo.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_wireguard.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_xiaoai.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_xunfei.xml: -------------------------------------------------------------------------------- 1 | 7 | 11 | 12 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_yandex_speech_kit.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_youdao.xml: -------------------------------------------------------------------------------- 1 | 7 | 11 | 12 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_zbar.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 15 | 18 | 21 | 26 | 27 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_lib_zhihu.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_sdk_placeholder.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 13 | 14 | -------------------------------------------------------------------------------- /library/src/main/res/values-night/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | @android:color/white 4 | 5 | -------------------------------------------------------------------------------- /library/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #DCA73D 4 | @android:color/black 5 | 6 | -------------------------------------------------------------------------------- /library/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | クロウ·リード 3 | 『この世界とは違う世界』 4 | 5 | -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "extends": [ 4 | "config:base" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | dependencyResolutionManagement { 2 | repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) 3 | repositories { 4 | google() 5 | mavenCentral() 6 | } 7 | } 8 | rootProject.name = "LibChecker-Rules-Bundle" 9 | include ':library' 10 | --------------------------------------------------------------------------------