Nasıl Tinder öz APK-ni iki dəfə azaltdı

Əvvəlcə son şeylər: MASSIVE Tinder'in Android mühəndislərinə və Aaron He xüsusi olaraq - dünyada android istifadəçiləri üçün təcrübəni başa düşməyə və inkişaf etdirməyə həsr etdiklərinə görə. Bu şəkildə daha yaxşı üçün mühəndislik haqqında düşünmək üçün xüsusi bir insan tələb olunur və müvəffəqiyyət üçün əngəllər nominal deyildir. Əgər sizin şirkətinizdə Aaron He yoxdursa, deməli sizə ASAP tapmaq üçün müraciət edərdim.

Android komandamız üçün əsas diqqət məhdud şəbəkə və cihaz qaynaqları ilə işləyən istifadəçilərə qarşı olan münasibətə yönəldildi. Bunu nəzərə alsaq, digər uğurlu tətbiqlərlə müqayisədə APK-nın çox şişmiş olduğu aydın oldu - xüsusən də bir çox beynəlxalq / inkişaf etməkdə olan bazarlara münasibətdə. Ən yaxşı ABİ-lərimizi hədəfə alaraq və qurğuları DPI-yə bölməklə doğma kitabxanalarımızın həcmini 85% azaltmağı bacardıq və yalnız APK ölçüsünü yarıya endirdik. Play devol konsolundakı istifadə statistikasına baxıb APK bölünmələrindən istifadə bu araşdırmanı mütləq yox edir.

Aşağıda APK ölçüsünün azaldılması üçün fürsətləri araşdırmağımız, planımızı müəyyənləşdirmək üçün edilən bəzi təhlillər və hər kəsin öz APK-dan böyük qırışları qırxmaq üçün necə gedə biləcəyi barədə məlumat veriləcəkdir.

1. Kəşfiyyat

Başlanğıc vaxtı, yaddaş istifadəsi, şəbəkə istifadəsi, düşmüş çərçivələr və daha çox müştəri tərəfi performans KPI-lərini nəzərdən keçirmək üçün NimbleDroid adlı bir vasitədən istifadə edirik. Bu vəziyyətdə, APK tərkibini nəzərdən keçirmək üçün NimbleDroid və Android Studio'un APK analizatorlarını istifadə etdik - burada tapdıq.

yuxarıda qeyd olunan .arsc faylları

.Arsc fayllarında 6.5MB? Bunlar Android qaynaqları ilə əlaqəlidir - və çox sayda yaradılıb. "Seyrək konfiqurasiyaları" üçün resources.arsc-ı necə yoxlamaq barədə bu dəyərli blog yazıına baxın Hər bir resurs sətirinin hər konfiqurata 700 kb əlavə etməsi mümkündür! Məlum oldu ki, bu, yaxşılaşdırılması üçün geniş bir yerimiz olmadı, lakin araşdırmaq üçün hələ dəyərlidir.

yuxarıda vurğulanan .so faylları

Vay. 15 MB .so fayllarında ?! Bu, səylə optimallaşdırılmış DEX-dən 50% daha böyükdür. Bu fayllar doğma kodu ABI-yə məxsus kompilyasiya ilə əlaqəlidir - və hədəf cihaz arxitekturasında aparılır.

Bunu necə qırxa biləcəyimizi daha çox araşdıraraq ABI və DPI parçalanmalarını həyata keçirmək üçün Android sənədlərinə rast gəldik. Zəhmli, amma nə kəsəcəyimizi necə bilirik? Bu bizi ikinci hissəyə aparır.

2. Təhlil

Əvvəlcə deyim ki, Google Play Konsolu son bir neçə ildə çox uzun bir yol keçdi. Mağazamızın siyahılarını yoxlamadan izləmə və performans statistikasını sənədləşdirməyə qədər olan hər şey üçün alətlərimizdən istifadə edirik. Xüsusilə bu vəziyyət üçün "Buraxılış İdarəetmə" sekmesine gedin və "Cihaz Kataloqu" nu yoxlayın. RAM, istehsalçı, SDK versiyası, ekran ölçüsü, eləcə də ABI & DPI tərəfindən istifadəçi qruplarına baxmaq üçün bu görünüşdən istifadə edə bilərsiniz. Bir neçə dəqiqə ərzində hədəfimizə hansı konfiqurasiyanın qurulacağını anlamaq üçün bazarımızı ABI x DPI matrisinə sürətlə bölüşdürə bildik. Məlum oldu ki, istifadəçilərimizin 97% -i bir ABI-dən istifadə edir və istifadəçilərin böyük əksəriyyəti xhdpi və ya daha yüksək qətnamə ekranlarında. İndi nə kəsilə biləcəyini və xüsusi bir bazarın nə qədər böyük bir xidmət göstərəcəyini bilirik.

ABI Filtri Developer Konsolunda

3. İcra

Yuxarıda göstərilən məlumatlar və APK ölçüsünün yükləmə nisbətində əsas həlledici amil ola biləcəyi məlum olan məntiqlə, ən yaxşısı, aşağı dpi / RAM cihazlarımızı "işıq" ilə hədəf alacağımıza qərar verdik. "Apk və bütün digər istifadəçilərə normal tutma qurmağına xidmət etməklə sadə bir şey edin. Aşağı reytinqli telefonlar üçün ən çox yayılmış ABI-nin tez bir şəkildə araşdırılması bizi xüsusi olaraq armeabi-v7a hədəfləməyimizə səbəb oldu (bu da Android Go üçün təsdiq edilmiş ABI-dir).

Bu konfiqurasiya bizim build.gradle-a aşağıdakı əlavə şəklini aldı

dağılır {
sıxlığı {həqiqi sıfırlama () imkan verir "xxhdpi", "xxxhdpi", "nodpi", "tvdpi"}
abi {həqiqi sıfırlama imkanı verin () "armeabi-v7a" daxil edin}
}

Quruluşu bölüşdürərkən hədəf hədəfiniz (yuxarıda təsvir edilmişdir) və hamısına uyğun bir qurma çıxmalıdır - bu, bütün istifadəçilərə və cihaz konfiqurasiyasına xidmət etməmiz lazım olan budur. Quruluşların parçalanmasına dair daha çox qeydə burada baxa bilərsiniz.

NimbleDroid ilə yeni yüngül qurmanın analizi aşağıdakı nəticəni təmin edir.

.so qeyd edilmiş fayl kəsildi (2.35MB vs 15.41MB)

84% -lik kəsilmiş olan məqam !! (2.35MB vs 15.41MB)

Bu vəziyyətdə biz WebP və PNG aktivlərimizdə 50-60% azalma gətirən XHDPI və aşağıda hədəf aldıq. Bu qələbələr köhnəlmiş xüsusiyyət kodu / aktivlərin artıq dini çıxarılması və əksər aktivlərin WebP formatına çevrilməsinin üstündədir.

Ümumiyyətlə, bu dəyişikliklər ümumi paket ölçüsündə 45% azalma verdi! 42MB-dən 23MB-a qədər! İndi məhsul, xüsusilə aylıq məlumat büdcəsini necə istifadə edəcəyini yaxından araşdıran birisi üçün daha məqbul bir ölçüdə mövcuddur.

Beləliklə, analiz və planlaşdırma üçün bir neçə addım və pillə qurma prosesinizə nisbətən sadə bir yeniləmə ilə yalnız son istifadəçiləriniz üçün əhəmiyyətli dərəcədə daha yüngül bir məhsul təmin etmək baxımından axtardığınızı tapa bilərsiniz. Bir vuruş verin və nə tapdığınızı və başqa nə öyrəndiyinizi bizə bildirin.

Uğurlar.

AJ Cihla

Digər kreditlər:

Tinder Android Komandası (işə qəbul)

Aaron He (blog)

Brandon Barras və Play-dən Raj Ajrawat

Google Play (sənədlər)