WBBlades  by wuba

Mobile app analysis toolkit (CLI & GUI) for iOS development

created 5 years ago
1,596 stars

Top 26.8% on sourcepulse

GitHubView on GitHub
Project Summary

WBBlades is a comprehensive toolset for iOS developers focused on optimizing application size and resolving crashes. It provides automated detection of unused Objective-C and Swift code, analysis of static and dynamic library sizes, and point-to-point crash log symbolization, particularly for scenarios where dSYMs are unavailable.

How It Works

The toolset leverages Mach-O file parsing and disassembly techniques. It analyzes __Text assembly code, extracts architecture information, and processes symbol tables and Swift class structures within Mach-O binaries. For crash analysis, it supports system logs and platforms like Huawei and Bugly, with capabilities for both signed and unsigned crash files. It also handles advanced features like dyld_chained_fixups processing for iOS 15+.

Quick Start & Requirements

  • Install via git clone https://github.com/wuba/WBBlades.git and pod install.
  • Command-line tools can be built and copied to /usr/local/bin.
  • A visualization tool is available via the WBBladesCrashApp target.
  • Requires Xcode and CocoaPods.

Highlighted Details

  • Detects unused Objective-C and Swift classes, including static/dynamic calls and inheritance.
  • Analyzes the linked size of static libraries without requiring recompilation.
  • Supports Objective-C crash log symbolization even without dSYM files.
  • Offers a visual interface for easier operation and analysis.

Maintenance & Community

The project encourages contributions via PRs and Issues. A WeChat group is available for technical discussions; contact zqlong320 to join.

Licensing & Compatibility

The repository lists multiple GitHub dependencies (e.g., capstone, class-dump) but does not explicitly state a license for WBBlades itself. Compatibility for commercial use or closed-source linking is not specified.

Limitations & Caveats

Unused code detection does not support Objective-C dynamic calls via string concatenation or Swift type declarations within containers. Crash symbolization is limited to Objective-C and is considered a supplementary tool, with dSYM symbolization recommended for daily use.

Health Check
Last commit

1 year ago

Responsiveness

Inactive

Pull Requests (30d)
0
Issues (30d)
0
Star History
14 stars in the last 90 days

Explore Similar Projects

Feedback? Help us improve.