Tüm açık kaynak paketler
AraçlarSwift

sizeledger

Bir iOS uygulamasının her megabaytının nereden geldiğini gösterir: kategori, framework, asset catalog, dil ve mimariye göre.

1YıldızSon Sürüm: v0.1.10 · Güncellendi: 21 Ekim 2026
Platformlar:macOS 13+Linux (x86_64, arm64)

Lisans: MIT

Testler: 159Ölçüm:

Nasıl ölçüldü

swift test in a fresh clone at tag v0.1.10 on a Mac (Apple silicon, Apple M5 Max, macOS 27.0.1), Swift 6.4: 159 tests (134 SizeLedgerKit, 25 CLI), 158 passed and 1 skipped because it needs a non-UTF-8 file name and runs on Linux only

Özet

  • sizeledger bir .ipa, .app ya da .xcarchive okur ve byte'larını kategori, framework, dil ve CPU mimarisine göre gösterir.
  • Yalnızca dosya okur; uygulamayı derlemez, çalıştırmaz, yüklemez ya da değiştirmez ve macOS ile Linux'ta aynı raporu verir.
  • Üç boyutu ayrı tutar: dosyaların toplamı, 4 KiB bloklarla kurulum tahmini ve .ipa içindeki sıkıştırılmış boyut.
  • ZIP okuyucu, DEFLATE çözücü ve Mach-O ayrıştırıcı Swift ile yazıldı; bu yüzden SizeLedgerKit kütüphanesinin bağımlılığı yok.
  • App Store indirme boyutunu vermez; diff ve budget komutları 0.1.10 itibarıyla planlanmış durumda, henüz yayında değil.

sizeledger'a bir .ipa, .app ya da .xcarchive verdiğinizde uygulamanın byte'larının nerede olduğunu gösterir: kategoriye, framework ve kaynağa, dile ve CPU mimarisine göre. Üç boyutu ayrı tutar (dosyaların toplamı, tam 4 KiB bloklarla bir kurulum boyutu tahmini ve .ipa için sıkıştırılmış boyut) ve App Store'un indirme boyutunu bildiğini iddia etmez. Kendi ZIP, DEFLATE ve Mach-O okuyucularıyla yalnızca dosyaları okur; hiçbir şeyi derlemez, çalıştırmaz, yüklemez ya da değiştirmez ve macOS'ta da Linux'ta da aynı çalışır. SizeLedgerKit aynı raporu Swift programlarına verir.

Özellikler

  • Tüm uygulama için tek tablo: ana çalıştırılabilir dosya, framework ve dylib'ler, app extension'lar, App Clip'ler, watch uygulaması, yerelleştirmeler, asset catalog'lar, kod imzası ve geri kalan her şey; kategoriler her zaman toplamı verir
  • Her framework ve extension ayrı satırda; her .lproj dili uygulama ve framework'leri genelinde toplanır
  • Her binary'nin mimari slice'ları: hangi binary'lerin universal olduğu ve her slice'ın ne kadar yer kapladığı; JSON'da segment boyutları ve Swift metadata
  • Ayrı tutulan üç boyut: dosyaların toplamı, tam 4 KiB bloklarla kurulum boyutu tahmini ve .ipa için sıkıştırılmış boyut
  • Terminal tablosu, pull request ya da job summary için Markdown ve anahtar sırası sabit bir JSON raporu
  • Girdi güvenilmez kabul edilir: dosya sayısı, derinlik, bildirilen byte ve sıkıştırma oranı için sınırlar; çıktıda terminal kaçışları, çift yönlü override'lar ve görünmeyen karakterler değiştirilir
  • SizeLedgerKit: DocC belgeli, bağımlılığı olmayan bir Swift kütüphanesi; ZIP okuyucu, DEFLATE çözücü ve Mach-O ayrıştırıcı içinde

Hızlı Başlangıç

sh
1sizeledger analyze path/to/MyApp.ipa

Kurulum

Homebrew (macOS, Linux)

sh
1brew install muhittincamdali/tap/sizeledger

From source

sh
1git clone https://github.com/muhittincamdali/sizeledger.git && cd sizeledger && swift build -c release

Swift package (product SizeLedgerKit)

swift
1.package(url: "https://github.com/muhittincamdali/sizeledger", from: "0.1.10")

Ekran Görüntüleri

SampleShop 2.0 üzerinde sizeledger analyze: 21 dosyada 8,75 MB, 8,80 MB kurulum tahmini, 2,72 MB sıkıştırılmış; catalog.json uygulamanın %70,8'i, Assets.car %18,1'i; yedi dil; üç universal binary
Testlerin ölçtüğü fixture uygulaması SampleShop 2.0, iOS 27 Simulator'da çalışırken

Zaman Çizelgesi

  1. Repo açıldı ve 0.1.0 yayınlandı: sizeledger analyze ve kendi ZIP, DEFLATE ve Mach-O okuyucularıyla SizeLedgerKit kütüphanesi

  2. 0.1.1–0.1.5: dokuz dilde README, sınırlı Mach-O başlık okuma, .xcarchive içindeki sembolik bağlantıların reddi ve özel hazırlanmış girdi için sınırlar (--max-files, --max-bytes, --max-ratio, --max-depth)

  3. 0.1.6–0.1.8: Sanitize.text public oldu, çıktıda daha fazla görünmeyen karakter değiştiriliyor, yollar byte'ları üzerinden bölünüp karşılaştırılıyor

  4. 0.1.9 ve 0.1.10: üst üste binen .ipa girdileri hasarlı sayılıp reddediliyor, --out artık dosyaya giden bağlantılardan yazmıyor ve yeni --force bayrağı

Bağlantılar

İlgili Yazı

Yazıyı Oku