השבוע קרה לי הסיוט של כל מפתח. ביקשו ממני לערוך אפליקציה שכתבתי, ו… לא מצאתי את קוד המקור. חיפשתי ברחבי המחשב, בכונן החיצוני, בריפוז הפרטיים בגיטהאב… לא מצאתי.
אז מה עושים? כותבים מחדש? מורכב מידי, חוץ מזה שאני יותר אוהב הנדסה לאחור. אבל השינוי שהייתי צריך לעשות לא היה קטן (ואגב ככל שצללתי לתוכו התברר שהוא יותר גדול ממה שחשבתי, אבל לא ידעתי את זה בשלב הזה.)
החלטתי ללכת על גישת ההנדסה לאחור, לערוך ברמת הSMALI. כדי להבין טוב יותר מה קורה בSMALI, משתמשים בכלי בשם JADX שמפרק את הקוד לJAVA (אפשר ללמוד יותר על עריכת APK במאמר הזה שכתבתי.) - אבל הקוד הזה, כמו שידוע לכל מי שמתעסק בתחום, יוצא שבור. הוא יעיל מאוד לצרכי מחקר והבנה של האפליקציה, אבל לא ניתן לקימפול. JADX לא עושה עבודה מושלמת… אלא רחוק מכך. אבל החלטתי לנסות רעיון יצירתי. לקחת את קוד הJAVA שיוצא מJADX, ולנסות להפוך אותו לקוד בר קימפול ושימוש בעזרת AI.
אז… פתחתי את התיקיה עם Antigravity, בחרתי ברשימת המודלים את Claude Sonnet ויצאנו לדרך.
זה דרש כמה סבבים של עריכות, ניסיונות קימפול ובדיקת השגיאות - אבל אחרי כמה ניסייונות בודדים - סביב 4-5 - הקוד התקמפל!
התקנתי את האפליקציה ובדקתי. והיא עובדת נהדר! הממשק קצת השתנה כי בין השאר, גם הResources נשברו בתהליך הדקמופילציה, וSonnet השלים משלו, אבל זה היה מרשים. מכאן המכשתי לעריכות שרציתי…
וואלה, לא ציפיתי שזה יהיה אפשרי. ועוד האפליקציה החדשה שוקלת כ40% פחות ממשקלה המקורי! 🤯
אל תצפו בעזרת זה לבצע הנדסה לאחור יעילה של WhatsApp . אבל וואלה, מרשים. ו”להשיג” את קוד המקור שלה, כן?. מדובר כאן באפליקציה קטנה ופשוטה, שלא עברה שום אובספיקציה.