الإنجليزية | 简体中文
WBBlades عبارة عن مجموعة أدوات تعتمد على تحليل ملفات Mach-O
، بما في ذلك الكشف عن التطبيق بنقرة واحدة (يدعم OC
و Swift
)، وتحليل حجم الحزمة (يدعم مكتبة ثابتة/مكتبة ديناميكية واحدة)، وتحليل الأعطال من نقطة إلى نقطة (استنادًا إلى في سجلات النظام، ويدعم تحليل مكدس الأعطال لمنصة Huawei وBugly، ويدعم الحالات الموقعة وغير الموقعة)، والاستخراج التلقائي للفئة وإمكانية الربط استنادًا إلى ملف Mach-O. يستخدم بشكل أساسي تحليل كود تجميع النص __، واستخراج البنية، وتجريد ملفات DYSM، وتجريد جدول الرموز، وتقنية تحليل ملفات الأعطال (ips). دعم تحليل الطريقة الكبيرة/الطريقة الصغيرة ونظام iOS 15 أعلاه حول معالجة dyld_chained_Fixups. من أجل تسهيل فهم المستخدمين لمشروع WBBlades بسرعة، فإننا نقدم ميزة Readme ذكية تعتمد على GPT.
اسم الأداة | نظرة عامة على الوظيفة | التقنيات ذات الصلة |
---|---|---|
التمهيدي الذكي | يسهل تنسيق الأسئلة والأجوبة التفاعلي الفهم السريع لمشروع WBBlades والتقنيات ذات الصلة. | دردشة جي بي تي |
الكشف بنقرة واحدة عن التطبيق | اكتشاف الفئات غير المفيدة من خلال Swift & OC، واكتشاف الموارد غير المفيدة، واقتراحات تحسين تقليص حجم الحزمة. | التفكيك، __استخراج تعليمات النص، تحليل Mach-O، جدول الرموز وبنية فئة Swift في Mach-O |
تحليل حجم الحزمة | اكتشاف الحجم الفعلي الذي تشغله المكتبات الثابتة والديناميكية في ملف .ipa. | تجريد العمارة، تحليل هيكل المكتبة الثابتة |
تحليل الأعطال | استخدم .app أو dYSM لتحليل سجلات أعطال النظام، ودعم تحليل مكدس الأعطال على منصات Huawei وBugly | تحليل ملف DYSM، استخراج جدول الرموز خفيف الوزن، تحليل ملف ips، مع / بدون تحليل أعطال جدول الرموز |
خطاف Mach-O Class | قم باستخراج الفئات تلقائيًا من أي ملف Mach-O، ثم قم بربطها. | dyld_ chained_ عمليات الإصلاح والربط وإعادة التأسيس والتحليل الكبير/الصغير |
ينفذ الإصدار الجديد تنفيذًا مرئيًا شاملاً لمجموعة الأدوات استنادًا إلى التشغيل الأصلي القائم على سطر الأوامر للأدوات المذكورة أعلاه، وهو مصمم لتحسين كفاءة البحث والتطوير. بالإضافة إلى ذلك، في تحليل الأعطال الصعبة، بالنسبة لبعض الأعطال التي ليس من السهل إعادة إنتاجها ولا يمكن جمعها بواسطة أدوات عامة (يتم قتل عملية التطبيق مباشرة بواسطة نظام التشغيل)، يتم توفير تحليل الأعطال من نقطة إلى نقطة.
$ git clone https://github.com/wuba/WBBlades.git
$ cd WBBlades
$ pod install
الهدف يختار "WBBladesCrashApp".
يتم عرض أداة التصور WBBlades أدناه. انقر فوق الزر الموجود في منطقة الوظيفة اليسرى، وحدد أداة مثل اكتشاف الفئات عديمة الفائدة، وتحليل حجم التطبيق، وما إلى ذلك، وقم بالعمل وفقًا للمطالبات الموجودة في الأداة، وسيتم إخراج النتيجة إلى مربع النص؛
مقدمة تفصيلية لأداة التصور: مقدمة تفصيلية لأداة التصور
الهدف يحدد "WBBlades"، قم بتجميعها وإنشاءها لإنشاء أدوات سطر الأوامر، انسخ "شفرات" المنتج التي تم إنشاؤها إلى /usr/local/bin، على النحو التالي: sudo cp ${Your_BUILD_DIR}/blades /usr/local/bin
الكشف بنقرة واحدة
$ blades -diagnose xxx.app
الكشف بنقرة واحدة عن الفئات غير المفيدة والموارد غير المفيدة والموارد المكررة وما إلى ذلك.
اكتشاف التعليمات البرمجية غير المستخدمة ObjC وSwift
$ blades -unused xxx.app -from xxx.a xxx.a ....
-من الإشارة إلى أنه يتم تحليل التعليمات البرمجية غير المستخدمة في المكتبات الثابتة التالية فقط. بدون هذه المعلمة، يكون الإعداد الافتراضي هو كافة الفئات في التطبيق.
تحليل حجم التطبيق (قم بقياس حجم .a أو .framework مباشرة بعد الربط)
$ blades -size xxx.a xxx.framework ....
دعم إدخال مسار المجلد، سيتم تحليل جميع المكتبات الثابتة الموجودة ضمن المجلد.
استرداد السجل بدون ملف dSYM (في حالة فقدان ملف dSYM، حاول ترميز مكدس الأعطال ObjC
، Swift
غير مدعوم)
$ blades -symbol xxx.app -logPath xxx.ips
وصف | يدعم | مثال الكود |
---|---|---|
استدعاء ثابت لفئات ObjC | ✅ | [MyClass new] |
الاستدعاء الديناميكي لفئات ObjC | ✅ | NSClassFromString(@"MyClass") |
استدعاء ObjC الديناميكي من خلال تسلسل السلسلة | NSClassFromString(@"My" + @"Class") | |
طريقة تحميل ObjC | ✅ | +load{...} |
يتم توريث ObjC وSwift | ✅ | SomClass : MyClass |
ObjC وSwift هي خصائص | ✅ | @property (strong,atomic) MyClass *obj; |
مكالمة مباشرة من فئة سويفت | ✅ | MyClass.init() |
مكالمة سريعة باستخدام وقت التشغيل | ✅ | objc_getClass("Demo.MyClass") |
المعلمات العامة السريعة | ✅ | SomeClass<MyClass>.init() |
استدعاء ديناميكي لفئة Swfit في ObjC | ✅ | NSClassFromString("Demo.MyClass") |
إعلان نوع سويفت في الحاوية | var array:[MyClass] | |
التعشيش المتعدد السريع | ✅ | class SomeClass {class MyClass {...} ...} |
يدعم الكشف السريع عن الحجم المرتبط للمكتبة الثابتة. لا حاجة لتجميع والربط. على سبيل المثال: إذا كنت تريد معرفة مقدار حجم التطبيق الذي سيزيد عند استيراد SDK أو تحديثه، فيمكنك استخدام blades -size
لتقدير الحجم ، دون الحاجة إلى توصيل SDK للتجميع والارتباط بنجاح للحساب.
في حالة فقدان ملف dSYM، حاول استعادة السجل عبر blades -symbol
. **على سبيل المثال، في حزمة التطبيق، يتم مسح ملف dSYM بعد فترة من الوقت، ولكن يتم الاحتفاظ بملف التطبيق. في هذه الحالة، يمكنك التفكير في استخدام الشفرات للترميز. **قبل استخدام الأداة، انتبه إلى بعض النقاط:
إذا كان تطبيقك عبارة عن حزمة تصحيح أخطاء أو حزمة لا تزيل جدول الرموز، فيمكنك استخدام dsymutil app -o xx.dSYM
لاستخراج جدول الرموز. ثم استخدم جدول الرموز لترمز إلى السجل.
تدعم هذه الأداة ObjC فقط، ومبدأها هو تحديد وظيفة التعطل من خلال تحليل عنوان طريقة ObjC في Mach-O. ولذلك، فهو غير مناسب لـ Swfit وC وC++. بالإضافة إلى ذلك، فإن الأدوات ليست ذات قدرة مطلقة، وتستخدم فقط كوسيلة تقنية تكميلية في حالات الطوارئ. في المواقف اليومية، يوصى باستخدام جداول الرموز لترميز السجل.
نأمل مخلصين أن يتمكن المطورون من تقديم تعليقات واقتراحات قيمة، ويمكن للمطورين تقديم تعليقات حول الاقتراحات والمشكلات عن طريق إرسال العلاقات العامة أو المشكلة.
إذا كنت مهتمًا بـ WBBlades، فيمكنك الانضمام إلى مجموعة تطوير WBBlades ومناقشة المشكلات الفنية معًا. يرجى إضافة حساب wechat "zqlong320" أو مسح رمز الاستجابة السريعة أدناه كصديق لك وبعد ذلك سندعوك للانضمام إلى المجموعة.
جيثب: https://github.com/aquynh/capstone
جيثب: https://github.com/Sunnyyoung/SYFlatButton
جيثب: https://github.com/nygard/class-dump
جيثب: https://github.com/alexrozanski/PXListView
جيثب: https://github.com/steventroughtonsmith/cartool
القزم: https://www.prevanders.net/dwarf.html#releases
简体中文 | إنجليزي
تم إطلاق WBBlades Mach-O
، وتم إطلاق تطبيق Mach-O OC
و Swift
. 、包大小分析(支持单个静态库/动态库的包大小分析)،对点崩溃解析(基于系统日志،支持华为وBugly平台崩) لقد قمت بتركيب جهاز Mach-O Class وربط الخطاف. XT هو منتج جديد، ومنتج جديد، وdYSM، وDYSM. حجم كبير (.ips) حجم كبير الطريقة / الطريقة الصغيرة موجودة على iOS 15 يومًا من إصلاحات dyld_chained_fixups. تم تصميم WBBlades بواسطة WBBlades، ويعتمد على التمهيدي GPT.
工具名称 | شكرا جزيلا | شكرا جزيلا |
---|---|---|
التمهيدي | أفضل ما في الأمر هو أن أفضل ما في الأمر هو أن WBBlades هي الأفضل لك | جي بي تي |
التطبيق هو 体检 | سويفت/OC | 、 __ نص النص، Mach-O، 、 __ سويفت، Mach-O 、 、 |
包大小分析 | 检测静态库/动态库在.ipa中占用的实际大小 | أفضل ما في الأمر هو الحصول على أفضل النتائج |
شكرا جزيلا | تم تطوير هذا التطبيق بواسطة dYSM. | dYSM هو جهاز كمبيوتر شخصي، وجهاز كمبيوتر شخصي، وجهاز ips، وجهاز كمبيوتر/جهاز كمبيوتر شخصي. |
ماخ أوه هوك | الخطاف ذو الخطاف ذو الخطاف من Mach-O | dyld_chained_fixups، الربط، rebase، الطريقة الكبيرة/الصغيرة |
قد يكون من الصعب على أي شخص أن يتخيل ما إذا كان هذا هو الحال أم لا. لا داعي للقلق بشأن هذا الأمر. في هذه الحالة، يجب أن تكون قادرًا على الوصول إلى أفضل الأماكن في العالم. هذا هو التطبيق الذي تم تنزيله هنا.
$ git clone https://github.com/wuba/WBBlades.git
$ cd WBBlades
$ pod install
الهدف: WBBladesCrashApp
تم تصميم WBBlades من قبل شركة WBBlades. 、、
可视化工具详细介绍: 可视化工具详细介绍
الهدف: WBBlades، قم بتشغيل الشفرات، قم بتشغيل الشفرات الموجودة على الرابط التالي: sudo cp ${Your_BUILD_DIR}/blades /usr/local/bin
شكرا جزيلا
$ blades -diagnose xxx.app
أفضل ما في الأمر هو أن كل شيء على ما يرام.
无用代码检测OC
& Swift
$ blades -unused xxx.app -from xxx.a xxx.a ....
-من 标识只分析以下静态库中的无用代码،不加此参数默认为APP中全部类
包大小分析 (直接测算.a |.framework链接后的大小)
$ blades -size xxx.a xxx.framework ....
يمكن أن تكون هذه هي المرة الأولى التي يحدث فيها هذا الأمر في أي وقت مضى
يمكن أن يكون هذا هو الحال بالنسبة لـ OC
(يقوم بتسويق Swift
في OC)
$ blades -symbol xxx.app -logPath xxx.ips
说明 | شكرا جزيلا | هذا هو الحال |
---|---|---|
OC هو الحل الأمثل | ✅ | [MyClass new] |
OC 的动态调用 | ✅ | NSClassFromString(@"MyClass") |
OC 字符串拼接动态调用 | NSClassFromString(@"My" + @"Class") | |
قم بتحميل OC | ✅ | +load{...} |
أوك وسويفت 被继承 | ✅ | SomClass : MyClass |
OC & سويفت 作为属性 | ✅ | @property (strong,atomic) MyClass *obj; |
سويفت 类直接调用 | ✅ | MyClass.init() |
سويفت وقت التشغيل | ✅ | objc_getClass("Demo.MyClass") |
سويفت 泛型参数 | ✅ | SomeClass<MyClass>.init() |
Swfit 类在OC中动态调用 | ✅ | NSClassFromString("Demo.MyClass") |
سويفت 容器中作为类型声明 | var array:[MyClass] | |
سويفت 多重嵌套 | ✅ | class SomeClass {class MyClass {...} ...} |
لا داعي للقلق بشأن هذا الأمر. لقد تم إنشاء العديد من blades -size
من خلال تطوير أدوات SDK blades -size
المنتج هو 100%، وهو ما يعني أن SDK هو الأفضل بالنسبة لك.
تم تصميم blades -symbol
dSYM لتصنيع الشفرات blades -symbol
هو التطبيق . هذه هي المرة الأولى التي تقوم فيها شركة WBBlades بحل هذه المشكلة.
dsymutil app -o xx.dSYM
. تم إنشاء dsymutil app -o xx.dSYM
.أفضل ما في الأمر هو أن تكون قادرًا على القيام بذلك يتم حل مشكلة العلاقات العامة في قضية ما بعد البيع والشراء.
تم تصميم WBBlades من أجل الحصول على أفضل النتائج، حيث يمكن أن يكون WBBlades أفضل ما يمكن أن يكون عليه الأمر. تم العثور على "zqlong320" في موقع "WBBlades"، أو "WBBlades".
موقع جيثب: https://github.com/aquynh/capstone
موقع جيثب: https://github.com/Sunnyyoung/SYFlatButton
موقع جيثب: https://github.com/nygard/class-dump
موقع جيثب: https://github.com/alexrozanski/PXListView
موقع جيثب: https://github.com/steventroughtonsmith/cartool
موقع DWARF: https://www.prevanders.net/dwarf.html#releases
جيثب: https://github.com/nygard/class-dump