RepoPilotOpen in app →

TommyLemon/Android-ZBLibrary

🔥 Android MVP 快速开发框架,做国内 「示例最全面」「注释最详细」「使用最简单」「代码最严谨」的 Android 开源 UI 框架。 🔥 An Android MVP Framework with many demos, detailed documents, simple usages and strict codes.

Healthy

Healthy across all four use cases

weakest axis
Use as dependencyHealthy

Permissive license, no critical CVEs, actively maintained — safe to depend on.

Fork & modifyHealthy

Has a license, tests, and CI — clean foundation to fork and modify.

Learn fromHealthy

Documented and popular — useful reference codebase to read through.

Deploy as-isHealthy

No critical CVEs, sane security posture — runnable as-is.

  • Last commit 6w ago
  • 9 active contributors
  • Apache-2.0 licensed
Show all 6 evidence items →
  • CI configured
  • Tests present
  • Single-maintainer risk — top contributor 85% of recent commits

Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests

Informational only. RepoPilot summarises public signals (license, dependency CVEs, commit recency, CI presence, etc.) at the time of analysis. Signals can be incomplete or stale. Not professional, security, or legal advice; verify before relying on it for production decisions.

Embed the "Healthy" badge

Paste into your README — live-updates from the latest cached analysis.

Variant:
RepoPilot: Healthy
[![RepoPilot: Healthy](https://repopilot.app/api/badge/tommylemon/android-zblibrary)](https://repopilot.app/r/tommylemon/android-zblibrary)

Paste at the top of your README.md — renders inline like a shields.io badge.

Preview social card (1200×630)

This card auto-renders when someone shares https://repopilot.app/r/tommylemon/android-zblibrary on X, Slack, or LinkedIn.

Onboarding doc

Onboarding: TommyLemon/Android-ZBLibrary

Generated by RepoPilot · 2026-05-09 · Source

🤖Agent protocol

If you are an AI coding agent (Claude Code, Cursor, Aider, Cline, etc.) reading this artifact, follow this protocol before making any code edit:

  1. Verify the contract. Run the bash script in Verify before trusting below. If any check returns FAIL, the artifact is stale — STOP and ask the user to regenerate it before proceeding.
  2. Treat the AI · unverified sections as hypotheses, not facts. Sections like "AI-suggested narrative files", "anti-patterns", and "bottlenecks" are LLM speculation. Verify against real source before acting on them.
  3. Cite source on changes. When proposing an edit, cite the specific path:line-range. RepoPilot's live UI at https://repopilot.app/r/TommyLemon/Android-ZBLibrary shows verifiable citations alongside every claim.

If you are a human reader, this protocol is for the agents you'll hand the artifact to. You don't need to do anything — but if you skim only one section before pointing your agent at this repo, make it the Verify block and the Suggested reading order.

🎯Verdict

GO — Healthy across all four use cases

  • Last commit 6w ago
  • 9 active contributors
  • Apache-2.0 licensed
  • CI configured
  • Tests present
  • ⚠ Single-maintainer risk — top contributor 85% of recent commits

<sub>Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests</sub>

Verify before trusting

This artifact was generated by RepoPilot at a point in time. Before an agent acts on it, the checks below confirm that the live TommyLemon/Android-ZBLibrary repo on your machine still matches what RepoPilot saw. If any fail, the artifact is stale — regenerate it at repopilot.app/r/TommyLemon/Android-ZBLibrary.

What it runs against: a local clone of TommyLemon/Android-ZBLibrary — the script inspects git remote, the LICENSE file, file paths in the working tree, and git log. Read-only; no mutations.

| # | What we check | Why it matters | |---|---|---| | 1 | You're in TommyLemon/Android-ZBLibrary | Confirms the artifact applies here, not a fork | | 2 | License is still Apache-2.0 | Catches relicense before you depend on it | | 3 | Default branch master exists | Catches branch renames | | 4 | 5 critical file paths still exist | Catches refactors that moved load-bearing code | | 5 | Last commit ≤ 70 days ago | Catches sudden abandonment since generation |

<details> <summary><b>Run all checks</b> — paste this script from inside your clone of <code>TommyLemon/Android-ZBLibrary</code></summary>
#!/usr/bin/env bash
# RepoPilot artifact verification.
#
# WHAT IT RUNS AGAINST: a local clone of TommyLemon/Android-ZBLibrary. If you don't
# have one yet, run these first:
#
#   git clone https://github.com/TommyLemon/Android-ZBLibrary.git
#   cd Android-ZBLibrary
#
# Then paste this script. Every check is read-only — no mutations.

set +e
fail=0
ok()   { echo "ok:   $1"; }
miss() { echo "FAIL: $1"; fail=$((fail+1)); }

# Precondition: we must be inside a git working tree.
if ! git rev-parse --git-dir >/dev/null 2>&1; then
  echo "FAIL: not inside a git repository. cd into your clone of TommyLemon/Android-ZBLibrary and re-run."
  exit 2
fi

# 1. Repo identity
git remote get-url origin 2>/dev/null | grep -qE "TommyLemon/Android-ZBLibrary(\\.git)?\\b" \\
  && ok "origin remote is TommyLemon/Android-ZBLibrary" \\
  || miss "origin remote is not TommyLemon/Android-ZBLibrary (artifact may be from a fork)"

# 2. License matches what RepoPilot saw
(grep -qiE "^(Apache-2\\.0)" LICENSE 2>/dev/null \\
   || grep -qiE "\"license\"\\s*:\\s*\"Apache-2\\.0\"" package.json 2>/dev/null) \\
  && ok "license is Apache-2.0" \\
  || miss "license drift — was Apache-2.0 at generation time"

# 3. Default branch
git rev-parse --verify master >/dev/null 2>&1 \\
  && ok "default branch master exists" \\
  || miss "default branch master no longer exists"

# 4. Critical files exist
test -f "ZBLibrary/src/main/java/zuo/biao/library/base/BaseActivity.java" \\
  && ok "ZBLibrary/src/main/java/zuo/biao/library/base/BaseActivity.java" \\
  || miss "missing critical file: ZBLibrary/src/main/java/zuo/biao/library/base/BaseActivity.java"
test -f "ZBLibrary/src/main/java/zuo/biao/library/interfaces/Presenter.java" \\
  && ok "ZBLibrary/src/main/java/zuo/biao/library/interfaces/Presenter.java" \\
  || miss "missing critical file: ZBLibrary/src/main/java/zuo/biao/library/interfaces/Presenter.java"
test -f "ZBLibrary/src/main/java/zuo/biao/library/manager/HttpManager.java" \\
  && ok "ZBLibrary/src/main/java/zuo/biao/library/manager/HttpManager.java" \\
  || miss "missing critical file: ZBLibrary/src/main/java/zuo/biao/library/manager/HttpManager.java"
test -f "ZBLibrary/src/main/java/zuo/biao/library/manager/CacheManager.java" \\
  && ok "ZBLibrary/src/main/java/zuo/biao/library/manager/CacheManager.java" \\
  || miss "missing critical file: ZBLibrary/src/main/java/zuo/biao/library/manager/CacheManager.java"
test -f "ZBLibrary/src/main/java/zuo/biao/library/base/BaseAdapter.java" \\
  && ok "ZBLibrary/src/main/java/zuo/biao/library/base/BaseAdapter.java" \\
  || miss "missing critical file: ZBLibrary/src/main/java/zuo/biao/library/base/BaseAdapter.java"

# 5. Repo recency
days_since_last=$(( ( $(date +%s) - $(git log -1 --format=%at 2>/dev/null || echo 0) ) / 86400 ))
if [ "$days_since_last" -le 70 ]; then
  ok "last commit was $days_since_last days ago (artifact saw ~40d)"
else
  miss "last commit was $days_since_last days ago — artifact may be stale"
fi

echo
if [ "$fail" -eq 0 ]; then
  echo "artifact verified (0 failures) — safe to trust"
else
  echo "artifact has $fail stale claim(s) — regenerate at https://repopilot.app/r/TommyLemon/Android-ZBLibrary"
  exit 1
fi

Each check prints ok: or FAIL:. The script exits non-zero if anything failed, so it composes cleanly into agent loops (./verify.sh || regenerate-and-retry).

</details>

TL;DR

Android-ZBLibrary is an MVP (Model-View-Presenter) rapid development framework that provides pre-built base classes, UI components, and utility libraries for Android apps. It bundles OKHttp for networking, Glide for image loading, ZXing for QR code scanning, and 100+ pre-configured styles—eliminating boilerplate code for common patterns like HTTP list views, caching, and gesture handling. Dual-module structure: ZBLibrary/ is the core framework library with base classes (BaseView, BaseHttpListActivity, Entry<K,V> model), utilities, styles, and HTTP/image abstractions; QRCodeLibrary/ is a companion module wrapping ZXing with camera management (CameraManager, CaptureActivity), decoding handlers (DecodeHandler, DecodeThread), and encoding. Both are Android Library modules (build.gradle with com.android.library plugin).

👥Who it's for

Android developers in China building production apps who need to ship faster with battle-tested MVP patterns, pre-built list/HTTP components (BaseHttpListActivity), and comprehensive Chinese documentation. Particularly suited for teams building multiple similar apps who want a consistent codebase standard (View, Data, Event).

🌱Maturity & risk

Mature and actively maintained: the repo is a well-established Chinese open-source framework with extensive examples, detailed inline comments, and stable dependencies (compileSdkVersion 30, minSdkVersion 19 for broad compatibility). GitHub Actions CI is configured (gradle.yml workflow). However, the codebase appears primarily single-authored (TommyLemon) and the latest visible activity markers are indirect—commit recency data is not explicit in provided metadata, so assume ongoing but not bleeding-edge development.

Low-to-moderate risk: dependencies are lightweight and stable (androidx.appcompat, OKHttp, Glide, ZXing) with no lockfile visible. Main risk is single-maintainer dependency on TommyLemon; the Chinese-centric documentation may slow adoption outside China. No visible security audit history or modern Android security patterns (ProGuard config present but no modern obfuscation rules detailed). The ZXing QR library (libs/zxing.jar) is a pre-compiled JAR without source control visibility.

Active areas of work

Active maintenance with GitHub Actions CI configured. The codebase maintains support for modern Android (targetSdkVersion 30) and AndroidX (androidx.appcompat, androidx.test.*). No specific PR or milestone data is visible in metadata, but the stable dependency versions and passing CI suggest steady maintenance rather than active feature work.

🚀Get running

Clone and build with Gradle: git clone https://github.com/TommyLemon/Android-ZBLibrary.git && cd Android-ZBLibrary && ./gradlew build. Open in Android Studio (requires SDK 30, minSdkVersion 19+). The framework is a library module; import into your project via JitPack: add implementation 'com.github.TommyLemon:Android-ZBLibrary:VERSION' in build.gradle.

Daily commands: This is a library, not an executable app. To develop it: (1) Import ZBLibrary/ and QRCodeLibrary/ modules into Android Studio; (2) Build via Gradle: ./gradlew assembleRelease or ./gradlew assembleDebug; (3) Run tests: ./gradlew test (though test coverage is minimal per provided metadata). To use it: add as a dependency in another Android project and extend BaseHttpListActivity or BaseView.

🗺️Map of the codebase

  • ZBLibrary/src/main/java/zuo/biao/library/base/BaseActivity.java — Core MVP Activity base class that all activities inherit from; handles lifecycle, presenter binding, and view initialization patterns
  • ZBLibrary/src/main/java/zuo/biao/library/interfaces/Presenter.java — Root presenter interface defining the MVP contract; all business logic presenters implement this abstraction
  • ZBLibrary/src/main/java/zuo/biao/library/manager/HttpManager.java — Centralized HTTP request handler using OKHttp; responsible for all network operations and response parsing
  • ZBLibrary/src/main/java/zuo/biao/library/manager/CacheManager.java — Auto-caching system that persists HTTP responses and model data; eliminates boilerplate cache logic across the app
  • ZBLibrary/src/main/java/zuo/biao/library/base/BaseAdapter.java — Reusable ListView/RecyclerView adapter base class with item binding and callback patterns to reduce adapter code duplication
  • ZBLibrary/src/main/java/zuo/biao/library/base/BaseView.java — Custom View base class simplifying view creation with lifecycle hooks and presenter integration for complex UI components
  • QRCodeLibrary/src/main/java/com/zxing/activity/CaptureActivity.java — QR code scanning entry point using ZXing library; demonstrates camera integration and decoding pipeline pattern

🛠️How to make changes

Add a new HTTP-powered List Screen

  1. Create a new Activity extending BaseHttpListActivity or BaseHttpRecyclerActivity (ZBLibrary/src/main/java/zuo/biao/library/base/BaseHttpListActivity.java)
  2. Create a Presenter implementing ActivityPresenter to handle HTTP requests via HttpManager (ZBLibrary/src/main/java/zuo/biao/library/interfaces/ActivityPresenter.java)
  3. Extend BaseAdapter and implement item binding logic with the new data model (ZBLibrary/src/main/java/zuo/biao/library/base/BaseAdapter.java)
  4. Wire presenter into Activity.onCreate() and implement OnHttpResponseListener callback (ZBLibrary/src/main/java/zuo/biao/library/interfaces/OnHttpResponseListener.java)

Add a custom UI component with MVP support

  1. Create a new class extending BaseView to inherit lifecycle and presenter hooks (ZBLibrary/src/main/java/zuo/biao/library/base/BaseView.java)
  2. Implement initView() and initData() methods to set up UI and bind presenters (ZBLibrary/src/main/java/zuo/biao/library/base/BaseView.java)
  3. Create a ViewPresenter interface if the component needs business logic callbacks (ZBLibrary/src/main/java/zuo/biao/library/interfaces/ViewPresenter.java)
  4. Add the custom view to layouts and instantiate with context in parent Activity/View (ZBLibrary/src/main/java/zuo/biao/library/base/BaseView.java)

Integrate a new API endpoint with auto-caching

  1. Call HttpManager.request() from your Presenter with the API URL and parameters (ZBLibrary/src/main/java/zuo/biao/library/manager/HttpManager.java)
  2. Implement OnHttpResponseListener to parse the JSON response into your model objects (ZBLibrary/src/main/java/zuo/biao/library/interfaces/OnHttpResponseListener.java)
  3. CacheManager automatically persists responses; on retry it checks cache first (transparent to caller) (ZBLibrary/src/main/java/zuo/biao/library/manager/CacheManager.java)
  4. Return cached data to the View via the Presenter callback to enable offline-first UX (ZBLibrary/src/main/java/zuo/biao/library/manager/CacheManager.java)

Add QR code scanning to an Activity

  1. Create a button or menu item that launches CaptureActivity with startActivityForResult() (QRCodeLibrary/src/main/java/com/zxing/activity/CaptureActivity.java)
  2. Override onActivityResult() to receive the scanned QR code string from EXTRA_RESULT_CONTENT (QRCodeLibrary/src/main/java/com/zxing/activity/CaptureActivity.java)
  3. Parse the QR content and pass it to your Presenter for further processing (ZBLibrary/src/main/java/zuo/biao/library/interfaces/ActivityPresenter.java)

🔧Why these technologies

  • MVP (Model-View-Presenter) pattern — undefined

🪤Traps & gotchas

(1) ZXing QR library is a pre-compiled JAR (QRCodeLibrary/libs/zxing.jar) with no source—debugging QR-specific issues requires decompilation or reliance on ZXing docs. (2) The framework assumes OKHttp and Glide are wired up by the consuming app; BaseHttpListActivity expects these to be available globally (check HttpManager initialization). (3) Styles in styles.xml rely on Material Design colors defined in colors.xml (QRCodeLibrary/src/main/res/values/colors.xml and ZBLibrary equivalent)—missing color definitions cause crashes. (4) ProGuard rules (proguard-rules.pro in both modules) must be merged correctly into consuming app or reflection in OKHttp/Glide will break in release builds. (5) No explicit documentation on minimum Gradle version, but build.gradle implies Gradle 2.10+; newer Android Studio may require gradlew wrapper sync.

🏗️Architecture

💡Concepts to learn

  • MVP (Model-View-Presenter) Architecture — ZBLibrary enforces MVP as its core pattern; understanding separation of View (UI), Presenter (logic), and Model (data) is essential to using BaseView and BaseHttpListActivity correctly
  • OKHttp Interceptor Chain — ZBLibrary wraps OKHttp's interceptor pattern in HttpManager (self-signed HTTPS support, request logging); knowing how interceptors work is critical for customizing network behavior
  • Android Camera Lifecycle & Frame Callbacks — QRCodeLibrary's CameraManager and PreviewCallback implement Camera API frame delivery; understanding Camera onPreviewFrame is necessary to extend QR scanning or add custom frame processing
  • Thread-Safe Message Passing (Handler/Looper) — DecodeThread in QRCodeLibrary uses Handler/Looper to pass decoded results back to the UI thread safely; essential to understanding async QR decoding and avoiding ANRs
  • ProGuard Obfuscation & Reflection — ZBLibrary includes ProGuard rules (proguard-rules.pro) to preserve OKHttp/Glide reflection during minification; understanding ProGuard is critical for release builds and avoiding method/field lookup failures
  • Android Material Design Theming — styles.xml provides 100+ Material-based styles; understanding Material theme attributes (colorPrimary, colorAccent, etc.) is key to customizing app-wide UI without touching code
  • Glide Image Loading & Caching Strategy — ZBLibrary abstracts Glide for image caching; knowing Glide's MemoryCache, DiskCache, and RequestOptions is essential to tuning image performance in list views
  • square/okhttp — ZBLibrary wraps and depends on OKHttp3 for all HTTP/HTTPS networking; understanding OKHttp internals helps debug HttpManager
  • bumptech/glide — ZBLibrary integrates Glide for image loading; Glide is used by BaseView and other components for efficient image caching
  • zxing/zxing — ZBLibrary's QRCodeLibrary wraps ZXing; the parent repo contains the original QR decoding engine and camera integration patterns
  • TommyLemon/APIJSON — Companion project by the same author; APIJSONApp.apk demo showcases ZBLibrary + APIJSON for rapid REST API integration
  • google/material-components-android — ZBLibrary's 100+ styles are Material Design-based; Google's MDC library is the canonical reference for Material components and theming

🪄PR ideas

To work on one of these in Claude Code or Cursor, paste: Implement the "<title>" PR idea from CLAUDE.md, working through the checklist as the task list.

Add comprehensive unit tests for BaseActivity and BaseFragment lifecycle management

The repository contains extensive base classes (BaseActivity.java, BaseFragment.java, BaseHttpListActivity.java, etc.) but no test directory is visible in the file structure. These base classes are critical to the MVP framework and handle complex lifecycle operations. Adding unit tests would ensure reliability across the framework and serve as documentation for contributors on how to properly extend these classes.

  • [ ] Create ZBLibrary/src/test/java/zuo/biao/library/base/ directory structure
  • [ ] Add unit tests for BaseActivity lifecycle methods (onCreate, onResume, onPause, onDestroy)
  • [ ] Add unit tests for BaseFragment lifecycle and view binding
  • [ ] Add instrumented tests in ZBLibrary/src/androidTest for UI components like BaseBottomTabActivity
  • [ ] Configure testImplementation dependencies in build.gradle (Robolectric, Mockito, JUnit)

Add GitHub Actions workflow for automated library publishing to JitPack

The README shows a JitPack badge (jitpack.io) indicating the library is published there, but the existing .github/workflows/gradle.yml only has basic build configuration. Adding a dedicated release workflow would automate the publishing process, ensure consistent versioning, and make releases more reliable. This is especially important for a widely-used MVP framework where contributors may create releases.

  • [ ] Examine current .github/workflows/gradle.yml to understand existing CI setup
  • [ ] Create .github/workflows/publish-release.yml that triggers on git tags (e.g., v*..)
  • [ ] Add steps to build library, run tests, and push release to JitPack via gradle task
  • [ ] Document release process in README.md (how to create tags and trigger publishing)
  • [ ] Add build status badge to README for release workflow

Add integration tests for QRCodeLibrary camera and decoding functionality

The QRCodeLibrary module contains complex camera management (CameraManager, CameraConfigurationManager), threading (DecodeThread, DecodeHandler), and UI components (ViewfinderView) but lacks visible test coverage. These components are device-dependent and prone to bugs across Android versions. Adding instrumented tests would validate camera initialization, decode operations, and viewfinder rendering.

  • [ ] Create QRCodeLibrary/src/androidTest/java/com/zxing/ directory structure
  • [ ] Add instrumented tests for CameraManager initialization and configuration across different Android API levels
  • [ ] Add tests for DecodeHandler and DecodeThread message passing and QR code decoding
  • [ ] Add tests for ViewfinderView rendering and result point callback
  • [ ] Configure androidTestImplementation dependencies (Espresso, Android Test Runner)
  • [ ] Document how to run camera tests on emulator vs real device in CONTRIBUTING.md

🌿Good first issues

  • Add unit test coverage for BaseHttpListActivity pagination logic (ZBLibrary/src/main/java/zuo/biao/library/base/BaseHttpListActivity.java)—currently only testInstrumentationRunner is configured but no actual tests are listed in metadata; write tests for cache invalidation and list refresh.
  • Create English-language doc stubs in a /docs folder mapping Chinese README concepts to code examples—the README is in Chinese; non-Chinese speakers cannot quickly map features (e.g., '沉浸状态栏' = immersive status bar) to the corresponding utility classes.
  • Upgrade ZXing QR decoding from pre-compiled JAR (libs/zxing.jar) to gradle dependency (com.google.zxing:core:3.5.x)—this would improve dependency transparency, enable debugging, and allow easier version bumps without re-downloading JARs.

Top contributors

Click to expand

📝Recent commits

Click to expand
  • fb22d47 — 生态项目新增 UIGOX - 📱 零代码快准稳 UI 智能录制回放平台 🚀 3 像素内自动精准定位,2 毫秒内自动精准等待 (TommyLemon)
  • 3346156 — 生态项目新增 CVAuto - 👁 零代码零标注 CV AI 自动化测试平台:https://github.com/TommyLemon/CVAuto (TommyLemon)
  • 6e9cd69 — 新增提交安全漏洞的 WhiteHub 平台入口,感谢 WhiteHub 邀请入驻:https://whitehub.net/programs/zblibrary (TommyLemon)
  • 495a6b5 — 新增 AI 问答,感谢 DeepWiki 及 Devin AI 开发者: https://deepwiki.com/TommyLemon/Android-ZBLibrary (TommyLemon)
  • d0aee31 — 登记 华为开源鸿蒙 OS 版 ohos-ZBLibrary (TommyLemon)
  • 42fa2cf — 腾讯 华为 字节 阿里 美团 等 和 Google, Microsoft, Amazon, SAMSUNG 等各大知名大厂员工点了 Star,感谢大家的支持~ (TommyLemon)
  • 5df7e24 — 其它项目新增 UIGO - 📱 零代码快准稳 UI 智能录制回放平台 🚀 (TommyLemon)
  • 1e9ba8a — 移除未使用的 import (TommyLemon)
  • e03174a — WebView 默认支持缩放网页 (TommyLemon)
  • 4d48ae3 — WebView 默认支持自动横屏 (TommyLemon)

🔒Security observations

The codebase has significant security concerns

  • High · Outdated AppCompat Dependency — ZBLibrary/build.gradle and QRCodeLibrary/build.gradle. The project uses androidx.appcompat:appcompat:1.0.2, which is severely outdated (released in 2018). This version contains multiple known security vulnerabilities and compatibility issues. Current stable versions are 1.6.x+. Fix: Update to the latest stable version: implementation 'androidx.appcompat:appcompat:1.6.1' or higher
  • High · Outdated Test Dependencies — ZBLibrary/build.gradle. junit:junit:4.12 (2014), androidx.test:runner:1.1.1 (2018), and androidx.test.espresso:espresso-core:3.1.1 (2018) are all significantly outdated. These versions may contain unpatched security vulnerabilities. Fix: Update to current versions: junit:junit:4.13.2, androidx.test:runner:1.5.2, androidx.test.espresso:espresso-core:3.5.1
  • Medium · ProGuard Obfuscation Not Enabled in Debug — ZBLibrary/build.gradle, QRCodeLibrary/build.gradle. minifyEnabled is set to false in release builds, and there's no minification configuration shown for debug builds. This exposes source code to reverse engineering and makes exploitation easier. Fix: Enable minification in release builds and consider enabling it for debug builds as well. Ensure proguard-rules.pro contains proper obfuscation rules.
  • Medium · Permissive File Tree Dependency Resolution — ZBLibrary/build.gradle, QRCodeLibrary/build.gradle. The build.gradle uses 'implementation fileTree(dir: 'libs', include: ['*.jar'])' which automatically includes all JAR files in the libs directory without explicit version pinning. This can lead to supply chain attacks if malicious JARs are added. Fix: Replace with explicit dependency declarations. If JAR files must be included, maintain a signed checksum manifest and implement integrity verification.
  • Medium · Embedded Zxing Library Without Version Management — QRCodeLibrary/libs/zxing.jar. QRCodeLibrary/libs/zxing.jar is bundled as a JAR file without version information or source control. The zxing.jar version is unknown, potentially containing vulnerabilities. Current ZXing versions should be used. Fix: Replace with Maven dependency: implementation 'com.journeyapps:zxing-android-embedded:4.3.0' or use the latest stable ZXing library version from Maven Central
  • Low · Missing Security Headers Configuration — ZBLibrary/src/main/AndroidManifest.xml, QRCodeLibrary/src/main/AndroidManifest.xml. No security headers configuration visible in AndroidManifest.xml or network security configuration. Applications should enforce certificate pinning and disable cleartext traffic. Fix: Create network_security_config.xml with enforced HTTPS and optional certificate pinning. Reference it in AndroidManifest.xml with android:networkSecurityConfig attribute
  • Low · No Apparent Input Validation Framework — ZBLibrary/src/main/java/zuo/biao/library/base/. While not visible in partial structure, the framework provides BaseActivity and BaseFragment classes. Without explicit validation utilities documented, there's risk of input validation vulnerabilities. Fix: Implement centralized input validation utilities. Validate all user inputs, API responses, and data from external sources before use
  • Low · Camera Permissions in QR Code Module — QRCodeLibrary/src/main/java/com/zxing/camera/. QRCodeLibrary integrates camera functionality (CameraManager, CaptureActivity). Ensure proper permission handling and runtime permission requests for Android 6.0+ Fix: Verify AndroidManifest.xml has proper CAMERA permission declarations and that the app implements runtime permission requests using ActivityCompat.requestPermissions()

LLM-derived; treat as a starting point, not a security audit.


Generated by RepoPilot. Verdict based on maintenance signals — see the live page for receipts. Re-run on a new commit to refresh.

Healthy signals · TommyLemon/Android-ZBLibrary — RepoPilot