├── .github
├── dependabot.yml
├── renovate.json
└── workflows
│ └── deploy.yml
├── .gitignore
├── docs
├── .vuepress
│ ├── config.js
│ ├── public
│ │ ├── icon
│ │ │ ├── android-icon-144x144.png
│ │ │ ├── android-icon-192x192.png
│ │ │ ├── android-icon-48x48.png
│ │ │ ├── android-icon-72x72.png
│ │ │ ├── android-icon-96x96.png
│ │ │ ├── browserconfig.xml
│ │ │ ├── favicon-16x16.png
│ │ │ ├── favicon-32x32.png
│ │ │ ├── favicon-96x96.png
│ │ │ ├── favicon.ico
│ │ │ ├── icon.png
│ │ │ ├── manifest.json
│ │ │ ├── ms-icon-144x144.png
│ │ │ └── ms-icon-70x70.png
│ │ └── logo.png
│ └── styles
│ │ ├── index.styl
│ │ └── palette.styl
├── README.md
├── changelog.md
├── download.md
└── guide
│ ├── Library-Reference-Statistics.md
│ ├── Marked-Popular-Library.md
│ ├── Mind-Mapping.md
│ ├── PRIVACY.md
│ ├── Package-Features-Analysis.md
│ ├── README.md
│ ├── Snapshot-Usage.md
│ ├── What-is-Native-Library-Architecture.md
│ ├── What-is-Registered-Component.md
│ ├── img
│ ├── activity_tinker.jpg
│ ├── android_app_bundles.jpg
│ ├── coolapk-badge.png
│ ├── google-play-badge.png
│ ├── kotlin_used.jpg
│ ├── lib_ref_filter.jpg
│ ├── lib_ref_list.jpg
│ ├── lib_ref_threshold_pref.jpg
│ ├── marked_lib_example.jpg
│ ├── marked_library_dialog_found.jpg
│ ├── marked_library_dialog_not_found.jpg
│ ├── ref_threshold_dialog.jpg
│ ├── snapshot_album.jpg
│ ├── snapshot_comparison.jpg
│ ├── snapshot_create.jpg
│ └── snapshot_list.jpg
│ └── xmind
│ ├── LibChecker-XMind.png
│ └── LibChecker.xmind
├── package.json
└── yarn.lock
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | # To get started with Dependabot version updates, you'll need to specify which
2 | # package ecosystems to update and where the package manifests are located.
3 | # Please see the documentation for all configuration options:
4 | # https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
5 |
6 | version: 2
7 | updates:
8 | - package-ecosystem: "npm" # See documentation for possible values
9 | directory: "/" # Location of package manifests
10 | schedule:
11 | interval: "daily"
12 | l
13 |
--------------------------------------------------------------------------------
/.github/renovate.json:
--------------------------------------------------------------------------------
1 | {
2 | "labels": [
3 | "dependencies"
4 | ],
5 | "extends": [
6 | "config:base"
7 | ]
8 | }
--------------------------------------------------------------------------------
/.github/workflows/deploy.yml:
--------------------------------------------------------------------------------
1 | name: Deploy GitHub Pages
2 |
3 | on:
4 | push:
5 | branches:
6 | - master
7 |
8 | jobs:
9 | deploy:
10 | runs-on: ubuntu-latest
11 | steps:
12 | - name: Checkout
13 | uses: actions/checkout@v4
14 | with:
15 | persist-credentials: false
16 | - name: Use Node.js
17 | uses: actions/setup-node@v4
18 | with:
19 | node-version: '16.x'
20 |
21 | - name: Install Deps
22 | if: steps.node-modules.outputs.cache-hit != 'true'
23 | run: yarn install
24 |
25 | - name: Build Template
26 | run: yarn run docs:build
27 |
28 | - name: Deploy 🚀
29 | uses: JamesIves/github-pages-deploy-action@v4.6.8
30 | with:
31 | branch: gh-pages # The branch the action should deploy to.
32 | folder: dist # The folder the action should deploy.
33 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | dist/
2 | node_modules/
--------------------------------------------------------------------------------
/docs/.vuepress/config.js:
--------------------------------------------------------------------------------
1 | const { config } = require("vuepress-theme-hope");
2 |
3 | module.exports = config({
4 | base: '/LibChecker-Docs/',
5 | title: 'LibChecker',
6 | dest: "./dist",
7 | head: [
8 | ['link', {
9 | rel: 'stylesheet',
10 | href: 'https://fonts.googleapis.com/css?family=Roboto:400,400i,500,500i,700,700i&display=swap'
11 | }],
12 | ['link', {
13 | rel: 'stylesheet',
14 | href: 'https://fonts.googleapis.com/css?family=Noto+Sans+SC:400,500,700&display=swap'
15 | }],
16 | ['link', {
17 | rel: 'stylesheet',
18 | href: 'https://fonts.googleapis.com/css?family=Noto+Sans+TC:400,500,700&display=swap'
19 | }],
20 | ['link', { rel: 'icon', type: 'image/png', size: '192x192', href: '/icon/android-icon-192x192.png' }],
21 | ['link', { rel: 'icon', type: 'image/png', size: '32x32', href: '/icon/favicon-32x32.png' }],
22 | ['link', { rel: 'icon', type: 'image/png', size: '96x96', href: '/icon/favicon-96x96.png' }],
23 | ['link', { rel: 'icon', type: 'image/png', size: '16x16', href: '/icon/favicon-16x16.png' }]
24 | ],
25 | locales: {
26 | '/': {
27 | lang: 'zh-Hans',
28 | description: '应用架构查看'
29 | }
30 | },
31 | themeConfig: {
32 | locales: {
33 | '/': {
34 | selectText: '语言',
35 | label: '简体中文',
36 | editLinkText: '在 GitHub 上编辑此页',
37 | serviceWorker: {
38 | updatePopup: {
39 | message: "发现新内容可用.",
40 | buttonText: "刷新"
41 | }
42 | },
43 | lastUpdated: '最后更新'
44 | }
45 | },
46 |
47 | author: "Absinthe",
48 |
49 | darkmode: "auto-switch",
50 |
51 | displayAllHeaders: true,
52 |
53 | sidebarDepth: 2,
54 |
55 | nav: getNavbar('/', '指南', '更新日志', '下载'),
56 |
57 | serviceWorker: {
58 | updatePopup: true
59 | },
60 |
61 | copyright: {
62 | status: "global",
63 | },
64 |
65 | mdEnhance: {
66 | align: true
67 | },
68 |
69 | repo: 'https://github.com/LibChecker/LibChecker-Docs',
70 |
71 | repoLabel: "Github",
72 |
73 | docsRepo: 'https://github.com/LibChecker/LibChecker-Docs',
74 |
75 | docsDir: 'docs',
76 |
77 | editLinks: false
78 | },
79 | })
80 |
81 | function getNavbar(prefix, guide, changelog, download) {
82 | return [
83 | { text: guide, link: `${prefix}guide/` },
84 | { text: changelog, link: `${prefix}changelog/index.html` },
85 | { text: download, link: `${prefix}download/index.html` },
86 | ]
87 | }
--------------------------------------------------------------------------------
/docs/.vuepress/public/icon/android-icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LibChecker/LibChecker-Docs/ebbd6f3090805e771abe064c0bb73b878ce78c15/docs/.vuepress/public/icon/android-icon-144x144.png
--------------------------------------------------------------------------------
/docs/.vuepress/public/icon/android-icon-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LibChecker/LibChecker-Docs/ebbd6f3090805e771abe064c0bb73b878ce78c15/docs/.vuepress/public/icon/android-icon-192x192.png
--------------------------------------------------------------------------------
/docs/.vuepress/public/icon/android-icon-48x48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LibChecker/LibChecker-Docs/ebbd6f3090805e771abe064c0bb73b878ce78c15/docs/.vuepress/public/icon/android-icon-48x48.png
--------------------------------------------------------------------------------
/docs/.vuepress/public/icon/android-icon-72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LibChecker/LibChecker-Docs/ebbd6f3090805e771abe064c0bb73b878ce78c15/docs/.vuepress/public/icon/android-icon-72x72.png
--------------------------------------------------------------------------------
/docs/.vuepress/public/icon/android-icon-96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LibChecker/LibChecker-Docs/ebbd6f3090805e771abe064c0bb73b878ce78c15/docs/.vuepress/public/icon/android-icon-96x96.png
--------------------------------------------------------------------------------
/docs/.vuepress/public/icon/browserconfig.xml:
--------------------------------------------------------------------------------
1 |
2 | #ffffff
--------------------------------------------------------------------------------
/docs/.vuepress/public/icon/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LibChecker/LibChecker-Docs/ebbd6f3090805e771abe064c0bb73b878ce78c15/docs/.vuepress/public/icon/favicon-16x16.png
--------------------------------------------------------------------------------
/docs/.vuepress/public/icon/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LibChecker/LibChecker-Docs/ebbd6f3090805e771abe064c0bb73b878ce78c15/docs/.vuepress/public/icon/favicon-32x32.png
--------------------------------------------------------------------------------
/docs/.vuepress/public/icon/favicon-96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LibChecker/LibChecker-Docs/ebbd6f3090805e771abe064c0bb73b878ce78c15/docs/.vuepress/public/icon/favicon-96x96.png
--------------------------------------------------------------------------------
/docs/.vuepress/public/icon/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LibChecker/LibChecker-Docs/ebbd6f3090805e771abe064c0bb73b878ce78c15/docs/.vuepress/public/icon/favicon.ico
--------------------------------------------------------------------------------
/docs/.vuepress/public/icon/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LibChecker/LibChecker-Docs/ebbd6f3090805e771abe064c0bb73b878ce78c15/docs/.vuepress/public/icon/icon.png
--------------------------------------------------------------------------------
/docs/.vuepress/public/icon/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "App",
3 | "icons": [
4 | {
5 | "src": "\/android-icon-48x48.png",
6 | "sizes": "48x48",
7 | "type": "image\/png",
8 | "density": "1.0"
9 | },
10 | {
11 | "src": "\/android-icon-72x72.png",
12 | "sizes": "72x72",
13 | "type": "image\/png",
14 | "density": "1.5"
15 | },
16 | {
17 | "src": "\/android-icon-96x96.png",
18 | "sizes": "96x96",
19 | "type": "image\/png",
20 | "density": "2.0"
21 | },
22 | {
23 | "src": "\/android-icon-144x144.png",
24 | "sizes": "144x144",
25 | "type": "image\/png",
26 | "density": "3.0"
27 | },
28 | {
29 | "src": "\/android-icon-192x192.png",
30 | "sizes": "192x192",
31 | "type": "image\/png",
32 | "density": "4.0"
33 | }
34 | ]
35 | }
--------------------------------------------------------------------------------
/docs/.vuepress/public/icon/ms-icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LibChecker/LibChecker-Docs/ebbd6f3090805e771abe064c0bb73b878ce78c15/docs/.vuepress/public/icon/ms-icon-144x144.png
--------------------------------------------------------------------------------
/docs/.vuepress/public/icon/ms-icon-70x70.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LibChecker/LibChecker-Docs/ebbd6f3090805e771abe064c0bb73b878ce78c15/docs/.vuepress/public/icon/ms-icon-70x70.png
--------------------------------------------------------------------------------
/docs/.vuepress/public/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LibChecker/LibChecker-Docs/ebbd6f3090805e771abe064c0bb73b878ce78c15/docs/.vuepress/public/logo.png
--------------------------------------------------------------------------------
/docs/.vuepress/styles/index.styl:
--------------------------------------------------------------------------------
1 | @import '//at.alicdn.com/t/font_1426813_7g5dknkx7zp.css'
2 |
3 | code
4 | overflow: auto
5 | word-wrap:break-word
6 |
7 | body
8 | font-family Roboto, sans-serif
9 |
10 | body:lang(zh-hans)
11 | font-family Roboto, 'Noto Sans SC', sans-serif
12 |
13 | body:lang(zh-hant)
14 | font-family Roboto, 'Noto Sans TC', sans-serif
15 |
--------------------------------------------------------------------------------
/docs/.vuepress/styles/palette.styl:
--------------------------------------------------------------------------------
1 | $accentColor = #B1B8DF
2 | $textColor = #2c3e50
3 | $borderColor = #eaecef
4 | $codeBgColor = #282c34
--------------------------------------------------------------------------------
/docs/README.md:
--------------------------------------------------------------------------------
1 | ---
2 | home: true
3 | heroImage: /logo.png
4 | action:
5 | - text: 快速入门 →
6 | link: /guide/
7 | features:
8 | - title: 清晰快速
9 | details: 有详情,也有统计,多种方式了解 App 的组成
10 | - title: 优雅美观
11 | details: 遵循 Material Design,界面统一不凌乱,永远保持干净
12 | - title: 开放编纂
13 | details: 主程序完全开源,并且开放在线规则库,任何人都可以参与贡献
14 | ---
--------------------------------------------------------------------------------
/docs/changelog.md:
--------------------------------------------------------------------------------
1 | # 更新日志
2 | 2.4.4
3 | - 修复了一些应用的快照无法被保存的问题
4 | - 修复了一些应用进入详情页崩溃的问题
5 | - 该版本第一次保存快照将使用全量保存,耗时会比较长
6 |
7 | 2.4.3
8 | - 修复了 Android 14 以上的可预见性返回手势
9 | - 修复了菜单选项重复的问题
10 | - 更新了规则库至 V34
11 | - 修复了一些情况下的 XML 解析失败
12 | - 现在快照会显示应用体积变化差值
13 | - 更新了一些图标样式和文本
14 | - 新增了阿拉伯语支持,并且优化了 RTL 布局
15 | - 修复了无法分析 minSdk 版本大于当前设备的 APK 文件的问题
16 | - 在应用签名信息页面增加了复制按钮
17 | - 新增了 Android 版本分布图表(来源自 Google)
18 | - 新增了快照页面高亮显示差异的可选项
19 | - 修复了云端规则可能更新失败的问题
20 | - 在设置页新增了获取应用更新的渠道
21 | - 在应用属性页面中新增了 Dexopt 信息
22 | - 长按应用详情页和快照详情页的组件可以快速跳转至引用详情页
23 | - 现在新的快照开始记录 compileSdk 和 minSdk
24 |
25 | 2.4.0
26 | - 在应用详情页增加了 Application 标签内属性的查看入口
27 | - 修复了无法解析一些应用的原生库的问题
28 | - 现在 Xposed 模块标签显示具体的信息
29 | - 引入了库引用模块和快照模块的高级菜单,现在可以进行更多的自定义操作
30 | - 在应用详情页增加了应用的安装请求方和安装执行方信息(安装请求方的获取能力依赖于 Shizuku 或 Sui)
31 | - 更新规则库到 V32
32 | - 现在在「对比」页面对比两个 APK,可以进行详细信息的对比
33 | - 在图表页面添加了针对 Jetpack Compose 使用情况的统计
34 | - 修复了一些其他问题
35 |
36 | 2.3.9
37 | - 更新繁体中文翻译
38 | - 修复未安装的权限的显示问题
39 | - 现在原生库页面会展示所有 split 安装包中的原生库
40 | - 修复了一些应用无法进入详情页的问题
41 | - 现在详情页会展示应用的安装包体积
42 | - 详情页中使用了新的 ABI 徽标
43 | - 优化了进入详情页的速度
44 | - 添加了 Android 14 的 Logo 标志,虽然 Android 14 的 API 最终很有可能是 34,但目前阶段还未到达平台稳定性,请自行判断应用的适配性
45 |
46 | 2.3.8
47 | - 修复了在搜索框键入文字闪退的问题
48 | - 优化了图表的表现
49 | - 优化了 Shortcuts 图标在 Android 12+ 深色模式上的表现
50 | - 规则库更新至版本 31
51 |
52 | 2.3.6
53 | - 调整宽屏下的分屏逻辑
54 | - 高级菜单中新增了更多的选项
55 | - 提升应用流畅度,提高应用稳定性
56 |
57 | 2.3.3
58 | - 现在可以查看签名的详细信息
59 | - 修复 ABI 图表没有统计 x86 应用的问题
60 | - 设置项中增加快照保存提示的默认选项
61 | - 修复 Harmony OS 系统上的应用详情页显示问题
62 | - 修复了一些八哥
63 |
64 | 2.3.1
65 | - 标示未授权的权限
66 | - UI 改进
67 | - 问题修复
68 |
69 | 2.3.0
70 | - 不再支持 Android 6
71 | - 现在通过复用旧快照中的不变项来加速保存新的快照
72 | - 现在会在详情页标记出不是 DYN 类型的 ELF 文件
73 | - 不再在应用列表列举未完全卸载的应用包
74 | - 在 FOSS 渠道移除了 AppCenter 和 HarmonyOS 检测相关内容
75 | - 现在应用详情页会展示 CompileSdkVersion
76 | - 修复云端规则无法更新
77 | - 现在支持单应用对比,即可以在对比界面选择单个 APK 或一份快照两两组合,亦或是在外部选择两个 APK 文件分享至 LibChecker 进行对比
78 | - 优化繁体中文翻译
79 | - 支持检测 ReactiveX 框架
80 | - 应用列表页的菜单支持更多的操作,同时设置页的「显示系统应用」也移动至高级菜单内
81 | - 统计库引用的过程中加入了进度显示
82 | - 规则库更新至版本 27
83 |
84 | 2.2.11
85 | 注意:这是最后一个支持 Android 6 的版本,在一段时间内我们仍会为 Android 6 修复一些严重问题,但会以独立版本的形式提供,并且不会与主干共享代码
86 |
87 | - 调整 SplashScreen 动画
88 | - 新式的 M3 Switch
89 | - 现在使用徽标来表示快照中新增和已删除的应用
90 | - 规则库 V25
91 | - 响应 `android.intent.action.APPLICATION_PREFERENCES`
92 | - 修复 multiarch 应用没有出现在 ABI 统计中的问题
93 | - 修复特定情况下原生库匹配失败的问题
94 | - 在启动应用处提供备选的启动方式,这通常适用于没有桌面图标的应用
95 | - 现在可以长按组件快速调用 Blocker 禁用和解禁组件
96 | - 现在对于备份快照功能,如果数据库大于 100MB,则会触发全量备份,使用该备份文件恢复时会覆盖式恢复
97 | - 一些依赖更新和改动
98 |
99 | 2.2.10
100 | - Material 3
101 | - 修复禁用通知后保存快照出现的崩溃
102 | - 增加一种获取 Jetpack Compose 版本的方法
103 | - 更新依赖
104 | - 修复一些问题
105 |
106 | 2.2.9
107 | - 修复在不支持 Activity 嵌入的设备上启动崩溃的问题
108 | - 适配 Android 13 特性
109 | - 替换应用列表 Shortcut 为图表
110 | - 在快照页面显示当前应用数量
111 |
112 | 2.2.7
113 | - 对于相关链接是 GitHub 仓库的规则库,现在可以显示仓库的最近更新时间(注意:GitHub API 有访问频率限制,一小时内不可超过 60 次)
114 | - 在应用详情页显示组件的多进程信息,并可通过点击根据进程进行过滤
115 | - 支持了在应用详情页中通过 质感文件(me.zhanghai.android.files)导航至应用源目录
116 | - 在图表的 Target SDK 和 Min SDK 弹窗中显示 Android 的版本信息
117 | - 由于 Gitee 锁定了镜像仓库,我们移除了云端规则的 Gitee 选项
118 | - 规则库更新至版本 24
119 | - 修复了一些问题
120 |
121 | 2.2.6
122 | - 修复一些问题
123 |
124 | 2.2.5
125 | - 使应用详情页和 APK 分析页的功能更加统一
126 | - 现在支持检测是否使用了 Jetpack Compose
127 | - 增加了一种检测 Kotlin 插件版本的方法
128 | - 现在对于元数据,如果其值可能是一个 Android 资源 ID,它可以被转化为原始值
129 | - 修复了被禁用的应用无法查看 Splits APK
130 | - 优化了应用列表的刷新逻辑
131 | - 更新了依赖
132 |
133 | 2.2.4
134 | - 在 Tiramisu 上支持了带主题的应用图标
135 | - 启用了对话框样式的新增应用和已删除应用详情页面
136 | - 在 Android 12 以上启用了对话框下层模糊效果
137 | - 优化了图表的样式
138 | - 在图表中增加了对 minSdkVersion 版本的统计
139 | - 现在支持通过 URL Scheme 保存快照
140 | - 现在支持按「包」和「共享的 UID」进行统计
141 | - 更新了依赖
142 | - 修复了一些错误
143 |
144 | 2.2.3
145 | - 现在在应用列表页面会标识出被禁用的应用
146 | - 更新依赖
147 | - 优化实现
148 |
149 | 2.2.2
150 | - 更新依赖
151 | - 修复了一些问题
152 | - 现在标记库以 SDK 的方式提供。这意味着您可以轻松地将 LibChecker 中的规则库集成至您的应用。(详情参见:https://github.com/zhaobozhen/LibChecker-Rules-Bundle)
153 |
154 | 2.2.1
155 | - 支持了在详情页长按应用图标将其复制到剪贴板
156 | - 在 Android 12 以上的 Material 3 主题(Alpha)中启用动态颜色
157 | - 支持在详情页中搜索过滤组件
158 | - 更新俄语翻译
159 | - 修复了一些问题
160 |
161 | 2.2.0
162 | - 快照支持了记录应用包的体积
163 | - 现在如果应用包的体积发生变化则会触发快照对比
164 | - 统计页面支持了权限和元数据,并且加快了进入二级页面的加载速度
165 | - 现在快照的详情页面支持生成文字报告
166 | - 在应用的详情页增加了关于 `android:extractNativeLibs` 的提示项
167 | - 修复了一些问题
168 |
169 | 2.1.14
170 | - 支持了 Android 12 SplashScreen API
171 | - 缩短了初始化时间
172 | - 调整了详情页布局
173 |
174 | 2.1.13
175 | - 支持了 Android 12L 的 Activity Embeding API
176 | - 支持了通过分享的方式进行 apk 分析
177 | - 修复了八哥
178 |
179 | 2.1.12
180 | - 升级规则库至版本 18
181 | - 修复了一些问题
182 |
183 | 2.1.11
184 | - 现在快照可以记录元数据的变化了(在该版本前生成的快照不会记录元数据,因此对比会出现全部新增的问题)
185 | - 优化性能和修复 bugs
186 |
187 | 2.1.10
188 | - 修复 ABI 检测方法
189 | - 修复追踪的 app 不能在快照页面被移除
190 | - 新增了一些库规则和图标
191 |
192 | 2.1.9
193 | - 修复 bugs
194 |
195 | 2.1.8
196 | - 在应用详情页可以查看应用的权限和元数据信息
197 | - 修复 bugs
198 | - 修改了检测 ABI 的方式,该版本会强制重载应用列表
199 |
200 | 2.1.7
201 | - 修复 bug
202 |
203 | 2.1.6
204 | - 一个版本的迭代固然重要,但也要考虑历史的进程。在修复旧霸鸽的同时,往往也会带入新的霸鸽(
205 |
206 | 2.1.5
207 | - 修复问题
208 |
209 | 2.1.4
210 | - 支持显示 Overlay 应用的 target package
211 |
212 | 2.1.3
213 | - 小小修补
214 |
215 | 2.1.2
216 | - 修复了一些问题
217 |
218 | 2.1.1
219 | - 修复了带有静态库的详情页错乱问题
220 | - 修复了详情页导航栏问题
221 | - 修复了一处内存泄漏
222 | - 修复深色模式开关无效
223 |
224 | 2.1.0
225 | - 现在无原生库的标签展示 CPU 的 ABI
226 | - 修复了 APK 分析有时看不到组件的问题
227 | - 删除了快照 FAB,现在它在 Toolbar 的位置
228 | - 图表页面移至二级页面
229 | - 规则库现在使用 db 文件分发
230 | - 详情页现在展示应用的 sharedUserId
231 | - 详情页现在展示应用的全部 ABIs
232 | - 时间节点选择和管理 Dialog 现在会展示每张快照中最新的 5 个应用
233 | - 现在获取应用列表会尝试绕过一些 ROM 发明的限制读取应用列表权限
234 | - 更换了新的 Kotlin logo
235 | - 设置中可以切换深色模式
236 | - 支持识别 hap 应用以及查看其 Abilities
237 |
238 | 2.0.0
239 | - **重要** 现在只支持 Android 6.0 以上的设备
240 | - **重要** 由于支持了一些新的情况和调整了一些错误的方法,2.0 之前的快照内容都没有参考价值,建议更新后直接保存新的快照
241 | - 现在支持从云端仓库更新标记库
242 | - 现在启动一个前台服务来保存快照,保存快照时可以切换到后台了
243 | - 【集成】对于四大组件,现在可以长按与“大圣净化”交互(需要大圣净化 v3.8.47 以上)
244 | - 【集成】对于 Activity,现在可以长按与“Anywhere- 编辑器”交互(需要 Anywhere- 2.2.0 以上)
245 | - 支持了 disabled 组件,请尽量避免依赖 2.0 之前的快照,因为之前并没有记录 disabled 组件
246 | - 支持了 assets 中的原生库
247 | - 支持了 MultiArch
248 | - 图表支持了统计应用的 Target API 等级
249 | - 支持了搜索字段高亮
250 | - 修复了大量的错误和不合适的方法
251 |
252 | 1.10.0
253 |
254 | - 支持了 Dex 类检测(过滤了一些无意义的类)并加入了大量的 Dex 类标记库
255 | - 详情页点击应用图标可以进一步操作
256 | - 支持了 x86、x86_64 的架构检测
257 | - 快照 - 仪表盘 增加了 追踪 功能,可以在每次开启快照时强制对比变更
258 | - 优化和消灭臭虫
259 |
260 | 1.9.0
261 |
262 | - 现在快照页面顶端的仪表盘可以交互了,点击时间戳可以切换,点击仪表盘可以进入“相簿”进行更多的操作
263 | - 支持保存多个快照
264 | - 支持对比任意两张快照
265 | - 支持备份和恢复快照
266 | - 现在详情页会展示各个组件的数量
267 | - 现在快照页面会展示各个组件的变更数量
268 | - 一些优化
269 |
270 | 1.8.0
271 |
272 | 愉快的周末
273 |
274 | - 现在快照可以记录权限的变化了
275 | - 增加了 重载应用列表 设置项
276 | - 由于自动刷新列表机制常常不好好工作,我们开发了极为先进的 手动刷新 功能
277 |
278 | 1.7.6
279 |
280 | - 使用 Kotlin 1.4 编译
281 | - 重写了获取应用列表的逻辑,现在更加的稳定了
282 | - 优化了一些布局(横屏瀑布流、滑动隐藏底栏等)
283 |
284 | 1.7.5
285 |
286 | - 优化了每一处列表的布局渲染性能
287 | - 修正了原生库架构的名称,现在使用标准名称
288 | - 增加了一些标记库
289 |
290 | 1.7.4
291 |
292 | - 修复 应用列表查询不到冻结应用的问题
293 | - 修复 快照详情页闪退问题
294 | - 优化 内存泄漏问题
295 |
296 | 1.7.3
297 |
298 | - 现在快照详情页可以显示知名标记库
299 | - 修复 库引用统计有时为空的问题
300 |
301 | 1.7.2
302 |
303 | - 优化了一些体验
304 |
305 | 1.7.1
306 |
307 | - 暂时删除加载进度条来修复闪退问题
308 |
309 | 1.7.0
310 | ** 如果闪退请先尝试清除数据 **
311 |
312 | - 增加了 Shortcuts
313 | - 详情页长按包名可快速复制
314 | - 现在详情页可以响应 android.intent.action.SHOW_APP_DETAIL
315 | - 增加了读取进度条
316 | - 优化了一些实现
317 |
318 | 1.6.1
319 |
320 | - 修复 Android L 上的严重闪退问题
321 |
322 | 1.6.0
323 |
324 | - 优化了快照详情页的显示效果,现在可以分类折叠,亦增加了标识来区分变更
325 | - 快照增加了 “移动” 变更类型
326 |
327 | 1.5.7
328 |
329 | - 修复了 Android 10 上频发的闪退问题
330 | - 优化了一些交互
331 | - 增加了几个标记库
332 |
--------------------------------------------------------------------------------
/docs/download.md:
--------------------------------------------------------------------------------
1 | # Download
2 |
3 | [
](https://play.google.com/store/apps/details?id=com.absinthe.libchecker)
4 | [
](https://f-droid.org/packages/com.absinthe.libchecker/)
5 |
--------------------------------------------------------------------------------
/docs/guide/Library-Reference-Statistics.md:
--------------------------------------------------------------------------------
1 | # 库引用统计
2 |
3 | ## 使用方式
4 |
5 | 主页的第二个 Tab 即为库引用统计,在此页面,您可以方便地看到设备中所有第三方库的引用情况,它是按照引用次数排序的。如下图所示。
6 |
7 |
8 |
9 | 由于性能考虑,列表默认加载原生库类型,您可以点击右上角的更多按钮切换展示类型。
10 |
11 |
12 |
13 | 如果您觉得列表项目太多,且库引用数量较少的库无需查看时,您可以在设置项中设置 **库引用阈值**。
14 |
15 |
16 |
17 | 滑动数量条来改变阈值。
18 |
19 |
--------------------------------------------------------------------------------
/docs/guide/Marked-Popular-Library.md:
--------------------------------------------------------------------------------
1 | # 知名库标记
2 |
3 | ## 简介
4 |
5 |
6 |
7 | LibChecker 目前的标记库由主程序本地定义 + 规则仓库云端定义共同实现。在浏览 App 的组件列表时,如果组件名称匹配本地内置规则,则会在项目右侧显示该库的徽标。轻击列表项即可呼出库详情弹窗。
8 |
9 |
10 |
11 | 弹窗内依次展示了 库名称、开发团队、规则贡献者、简介和相关链接。如果没有匹配到云端规则则会出现以下情形。
12 |
13 |
14 |
15 | 这时您可以选择点击弹窗中间的 **协助我们来补充信息**,规则将会以 GitHub issue 的形式被提交,您可能需要一个 GitHub 账户。当然,您也可以直接访问 [LibChecker-Rules](https://github.com/LibChecker/LibChecker-Rules) 规则仓库来提交 issue,注意需要按照模板形式提交。
16 |
17 | ::: tip 提示
18 | LibChecker 会检测设备与云端仓库的连通性,只有可以正常访问云端仓库才可以开启库详情弹窗,因此建议您保持网络通畅。国内网络建议选择 Gitee 仓库,国外网络建议选择 GitHub 仓库。
19 | :::
--------------------------------------------------------------------------------
/docs/guide/Mind-Mapping.md:
--------------------------------------------------------------------------------
1 | ## 思维导图
2 |
3 | 
--------------------------------------------------------------------------------
/docs/guide/PRIVACY.md:
--------------------------------------------------------------------------------
1 | **Privacy Policy**
2 |
3 | Absinthe built the LibChecker app as an Open Source app. This SERVICE is provided by Absinthe at no cost and is intended for use as is.
4 |
5 | This page is used to inform visitors regarding my policies with the collection, use, and disclosure of Personal Information if anyone decided to use my Service.
6 |
7 | If you choose to use my Service, then you agree to the collection and use of information in relation to this policy. The Personal Information that I collect is used for providing and improving the Service. I will not use or share your information with anyone except as described in this Privacy Policy.
8 |
9 | The terms used in this Privacy Policy have the same meanings as in our Terms and Conditions, which are accessible at LibChecker unless otherwise defined in this Privacy Policy.
10 |
11 | **Information Collection and Use**
12 |
13 | For a better experience, while using our Service, I may require you to provide us with certain personally identifiable information, including but not limited to Log data, Usage habit, Marked libraries. The information that I request will be retained on your device and is not collected by me in any way.
14 |
15 | **Log Data**
16 |
17 | I want to inform you that whenever you use my Service, in a case of an error in the app I collect data and information (through third-party products) on your phone called Log Data. This Log Data may include information such as your device Internet Protocol (“IP”) address, device name, operating system version, the configuration of the app when utilizing my Service, the time and date of your use of the Service, and other statistics.
18 |
19 | **Cookies**
20 |
21 | Cookies are files with a small amount of data that are commonly used as anonymous unique identifiers. These are sent to your browser from the websites that you visit and are stored on your device's internal memory.
22 |
23 | This Service does not use these “cookies” explicitly. However, the app may use third-party code and libraries that use “cookies” to collect information and improve their services. You have the option to either accept or refuse these cookies and know when a cookie is being sent to your device. If you choose to refuse our cookies, you may not be able to use some portions of this Service.
24 |
25 | **Service Providers**
26 |
27 | I may employ third-party companies and individuals due to the following reasons:
28 |
29 | * To facilitate our Service;
30 | * To provide the Service on our behalf;
31 | * To perform Service-related services; or
32 | * To assist us in analyzing how our Service is used.
33 |
34 | I want to inform users of this Service that these third parties have access to their Personal Information. The reason is to perform the tasks assigned to them on our behalf. However, they are obligated not to disclose or use the information for any other purpose.
35 |
36 | **Security**
37 |
38 | I value your trust in providing us your Personal Information, thus we are striving to use commercially acceptable means of protecting it. But remember that no method of transmission over the internet, or method of electronic storage is 100% secure and reliable, and I cannot guarantee its absolute security.
39 |
40 | **Links to Other Sites**
41 |
42 | This Service may contain links to other sites. If you click on a third-party link, you will be directed to that site. Note that these external sites are not operated by me. Therefore, I strongly advise you to review the Privacy Policy of these websites. I have no control over and assume no responsibility for the content, privacy policies, or practices of any third-party sites or services.
43 |
44 | **Children’s Privacy**
45 |
46 | I do not knowingly collect personally identifiable information from children. I encourage all children to never submit any personally identifiable information through the Application and/or Services. I encourage parents and legal guardians to monitor their children's Internet usage and to help enforce this Policy by instructing their children never to provide personally identifiable information through the Application and/or Services without their permission. If you have reason to believe that a child has provided personally identifiable information to us through the Application and/or Services, please contact us. You must also be at least 16 years of age to consent to the processing of your personally identifiable information in your country (in some countries we may allow your parent or guardian to do so on your behalf).
47 |
48 | **Changes to This Privacy Policy**
49 |
50 | I may update our Privacy Policy from time to time. Thus, you are advised to review this page periodically for any changes. I will notify you of any changes by posting the new Privacy Policy on this page.
51 |
52 | This policy is effective as of 2022-08-22
53 |
54 | **Contact Us**
55 |
56 | If you have any questions or suggestions about my Privacy Policy, do not hesitate to contact me at zhaobozhen2025@gmail.com.
57 |
58 | This privacy policy page was created at [privacypolicytemplate.net](https://privacypolicytemplate.net) and modified/generated by [App Privacy Policy Generator](https://app-privacy-policy-generator.nisrulz.com/)
--------------------------------------------------------------------------------
/docs/guide/Package-Features-Analysis.md:
--------------------------------------------------------------------------------
1 | # 包特性分析
2 |
3 | 嘿!Android 的安装包(APK)文件中存在着大量的文件,我们也许可以从中发现点什么。
4 |
5 | ## Android App Bundles
6 |
7 | LibChecker 可以检测安装包是否为 Google Play 分发的 AAB 安装包,详情请参考 [Android App Bundle 简介](https://developer.android.com/guide/app-bundle)。
8 |
9 |
10 |
11 | ## Kotlin
12 |
13 | LibChecker 可以检测 App 是否使用了 Kotlin 编程语言。
14 |
15 |
16 |
17 | ::: warning 注意
18 | 安装包包含 Kotlin 内容不完全意味着 App 使用了 Kotlin 编写,也有可能是 App 引入了使用 Kotlin 编写的三方库。
19 | :::
--------------------------------------------------------------------------------
/docs/guide/README.md:
--------------------------------------------------------------------------------
1 | # 概要
2 |
3 | ## LibChecker 是什么?
4 |
5 | LibChecker 最初是我设计给自己用来查看手机里的应用是否使用了 64 位架构的 App。是的,它功能非常简陋。后来,为了学习大厂优秀软件在开发中使用了哪些技术栈,我引入了 **知名库标记** 功能。将我所知晓的、网上有所记载的知名 SDK 组件标识出来,并且做了 **库引用统计**,方便查看。再后来,我发现一款成熟的、用户基数较大的 App,它的主界面和逻辑是不会发生太大变化的。这就产生了我们经常会看到的景象:一款 App 每次更新都像是刷版本号,主体并无任何变化的感知。但其实它的底层可能有翻天覆地的变化。介于此,我借鉴了 [VCS](https://en.wikipedia.org/wiki/Version_control) 的思想,设计并开发出了 **快照** 功能。从始至终,我都是把 Libchecker 当作一款开发者工具来设计的,因此它对于普通用户来说门槛较高,甚至也许不能带给用户什么价值。但是随着越来越多的开发者和极客用户的使用和反馈建议,LibChecker 也在不断地完善自身……
6 |
7 | [](https://github.com/LibChecker/LibChecker/actions/workflows/android.yml)
8 |
9 | ## LibChecker 能做什么?
10 |
11 | LibChecker 有着一些基础功能:
12 |
13 | - 查看 App 使用的原生库架构(无原生库 / 32 位 / 64 位)
14 | - 查看 App 的注册组件(服务 / 活动 / 广播接收器 / 内容提供器)
15 | - 饼状图统计原生库架构分布
16 |
17 |
18 |
19 | LibChecker 还有着一些特色功能:
20 |
21 | - 知名库标记,基于在线的规则仓库,实时更新
22 | - 库引用统计,统计手机里使用最多的 SDK
23 | - 包特性分析,查看 App 是否是 [Split APKs](https://developer.android.com/studio/build/configure-apk-splits)、是否使用了 [Kotlin](https://en.wikipedia.org/wiki/Kotlin_(programming_language)) 来编写
24 | - 快照,将当前所有应用的主要信息保存,与未来的某一时刻进行对比
25 |
26 | ## 基础知识
27 |
28 | [什么是原生库架构?](/guide/What-is-Native-Library-Architecture/index.html)
29 |
30 | [什么是注册组件?](/guide/What-is-Registered-Component/index.html)
31 |
32 | ## 使用方法
33 |
34 | [知名库标记](/guide/Marked-Popular-Library/index.html)
35 |
36 | [库引用统计](/guide/Library-Reference-Statistics/index.html)
37 |
38 | [包特性分析](/guide/Package-Features-Analysis/index.html)
39 |
40 | [快照](/guide/Snapshot-Usage/index.html)
41 |
42 | ## 相关信息
43 |
44 | **规则仓库:** [LibChecker-Rules](https://github.com/LibChecker/LibChecker-Rules)
45 |
46 | **联系我:** [absinthe@absinthe.life](mailto:absinthe@absinthe.life)
47 |
48 | ## LibChecker 将要做什么
49 |
50 | - 向外提供标记规则的 SDK
51 | - 自定义规则仓库
52 | - 时间线
53 | - 云端更新本地标记库
54 | - ...
55 |
--------------------------------------------------------------------------------
/docs/guide/Snapshot-Usage.md:
--------------------------------------------------------------------------------
1 | # 快照
2 |
3 | ## 什么是快照?
4 |
5 | 小时候我很喜欢看一部日本动画,主角收集到了各种各样的卡牌,其中有一张牌名为 **時(タイム)** ,它可以让时间暂停,让我印象很深刻,这也是快照功能的灵感来源。快照功能的思路来自 VCS(版本控制系统),您可以查看 App 更新前后的任意组件变化。
6 |
7 | ## 使用方法
8 |
9 | 第一次进入快照页面时列表是空白的,这时您可以点击主页右下角的 **保存当前快照** 按钮,随后等待一段时间。保存成功后在页面上方会显示当前快照的时间戳。此时列表仍然为空,不用疑惑,去更新应用吧!回来会看到惊喜。
10 |
11 |
12 |
13 | ## 仪表盘区功能
14 |
15 | 快照页面的上方有着显示时间戳和快照应用数量的仪表盘,现在它可以点击进入,进行一些进阶操作。
16 |
17 |
18 |
19 | ### 对比
20 | 得益于对多副本快照的支持,LibChecker 现在可以进行两个快照之间的比较。
21 |
22 |
23 |
24 | 在上方仪表盘选择两个不同的快照,然后点击右下角的“比较”,就这么简单。现在你可以比较任意两个时间点的应用变更了!
25 |
26 | ### 管理
27 |
28 | 管理功能用于删除已有的快照,未来会加入更多的功能。
29 |
30 | ### 备份与恢复
31 |
32 | 备份与恢复功能提供了简单的快照备份与恢复,目前只能选择备份和恢复全部快照,未来将会提供选择任意快照备份的功能。
33 |
34 | ::: warning 警告
35 | 备份功能使用 SAF 框架实现,其依赖系统中的 **文件(com.google.android.documentsui)** 应用。请确保你的 ROM 中包含此应用并可正常工作。如果你的 ROM 不能正常工作,请联系你的设备制造商。
36 | :::
37 |
38 |
39 |
40 | ### 追踪
41 |
42 | 追踪功能用于强制对比处于追踪列表中的应用。由于性能方面的考虑,LibChecker 基于以下条件对快照项进行对比:
43 |
44 | * 新的 App 的 versionCode > 旧的 App 的 versionCode
45 | * 新的 App 的 lastUpdateTime > 旧的 App 的 lastUpdateTime
46 | * App 存在于追踪列表中
47 |
48 | 对于一些系统预装应用来说,其 versionCode 和 lastUpdateTime 可能不会发生变化,此时您可以将此 App 加入到追踪列表中。
--------------------------------------------------------------------------------
/docs/guide/What-is-Native-Library-Architecture.md:
--------------------------------------------------------------------------------
1 | # 什么是原生库架构?
2 |
3 | 大家常说的 32 位 / 64 位 App 到底是什么意思?首先我们先了解几个概念:
4 |
5 | ## Android 中 ABI 的概念
6 |
7 | ABI,即 **Application Binary Interface(应用程序二进制接口)**,其定义了一套规则,允许编译好的二进制目标代码能在所有兼容该 ABI 的操作系统中无需改动就能运行。
8 |
9 | 不同的 Android 设备使用不同的 CPU,而不同的 CPU 支持不同的指令集。CPU 与指令集的每种组合都有专属的应用二进制接口 (ABI),因此需要提供对应的二进制接口交互规则(即对应的 ABI 文件)才能进行交互。部分 CPU 能够支持多种交互规则,但这是在牺牲性能的前提下所做的兼容。
10 |
11 | 主流的ABI架构:
12 |
13 | - **armeabi-v7a:** 第 7 代及以上的 ARM 处理器。2011 年以后生产的大部分 Android 设备都使用此架构
14 | - **arm64-v8a:** 第 8 代、64 位 ARM 处理器,近些年生产的 Android 设备通常是此架构
15 | - **armeabi:** 第 5 代、第 6 代的 ARM 处理器,早期的手机一般是此架构
16 | - **x86:** 平板、模拟器一般是此架构
17 | - **x86_64:** 64 位的平板或模拟器使用此架构
18 |
19 | ## ABI 和 CPU 的关系
20 |
21 | 当一个 App 被安装在设备上时,只有该设备支持的 CPU 架构对应的 .so 文件会被拷贝到设备中。如果支持多个 ABI 架构,会按照优先级进行拷贝。
22 |
23 | CPU 与 ABI 的对照关系如下:
24 |
25 | | CPU | ABI |
26 | | ------ | ------------------------------- |
27 | | ARMv5 | armeabi |
28 | | ARMv7 | armeabi, armeabi-v7a |
29 | | ARMv8 | armeabi, armeabi-v7a, arm64-v8a |
30 | | ARMv9 | arm64-v8a, arm64-v9a |
31 | | MIPS | mips |
32 | | MIPS64 | mips, mips64 |
33 | | x86 | x86 |
34 | | x86_64 | x86, x86_64, |
35 |
36 | 可以看出 CPU 大都是向前兼容的,但是选择 ABI 时会按照优先级。例如 ARMv8 型的 CPU,优先选择 arm64-v8a 目录下的 .so 文件。如果存在,就不会再安装其他支持的 ABI 架构的 .so 文件;如果没有 arm64-v8a 目录,才会选择 armeabi-v7a 目录下的 .so 文件,最后才会选择 armeabi 目录下的 .so 文件。
37 |
38 | ::: warning 注意
39 | ARMv8 设备虽然能够运行 armeabi 或 armeabi-v7a 下的 so 库,但可能会造成性能损失。即我们经常说的 “64 位手机运行 32 位应用”。
40 | :::
41 |
42 | ## 为什么存在“无原生库”这一状态?
43 |
44 | 首先需要明确一点,我们查看一款 App 是 32 位或 64 位,实际上关心的是它引入的 so 库是 32 位还是 64 位。使用以 Java 编程语言或 Kotlin 编写的代码(包括任何库或 SDK),它们运行在安卓运行时(ART)之上,无需考虑架构因素。而编写原生代码(C/C++)则需要根据不同的架构编译成相应的 so 文件。因此,如果一款 App 没有引入 so 库(即没有使用原生代码编写应用),则讨论它是 32 位还是 64 位是无意义的。
45 |
46 | ## 为什么国内厂商对于升级 64 位不够积极?
47 |
48 | 我认为有以下几点原因:
49 | -
50 | - **64 位 so 文件较大:** 通常 64 位的 so 文件会比 32 位的大一些,而且目前只有 Google Play 和 AppGallery Connect 支持 aab 格式的安装包分发(即 App Bundles),而在全球的软件市场中,App 的体积都是与下载量呈负相关的
51 | - **上游 SDK 未提供 64 位版本:** 由于 APK 中每种架构都必须提供全部的 so 库,因此 App 中只要有一个 SDK 没有提供 64 位版本,则其他 so 都无法替换为 64 位版本
52 |
--------------------------------------------------------------------------------
/docs/guide/What-is-Registered-Component.md:
--------------------------------------------------------------------------------
1 | # 什么是注册组件?
2 |
3 | ## 基础知识
4 |
5 | 注册组件,即人们常说的“四大组件”,包括:
6 |
7 | - 服务(Service)
8 | - 活动(Activity)
9 | - 广播接收器(Broadcast Receiver)
10 | - 内容提供器(Content Provider)
11 |
12 | 它们被静态声明在 APK 的 AndroidManifest.xml 文件中,随 App 安装被注册在系统中。下面简要介绍它们各自的用途。
13 |
14 | - **服务:** 可用于在后台执行耗时操作,另外它也用于进程间通信(IPC)
15 | - **活动:** 用于显示界面来与用户交互,四大组件中唯一用户可感知的组件
16 | - **广播接收器:** 可进行通知操作,例如用户熟悉的 App 自启动,本质是注册了系统的开机广播,系统开机后发送开机广播,App 被拉起
17 | - **内容提供器:** 跨进程提供数据,包括但不限于应用数据库中的数据
18 |
19 | 一些基于 **Intent 防火墙(IFW)** 或 **包管理器(PM)** 处理方式的 App 可以做到禁用以上的 **静态注册** 的组件。
20 |
21 | ::: danger 警告
22 | 随意禁用注册组件是一项危险的操作,最好的情况是相关功能无法使用。如果 App 的开发者没有做良好的容错处理,将很可能导致 App 闪退、数据丢失。
23 | :::
24 |
25 | ::: warning 注意
26 | 广播接收器可以被 **动态注册**,即 App 可能存在很多不为用户所知的广播被启动 App 后注册,这些广播是无法被知晓和禁用的。
27 | :::
28 |
29 | ::: warning 注意
30 | App 可以在应用启动的过程中 **动态注册** 四大组件,因此存在某一组件被禁用后启动 App 又重新被启用的情况。
31 | :::
32 |
33 | ## 为什么我的 App 中有这些奇怪的组件?
34 |
35 | 
36 |
37 | 很多 App 中会有上图这种重复的活动,这种一般是引入了热更新 SDK。每一个活动只是一个“占位符”,由云端动态注册成为实体活动。
--------------------------------------------------------------------------------
/docs/guide/img/activity_tinker.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LibChecker/LibChecker-Docs/ebbd6f3090805e771abe064c0bb73b878ce78c15/docs/guide/img/activity_tinker.jpg
--------------------------------------------------------------------------------
/docs/guide/img/android_app_bundles.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LibChecker/LibChecker-Docs/ebbd6f3090805e771abe064c0bb73b878ce78c15/docs/guide/img/android_app_bundles.jpg
--------------------------------------------------------------------------------
/docs/guide/img/coolapk-badge.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LibChecker/LibChecker-Docs/ebbd6f3090805e771abe064c0bb73b878ce78c15/docs/guide/img/coolapk-badge.png
--------------------------------------------------------------------------------
/docs/guide/img/google-play-badge.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LibChecker/LibChecker-Docs/ebbd6f3090805e771abe064c0bb73b878ce78c15/docs/guide/img/google-play-badge.png
--------------------------------------------------------------------------------
/docs/guide/img/kotlin_used.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LibChecker/LibChecker-Docs/ebbd6f3090805e771abe064c0bb73b878ce78c15/docs/guide/img/kotlin_used.jpg
--------------------------------------------------------------------------------
/docs/guide/img/lib_ref_filter.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LibChecker/LibChecker-Docs/ebbd6f3090805e771abe064c0bb73b878ce78c15/docs/guide/img/lib_ref_filter.jpg
--------------------------------------------------------------------------------
/docs/guide/img/lib_ref_list.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LibChecker/LibChecker-Docs/ebbd6f3090805e771abe064c0bb73b878ce78c15/docs/guide/img/lib_ref_list.jpg
--------------------------------------------------------------------------------
/docs/guide/img/lib_ref_threshold_pref.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LibChecker/LibChecker-Docs/ebbd6f3090805e771abe064c0bb73b878ce78c15/docs/guide/img/lib_ref_threshold_pref.jpg
--------------------------------------------------------------------------------
/docs/guide/img/marked_lib_example.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LibChecker/LibChecker-Docs/ebbd6f3090805e771abe064c0bb73b878ce78c15/docs/guide/img/marked_lib_example.jpg
--------------------------------------------------------------------------------
/docs/guide/img/marked_library_dialog_found.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LibChecker/LibChecker-Docs/ebbd6f3090805e771abe064c0bb73b878ce78c15/docs/guide/img/marked_library_dialog_found.jpg
--------------------------------------------------------------------------------
/docs/guide/img/marked_library_dialog_not_found.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LibChecker/LibChecker-Docs/ebbd6f3090805e771abe064c0bb73b878ce78c15/docs/guide/img/marked_library_dialog_not_found.jpg
--------------------------------------------------------------------------------
/docs/guide/img/ref_threshold_dialog.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LibChecker/LibChecker-Docs/ebbd6f3090805e771abe064c0bb73b878ce78c15/docs/guide/img/ref_threshold_dialog.jpg
--------------------------------------------------------------------------------
/docs/guide/img/snapshot_album.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LibChecker/LibChecker-Docs/ebbd6f3090805e771abe064c0bb73b878ce78c15/docs/guide/img/snapshot_album.jpg
--------------------------------------------------------------------------------
/docs/guide/img/snapshot_comparison.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LibChecker/LibChecker-Docs/ebbd6f3090805e771abe064c0bb73b878ce78c15/docs/guide/img/snapshot_comparison.jpg
--------------------------------------------------------------------------------
/docs/guide/img/snapshot_create.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LibChecker/LibChecker-Docs/ebbd6f3090805e771abe064c0bb73b878ce78c15/docs/guide/img/snapshot_create.jpg
--------------------------------------------------------------------------------
/docs/guide/img/snapshot_list.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LibChecker/LibChecker-Docs/ebbd6f3090805e771abe064c0bb73b878ce78c15/docs/guide/img/snapshot_list.jpg
--------------------------------------------------------------------------------
/docs/guide/xmind/LibChecker-XMind.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LibChecker/LibChecker-Docs/ebbd6f3090805e771abe064c0bb73b878ce78c15/docs/guide/xmind/LibChecker-XMind.png
--------------------------------------------------------------------------------
/docs/guide/xmind/LibChecker.xmind:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/LibChecker/LibChecker-Docs/ebbd6f3090805e771abe064c0bb73b878ce78c15/docs/guide/xmind/LibChecker.xmind
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "LibChecker-Docs",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "directories": {
7 | "doc": "docs"
8 | },
9 | "scripts": {
10 | "test": "echo \"Error: no test specified\" && exit 1",
11 | "cleanServe": "vuepress dev docs --no-cache",
12 | "docs:dev": "vuepress dev docs",
13 | "docs:build": "vuepress build docs"
14 | },
15 | "repository": {
16 | "type": "git",
17 | "url": "git+https://github.com/LibChecker/LibChecker-Docs.git"
18 | },
19 | "keywords": [],
20 | "author": "Absinthe",
21 | "license": "ISC",
22 | "bugs": {
23 | "url": "https://github.com/LibChecker/LibChecker-Docs/issues"
24 | },
25 | "homepage": "https://github.com/LibChecker/LibChecker-Docs#readme",
26 | "dependencies": {
27 | "vuepress": "^1.9.9",
28 | "vuepress-theme-hope": "^1.30.0"
29 | }
30 | }
31 |
--------------------------------------------------------------------------------