Çapraz platform uygulamanız neden çevirmeli bir salyangozdan daha yavaş ve nasıl düzeltilir?

Yayınlanan: 2025-03-31

Dürüst olalım - bir kullanıcının öfkesini durgun bir uygulamadan daha hızlı tetiklemez. Kullanıcılarınız kırık bir kapı zili çalıyormuş gibi düğmelere dokunuyorsa ve ortağının gözlerine baktıklarından daha uzun bir eğirme yükleyicisine bakıyorsa, bir şeyler yanlış.

Bunu saymayı umduğumdan daha fazla gördüm. Ve son 15 yılı aşkın yılı ABD'den Avrupa'ya yardım etmek için harcadım - ve elbette burada Columbia, Güney Carolina'da - parlak yeni mobil uygulamalarında şeyleri tam olarak yavaşlatan şeyleri şekillendirdim. Spoiler uyarısı: Her zaman sizin hatanız değildir. Bazen, çerçevelerin kendisidir.

Web Design Columbia'da (Yukarıdaki Bits'deki kıdemli geliştirme ekibinin yerel yüzü), lojistik şirketleri, eğitim platformları, fantezi spor girişimleri, tarım için GPS tabanlı araçlar ve hatta güvenlik akışı uygulamaları için mobil uygulamalar geliştirdik. Hepsinde ortak bir tema mı? Birisi-her iki müşteri veya önceki geliştiricileri-platformlar arası gitmeyi düşünmek otomatik olarak hızlı, ucuz ve büyülü olacaktır.

Bugünün konusunun devreye girdiği yer. React Native, Flutter, Ionic veya başka bir “bir kez inşa et, her yerde başlat” araç seti kullanıyorsanız ve uygulamanızın neden bir hamster gibi çalıştığını merak ediyorsanız, yalnız değilsiniz. Onu açalım - teknik olarak, mizahi ve dürüst bir şekilde.

Platformlar arası: kutsama mı yoksa darboğaz mı?

İtirazı inkar etmek yok. Platformlar arası geliştirme, kod yazmanızı (çoğunlukla) ve hem iOS hem de Android'e dağıtmanıza olanak tanır. Bu, iki ayrı takıma, bütçeye veya duygusal arızalara ihtiyacınız olmadığı anlamına gelir.

Örneğin React Native, Facebook tarafından 2015 yılında kaşıntılarını çizmek için inşa edildi - birden fazla kod tabanını korumadan daha hızlı mobil özellikleri yönlendirdi. 2017 yılında Google tarafından oluşturulan Flutter, oluşturma motoru ve dart programlama dili ile farklı bir yol izliyor. İyonik? Daha eski, 2013'e dönüyor ve HTML, CSS ve JavaScript gibi web teknolojilerine dayanıyor.

Şimdi, beni yanlış anlamayın - bu çerçeveler birçok yönden parlak. Ancak parlaklık genellikle uyarılarla birlikte gelir. Performans büyüktür.

Diyelim ki, iyi bir bisikletin maliyetinden daha azıyla size güzel bir platformlar arası bir uygulama oluşturmak için bir geliştirici kiraladınız. Bu durumda, birkaç tuhaflık fark etmiş olabilirsiniz: gecikmeli animasyonlar, yanıtlanması sonsuza dek süren düğmeler veya Android'de çalışan ancak iOS'ta açıklanamaz bir şekilde çöker.

Neden bir saniyede açıklayacağım. Ama önce, bunun Columbia, SC'deki mobil uygulama geliştirme ile nasıl ilişkili olduğunu merak ediyorsanız, size iPhone 3G günlerinden beri yerel müşterilerimiz için bu sorunları düzelttiğimizi söyleyeyim.

Platformlar arası uygulamanızın gerçek nedeni halsiz

İşte size kaygan ürün sayfalarında veya geliştirici YouTube öğreticilerinde size söylemedikleri kirli küçük sır: Platformlar arası uygulamalar doğası gereği bir soyutlama katmanıdır. Ve herhangi bir programcının bildiği gibi, soyutlama = ek yük.

Örneğin React Native, yerel bileşenler ve JavaScript arasında iletişim kurmak için bir “köprü” kullanır. Bu köprü tam olarak Usain Bolt değil-özellikle karmaşık animasyonları, harita özelliklerini veya gerçek zamanlı verileri işlerken. Bu yüzden kaydırma Jank ve Lag çok yaygın.

Flutter, kendi render motoru (SKIA) nedeniyle bazı açılardan daha hızlı olsa da, tuhaflıkları var. Dart güçlüdür, ancak herkes niş bir dil kullanmayı sevmez. Ayrıca, Flutter uygulamaları dosya boyutunda şişirilebilir ve platform başına UX'i büyük ölçüde özelleştirmediğiniz sürece genellikle davranışta “yerli olmayan” hissedebilir.

Ve Cordova veya Ionic gibi hibrit çerçevelere bile başlamayalım, bu da uygulamanızı bir web görünümünde çalıştıran - yerel bir uygulama gibi davranan bir tarayıcı için süslü bir kelime. Bu bir Ferrari vücut kabuğunu kiralamak ve bir golf arabası motoruna yapıştırmak gibi.

Web Design Columbia'da, “sadece daha hızlı hale getirmek” ile görevli diğer geliştiricilerin bu Frankenstein uygulamalarından payımızdan daha fazlasını miras aldık. İyi haber şu ki, genellikle yapabiliriz. Ancak kaputu kaldırmadan, gereksiz eklentileri kaldırmadan, bellek kullanımını optimize etmeden ve genellikle büyük kod parçalarını yeniden yazmadan değil.

Columbia, SC'deki işletmeniz mobil uygulamalara güveniyorsa, bu performans cezası daha iyi UX'e sahip rakiplere kullanıcıları kaybetmek anlamına gelebilir. Baskı yok.

Küresel hayal kırıklığı, yerel düzeltmeler

Statista tarafından yapılan yeni bir araştırma, kullanıcıların sadece 3 saniye gecikmeden sonra uygulamaları terk ettiklerini gösterdi. Üç saniye. Hapşırmak için gerekenden daha az zaman.

Başka bir eğlenceli gerçek mi? Google, 2023 yılında mobil kullanıcıların% 53'ünün yüklenmesi 3 saniyeden daha uzun süren bir siteyi veya uygulamayı terk ettiğini belirtti. Bu sadece hızla ilgili değil - güvenle ilgili. Uygulamanız donarsa, kullanıcılar markanızın güvenilmez olduğunu düşünecektir.

Columbia, SC ,, mobil uygulama geliştirmemiz hızla gelişmek zorunda kaldı. Şimdi orijinal kodu yazmasak bile, neredeyse her projenin bir parçası olarak performans denetimleri yapıyoruz.

Üzerinde çalıştığımız bir lojistik uygulamasını hatırlıyorum, gerçek zamanlı izleme, barkod taraması ve push bildirimleri-tüm harika özellikler. Bununla birlikte, geliştiriciler React Natural'ı çok fazla üçüncü taraf kütüphanesi, kötü uygulanan arka plan konumu izleme ve bellek hogging animasyonları ile kullandılar. Sonuç? Android 11'de her 10 dakikada bir ve eski iPhone'larda termal kapatmalarda düştü.

Çoğunu yeniden inşa ettik, daha modüler bir mimariye göç ettik, konum izleme için yerel modüller kullandık ve uygulama boyutunu%60 azalttık. Kullanıcı tabanı kızgın destek e -postaları göndermeyi bıraktı. Bu bir kazan-kazandı.

Benzer bir şey inşa etmek isteyenler için (ancak drama olmadan), genellikle Columbia, SC'de profesyonel ve uygun fiyatlı bir mobil uygulama geliştirme danışmanlığı ile başlamanızı öneririz. Plan yapmak her zaman yamadan daha ucuzdur.

Big Tech mücadele ettiğinde de

Bunun sadece küçük takımlara geldiğini düşünüyorsanız, tekrar düşünün.

Orijinal HTML5 tabanlı hibrid sürümü “çok yavaş” olduğu için Facebook 2012 yılında mobil uygulamasını yeniden inşa etti. Mark Zuckerberg bunun en büyük hatalarından biri olduğunu itiraf etti. Sonunda yerel koda taşındılar ve daha sonra aynı sorunu daha iyi çözmek için React Native geliştirdiler.

Parlak çırpınan çerçevesiyle Google bile dikkatle bastırmak zorunda kaldı. İlk dart öğrenme eğrisini bulan geliştiriciler, geri tepme ile tepki gösterdi. Flutter üzerine inşa edilmiş bazı erken uygulamalar, yerel meslektaşlarının neredeyse iki katı büyüklüğünde oldu ve sınırlı internet hızlarına sahip ülkelerde tanklara indirme oranlarına neden oldu.

Ve sonra sürücü uygulaması için hibrit çerçeveler kullanmayı deneyen ancak sonunda vazgeçip tamamen yerel gelişimine geri dönen Uber var çünkü performans gerçek zamanlı ihtiyaçlarını karşılamadı.

Mesele şu ki, milyar dolarlık şirketler bile-bazen acı verici bir şekilde-performansın kolaylığı aştığını öğrendi. Columbia, SC'de mobil uygulama geliştirmeye yatırım yapıyorsanız, bu ders eve yakın bir yere çarpmalıdır, özellikle de hazır bir uygulamanın para çukuruna dönüştükten sonra zaten yeniden hazırlanmanız gerekiyorsa.

Çapraz platform ölmedi, sadece yanlış anlaşıldı

Beni yanlış anlamayın-tüm platformlar arası çerçevelerin çöp olduğunu söylemiyorum. Uygulamanın kapsamı araca uyduğunda React Native ile çalışmayı seviyorum. Flutter, görsel olarak karmaşık uygulamalar hızlı bir şekilde oluşturmak için muhteşemdir. Kondansatör, doğru kullanıldığında şaşırtıcı derecede etkilidir.

Ancak bu çerçeveler sihir değil. Üst düzey mimari kararlar, iyi kod disiplini, uygun CI/CD kurulumu ve düzinelerce cihaz arasında gerçek dünya testi gerektirirler.

Web Design Columbia'da bu konuda iyi olduk, çünkü bunu çoğundan daha uzun süre yaptık. Fantezi spor platformları oluşturmaktan güvenlik araçlarına akışa kadar, neredeyse her duvara çarptık - ve nasıl sıçrayacağını anladık (veya bazen tamamen farklı bir yığınla dolaştık).

Bu tür bir deneyim sadece oyunda yaklaşık yirmi yıldan geliyor - ve evet, gün içinde Symbian OS gibi eski platformlarla çalışmayı içerir. Henüz yaşlı hissediyor musun?

Test isteğe bağlı değil - hayatta kalma

Bunu yoldan çıkaralım: Mobil uygulamanızı gerçek cihazlarda test etmiyorsanız, kullanıcılarınızın sabrı ile rulet oynuyorsunuz. Bir simülatörde kusursuz bir şekilde çalışan uygulamalar gördüm, ancak bir Samsung Galaxy A12'de açıldıklarını kırdı. Evet, bu gerçek bir telefon ve evet, iPhone 15 Pro Max'iniz gibi davranmıyor.

Columbia, SC'deki mobil uygulama geliştirme için, çeşitli cihaz laboratuvarında test etmekte ısrar ediyoruz. Eski Android 8 telefonlarımız, orta katmanlı tabletlerimiz ve hatta hala ölmemiş olan huysuz bir iPad mini var. Neden? Çünkü kullanıcılarınız sadece en son ekipmanı kullanmıyor.

Ayrıca, emülatörler pil kullanımını, GPS davranışını, push bildirimlerini veya mobil ağ damlalarını simüle etmez. Bunların hepsi, gerçek zamanlı güncellemelere, konum izlemeye veya içeriğe dayanan uygulamalar oluştururken önemlidir.

Flutter'ın Hot Reload ve React Native'ın canlı yeniden yüklemesi gelişimi hızlandırmak için harika, ama performans performansına ne dersiniz? Hala gerçek dünya kullanımına ihtiyacı var. Bu adımı atlıyorsanız, kullanıcılarınızın hataları keşfeden olacağını garanti ederim - değil. Ve bu asla iyi bir görünüm değildir, özellikle de Güney Carolina, Columbia gibi güven odaklı bir pazarda bulunan bir işletme için.

GPS uygulamaları neden özel bir acıdır

Şimdi GPS konuşalım. Web Design Columbia'da şaşırtıcı sayıda GPS tabanlı uygulama oluşturduk. Bir müşteri, diğerinin Kuzey Carolina kırsalında teslimat kamyonlarını izledi, diğeri coğrafi kaplama etkinlikleri için özel bir çözüme ihtiyaç duydu ve hatta konum pullarıyla toprak bırakmalarını izleyen bir peyzaj şirketi için dahili bir araç oluşturmaya yardımcı olduk.

Size şunu söyleyeyim: GPS + mobil uygulamalar = bir çanta yılan.

Pil tüketimi ilk kötü adamdır. Konum frekansına ve geri dönüş mekanizmalarına ince ayar yapmadığınız sürece, uygulamanız kullanıcının telefonunu otomatik oyundaki Tiktok'tan daha hızlı boşaltır. Ve beni iOS gizlilik izinlerine başlamayın - Apple artık konum hizmetlerini kullanmak için bir gerekçe dizisi gerektiriyor ve bunu kötü bir şekilde ifade ederseniz, uygulamanız reddedilecektir.

Sonra Android var. Oh, Android. Bazı üreticilerin telefonlarında (size bakarak, Xiaomi), kullanıcı belirli ayarları manuel olarak etkinleştirmedikçe arka plan konumu çalışmaz - genellikle 30 dakika boyunca googling yapmadan bile bulamadıkları tespitler.

Farklı işletim sistemi sürümleri ve donanım markaları için aylarca özel geri dönüşler inşa ettik. Columbia, SC'deki mobil uygulama geliştirme için, bu Gotchas'ı tahmin etmeyi ve müşterilerimizi bir sorun haline gelmeden önce bilgilendirmeyi öğrendik. Çünkü bir sürücü I-77'de ölü bir bölgeye girdiğinde teslimat uygulamanız başarısız olursa, bu bir müşteri kaybıdır.

Apple'ın inceleme süreci hayallerinizi rahatsız edecek

Gears'ı kaydıralım ve App Store gönderimlerini, özellikle iOS App Store'a tartışalım. Uygulamanızı Apple'a göndermek, özgeçmişinizi el kitabı, huysuz bir inceleme ve belirsiz ret notlarına sevgi ile gizli bir topluma göndermek gibidir.

Bir keresinde reddedilen bir müşteri için beş kez bir eğitim uygulaması gönderdim. İlk olarak, giriş akışını sevmediler. Sonra teknik olarak ücretsiz değildi çünkü “ücretsiz” içerikten bahsettiler. Daha sonra, uygulamanın yeterli uzun vadeli değer sağlamadığından şikayet ettiler. Sonunda, geçtik-ancak ekran görüntüleri ile 3 paragraflı bir gerekçe yazmadan önce değil.

Apple, dünyanın en yüksek kullanıcı standartlarından bazılarına sahiptir. Bu çift kenarlı bir kılıç. Evet, kullanıcılar cilalı uygulamalar alırlar, ancak geliştiriciler için, ne yaptığınızı bilmiyorsanız, haftalarca yeniden çalışma anlamına gelebilir.

Web Design Columbia'da, Apple'ın arafından kurtulmak için özellikle kontrol listeleri oluşturduk. Nelerden kaçınacağımızı biliyoruz (yer tutucu yok, yarı pişmiş giriş ekranları yok, net özellik değeri yok) ve ilk denemeden geçmek için yapıları yapılandırarak müşterilerimize zaman, para ve gri kıllar tasarrufu sağlıyoruz.

Ve Android'i unutmayalım. Süreçleri daha rahat olsa da, bu her zaman iyi bir şey değildir. Kötü amaçlı yazılım uygulamaları gizlice ve dürüst geliştiriciler bazen otomatik yasaklarda süpürülür. Müşterilerimizden biri, giriş ekranlarının eksik bir gizlilik politikası bağlantısı olduğu için “aldatıcı davranış” için işaretlendi. Öğrenilen ders.

Kullanıcı deneyimi her şeydir-ve çapraz platform onu ​​sabote edebilir

Hiç hissettiren bir uygulama kullandınız mı? Örneğin, bir düğme diğer uygulamalarda olduğu gibi davranmaz veya kaydırma tereyağı pürüzsüz değil mi? Bunun nedeni genellikle platformlar arası çerçevelerin yerel kullanıcı arayüzünü taklit etmesidir, ancak mükemmel değildir.

Android kullanıcıları malzeme tasarım etkileşimleri bekliyor. iOS kullanıcıları Apple'ın yerel geçişlerine alışkındır. Tek bedene uyan bir UI, her iki kampı da nadiren zevk alır.

Yakın tarihli bir projede, bir uygulamanın arayüzünü elden geçirmemiz istendi çünkü Android'deki kullanıcılar uygulamanın “çok iOS-y” olduğunu düşünürken, iPhone kullanıcıları “çok düz” olduğunu hissettiler. Önceki geliştirici bir kullanıcı arayüzü oluşturdu ve her ikisine de tokatladı.

React Native's Platform.OS gibi platforma duyarlı bileşenleri kullanarak yeniden inşa ettik ve her ekosistem için biraz farklı bir UI sağladı. Kullanıcılar olumlu yanıt verdi ve elde tutma oranları%30 arttı. Bu, çoğu bütçe geliştiricisinin atladığı türden bir tür. Ancak, özellikle yerel sadakatin her şey olduğu Columbia, SC'deki işletmeler için bir fark yaratıyor.

Maliyet sorusu - hadinin konuşma numaraları

Platformlar arası uygulamalar genellikle ucuz bir çözüm olarak atılır, ancak havayı temizleyelim. Evet, geliştirme maliyetleri daha düşüktür - genellikle iki yerel uygulama oluşturmaktan genellikle% 30-40 daha az. Ama bu denklemin sadece bir parçası.

Platformlar arası uygulamalar genellikle daha fazla hata ayıklama, KG, performans ayarlama ve App Store yönetimine ihtiyaç duyar. Zamanla, bu maliyetler bir çöp kutusundaki bir rakun gibi bütçenize girebilir.

Web Design Columbia'da, bankayı kırmadan yüksek kaliteli uygulamalar sunmayı bir görev haline getirdik. Fiyatlandırmamız şeffaf, adil ve gerçek sonuçlara dayanıyor. Bunu 2006'dan beri yapıyoruz - bina uygulamaları Symbian ve BlackBerry Os kabusları için Java anlamına geliyordu - ve müşterilerimiz bizimle kalıyor çünkü sadece kod değil, insan konuşuyoruz.

Tipik mobil uygulama projemiz MVP'ler için 3.000 $ ile tam özellikli sistemler için 25.000 $ arasında değişmektedir. Bu hala tipik bir büyük şehir firmasında ödeyeceğinizden binlerce daha az ve kalitemiz en iyisiyle baş başa ayakta duruyor. On yıldan fazla bir süredir bizimle çalışan müşterilerimiz var - çünkü onları çerezlerle rüşvet veriyoruz (belki de yapmalıyız).

Peki, çapraz platform buna değer mi?

Kesinlikle - bu doğru uyum olduğunda. Animasyonlara, cihaz sensörlerine veya platforma özgü davranışlara büyük ölçüde güvenmeyen uygulamalar React Native veya Flutter için mükemmeldir. Platformlar arası geliştirme genellikle dahili iş araçlarına, MVP'lere, eğitim uygulamalarına ve basit sosyal platformlara büyük ölçüde yararlanır.

Ancak, yüksek performanslı bir oyun, AR deneyimi veya karmaşık GPS izleme uygulaması oluşturuyorsanız, yerli veya en azından yerel modüllere dayanan hibrit bir mimariyi düşünmek isteyebilirsiniz. En iyi strateji? Her iki dünyayı da bilen ve sizi belirli bir çerçevede yükseltmeye çalışmayan biriyle konuşun.

Web Design Columbia'da yaptığımız şey bu. Stratejiyle başlıyoruz, hype değil. Ardından, hızlı, pürüzsüz ve kullanıcı dostu bir şey inşa ediyoruz-müşterilerinizin sadece kullanmadığı, aslında keyif aldığı bir şey.

Eğer şimdiye kadar yaptıysanız, tebrikler. Artık mobil uygulama performansı hakkında ilk uygulamalarını başlatan işletme sahiplerinin% 90'ından daha fazla şey biliyorsunuz. Platformlar arası araçların mükemmel olduğunu, ancak büyülü değil-ve test, platforma özgü ayarlamalar ve gerçek dünya deneyiminin vasat bir uygulamayı pazar kazanan bir uygulamadan ayıran şey olduğunu öğrendiniz.

Web Design Columbia'da, tüm mobil ekibimiz bu zorluk için yaşıyor. Sadece kod yazmıyoruz, sorunları çözüyoruz. Test, ayar, yineleme ve uygulamanızın korkunç “İlk Kullanımdan Sonra Silinmiş” kategorisiyle sonuçlanmadığından emin oluyoruz.

İster Columbia, Güney Carolina'da ister dünyanın yarısında bir başlangıç ​​kurucusu olun, size gerçek dünya performansını göz önünde bulundurarak, Columbia, SC'de profesyonel ve uygun fiyatlı mobil uygulamalar geliştirmeyi nasıl oluşturduğumuzu göstermek isteriz.

Bir sonraki uygulamanızın parlak olduğu için hatırlandığından emin olalım - kırılmamış.