sizeledger
Bir iOS uygulamasının her megabaytının nereden geldiğini gösterir: kategori, framework, asset catalog, dil ve mimariye göre.
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ıç
1sizeledger analyze path/to/MyApp.ipaKurulum
Homebrew (macOS, Linux)
1brew install muhittincamdali/tap/sizeledgerFrom source
1git clone https://github.com/muhittincamdali/sizeledger.git && cd sizeledger && swift build -c releaseSwift package (product SizeLedgerKit)
1.package(url: "https://github.com/muhittincamdali/sizeledger", from: "0.1.10")Ekran Görüntüleri

Zaman Çizelgesi
Repo açıldı ve 0.1.0 yayınlandı: sizeledger analyze ve kendi ZIP, DEFLATE ve Mach-O okuyucularıyla SizeLedgerKit kütüphanesi
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)
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
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ğı