Előszó
Az alkalmazás karcsúsítása főleg a telepítőcsomagra vonatkozik, az iOS-ben található telepítőcsomag pedig .ipa végződésű tömörített csomag. Az ipa-n keresztül elemezhetjük. Az ipa kibontása után megszerezheti az .app fájlt, és jobb gombbal kattintva megtekintheti a csomag tartalmát (futtatható fájl, nib, storyboardc, autóforrás-csomag stb.)
A táska fogyókúrája nagyjából a következő kategóriákból indulhat ki:
Forrásszint:
Assets.car: az összes tömörített .xcassets csomag a projektben
kép: Kép erőforrás fájl
Video && Audio: audio vagy video.
Xib && Storyboard: Az Xib és a Storyboard fájlokat állított össze.
Kódszint:
projekt futtatható fájl
Keretek: Beágyazott keretek, a projektben használt dinamikus könyvtárak
Az erőforrásokat fel lehet osztani távoli erőforrásokra (távoli), helyi erőforrásokra (helyi)
Távoli: Helyezze az erőforrásfájlt a szerverre, és szükség szerint töltse le, miután a felhasználó letölti az alkalmazást.
Helyi: Az erőforrásfájl integrálva van a telepítőcsomagba.
Távoli
Az összes nem alapvető erőforrásfájlt elhelyezhetjük a szerveren, és igény szerint betölthetjük őket
Helyi
1. Tömörítse össze a nagy képeket, és tömörítse azokat olyan eszközökkel, mint például a tinypng, amelyeknek a legkevesebb foglaltsággal kell elérniük a legmegfelelőbb hatást.
A képi erőforrások egységes használata. Az Xcassets tömörítést is végez az Ön számára, megtalálja a nagy képet:
2. Ellenőrizze az ismétlődő erőforrásokat, amelyek ugyanazon/hasonló, különböző nevű tartalomra utalnak. Az fdupes eszközzel átkutathatja és megkeresheti a duplikált fájlokat a megadott könyvtárban és alkönyvtárakban. Az fdupes azonosítja a duplikált tartalmat azáltal, hogy összehasonlítja a fájlok MD5 aláírásait és összehasonlítja a fájlok byte-ját
3. Tisztítsa meg a helyi haszontalan erőforrásokat. A haszontalan erőforrások a projektfájl erőforrásaira utalnak, de a kód nem hivatkozik rájuk. A haszontalan és tömörített erőforrások eltávolításával az erőforrások képeket, hang- és videofájlokat tartalmaznak az optimalizáláshoz.
Ellenőrizze a gondolkodásmódot: használja az erőforrás kulcsszavát (általában a fájl nevét, a kép erőforrásának el kell távolítania a @ 2x @ 3x fájlt), keresse meg a kódot (általában az m \ xib \ sb fájl), nem találja Nem idézi.
Itt kell megjegyezni, hogy ha az erőforrás xkasettákban található, akkor a kóddal hivatkozott erőforrásnév nem feltétlenül a kép neve, hanem a imageset utótag mappaneve.
Természetesen egyes erőforrások felhasználás közben összekapcsolódnak (például loading_xxx.png), és manuálisan kell őket szűrni,
Szkript példa (py):
1. Ismételje meg a kódot
Amikor egy projekt folyamatos fejlesztés alatt áll, az üzleti rotáció miatt az iteráció és a funkció-felhalmozás folyamatban van, az újonnan érkezők és más okok miatt az ismétlődő kerekek problémája lehet, ami redundáns kódot eredményez.
Az általános kód ismétlődő ellenőrzése az, hogy ugyanahhoz a kódhoz keresi a kódot a megadott számú vonalon belül. Az ügyfélkód esetében, mivel két platform létezik, az iOS és az Android, figyelembe kell venni az eszköz sokoldalúságát, és támogatnia kell mind az Objective-C, mind a Java programokat.
A fenti okok miatt az utoljára kiválasztott eszköz a PMD-CPD (a PMD's Copy/Paste Detector). Ez az eszköz a Karp-Rabin karakterlánc-illesztő algoritmust használja, támogatja a gui-t, a parancssort, és a kimeneti formátum támogatja a szöveget, az xml-t, a csv-t stb.
- Először töltse le a pmd eszköztárat a hivatalos webhelyről: //sourceforge.net/projects/pmd/files/pmd/ És csomagolja ki
- cd-t a bin könyvtárába, hajtsa végre a ./run.sh cpd --nyelv ObjectiveC --minimum-tokenek
120 --files/Users/xxx/Documents/Project könyvtár
ps: adja meg a kimeneti formátumot
a ./run.sh cpdgu használatával engedélyezem a GUI interfész eszközt
A részletes paraméterhasználatért tekintse meg a hivatalos webhely oktatóanyagát: https: //pmd.sourceforge.io/pmd-5.5.1/usage/cpd-usage.html
PS:
Ezenkívül számos más észlelési eszköz is létezik, például a Simian
2. Keressen haszontalan módszereket
LinkMap
Ha haszontalan választókat szeretne találni, először ismerje meg a LinkMap-ot. A LinkMap fájl az Xcode által a futtatható fájl létrehozása közben generált linkinformáció. A futtatható fájl felépítésének leírására szolgál, beleértve a kódszegmenst (__TEXT) és az adatszegmens elosztását (__DATA). Csak állítsa a Project-> Build Settings-> Link Map File írását YES-re, és állítsa be a Path to Link Map File-t. Az összeállítás után láthatja a LinkMap fájlt a beállított elérési úton.
Minden LinkMap 3 részből áll:
1. Objektumfájlok: Sorolja fel a futtatható fájlban található összes .obj fájlt és az egyes fájlok számát, például [1]
/Users/luph/Library/Developer/Xcode/DerivedData/YYMobile-fpkgufbaoaunujctjgrwtzbylsll/Build/Intermediates.noindex/YYMobile.build/Debug-iphoneos/YYMobile.build/Objects-normal
2. Szekciók: a futtatható fájl szakasztáblázata, amely leírja a futtatható fájl egyes szakaszainak eltolását és méretét. Az első oszlop a szegmens eltolása, a második oszlop a szegmens elfoglalt mérete, Cím (n) = Cím (n-1) + Méret (n-1); a harmadik oszlop a szegmens típusa, a kódszegmens és az adatszegmens; A negyedik oszlop a szegmens neve, például a __text futtatható gépi kód, a __cstring egy string konstans. alábbiak szerint:
- Szimbólumok:
Írja le részletesen az egyes objektfájlok eloszlását az egyes szegmensekben, a második rész szakaszainak sorrendjében, például az YYBootingProtection.o fájlt az 1., + [YYBootingProtection isRepaired] módszerrel a __TEXT fájlban. A .__ szöveges cím 0x100004FE0, és a foglalt méret 36 bájt. Fel kell halmozni az egyes objektumfájlok elfoglalt méretét az egyes szegmensekben a sorozatszámnak megfelelően, ezáltal kiszámítva a futtatható fájlban lévő objektumfájlok elfoglalt méretét, majd kiszámítva az egyes statikus könyvtárak és az egyes funkciómodulok foglaltságát. Itt érdemes megjegyezni, hogy mivel a __DATA .__bbs egy nem inicializált statikus változó, a Size az alkalmazás által futás közben elfoglalt halomméretet jelenti, és nem foglalja el a futtatható fájlt, ezért az obj által elfoglalt méret kiszámításakor ki kell zárnia ennek a szegmensnek a mérete
Haszontalan módszerek az ötletek felderítésére
Korábban a C ++ összekapcsolásakor a nem használt osztályokat és módszereket nem fordították le a futtatható fájlba. De az Objektív-C más. Dinamikus jellege miatt megszerezheti ezt az osztályt és metódust az osztálynév és metódusnév révén, így a fordító a projekt összes OC forrásfájlját lefordítja a futtatható fájlba, még akkor is, ha az osztály és a metódus nem használt.
a LinkMap fájl __TEXT .__ szövegével kombinálva, a [+ | -] \ [\ w + \ w + \] reguláris kifejezéssel, Az objektív osztály összes metódusát és példány metódusát (SelectorsAll) kivonhatjuk az aktuális futtatható fájlból. Ezután használja az otool parancsot otool -v -s __DATA __objc_selrefs a __DATA .__ objc_selrefs szakasz megfordításához, a futtatható fájlban hivatkozott módszer nevének (UsedSelectorsAll) kibontásához, nagyjából elemezhetjük, hogy a SelectorsAll mely metódusaira nem hivatkozunk (SelectorsAll-UsedSelectorsAll),
Beolvasási szkript (py):
3. Haszontalan
4. Egyéb
nyelvválasztás:A Swift nem ajánlott, legyen az tiszta Swift vagy vegyes. Bármely alkalmazás, amely Swift kódot tartalmaz, dinamikus könyvtárgyűjteménnyel rendelkezik, amely támogatja a Swiftet, 10 millió körüli. Ha az Objective-C-t használja, akkor egyáltalán nincs szüksége erre a dologra
- Az egészséges tanulói étkezés segített Grace-nek elveszíteni az 5. - Karcsúsító Világ valós karcsúsító világot
- Csökkenti a szív- és érrendszeri betegségek kockázatát BPI Roxylean zsírégető erős karcsúsító tabletták -
- Egészséges leves receptek - Karcsúsító világ Butternut tök leves Karcsúsító világ
- Mennyibe kerülnek a fogyókúrás klinikák a Keto Infinite Accel fogyókúrás tabletták milliói reményt nyújtanak
- Kombu fogyókúrás készlet - a természet legjobbja