Derinlik | Android genel tasarımı ve arkasındaki anlam

Alimei'nin kılavuzu: Gerçek çalışmada, sıklıkla bu tür sözler duyabilirsiniz: çerçevenin yükseltilmesi, protokol performansının iyileştirilmesini sağlar ve programlama modunun değiştirilmesi, iş dünyasında bir sıçrama getirir ... Bu ifadeler sorunlu olup olmadığına bakılmaksızın aslında Her şeye sistematik olarak bakarsanız, farklı keşifler olabilir. Örnek olarak LINUX'u ele alalım: Çekirdeği çok başarılı olmasına rağmen, POSIX'i takip etmezse ve açık kaynak kodlu ve geliştirilmiş bir UNIX uygulaması haline gelirse, sonunda hangi gelişmeye sahip olacağını hayal etmek zor. Bu nedenle, olayların kapsamlı ve derinlemesine araştırılması bazen daha aydınlatıcı olabilir.

Bugün, Alibaba'nın kıdemli kablosuz geliştirme uzmanları, size tüm Android teknolojisi alanı ve mobil Ar-Ge ekolojisi hakkında derinlemesine bir açıklama sunmak için yılların deneyimlerini birleştirecek. Sizinle tartışmak için sabırsızlanıyoruz.

1. Android tasarımının pratik önemi

Mimarinin mühendislik önemi, bir problem sınıfını tanımlamak ve çözmek ve talepten gerçekleştirmeye sorunsuz bir geçiş için bir garanti sağlamaktır. Geleneksel Android mimarisi (Şekil 1) iyi bilinir, ancak farklı rollerin farklı bakış açıları vardır; örneğin, Çalışma Zamanı ve çerçevenin çekirdeği olduğunu düşünmek veya Android'i belirli bir JVM platformu olarak ele almak veya yerleştirmek gibi Linux olarak kabul edilir ... Aslında Android, kendi geliştirme sorunlarını çözmek için tasarımı kullanan çok az sayıda sistemden biridir.Android, üç donanım soyutlama, bileşenleştirme ve arayüz katmanı yeteneği aracılığıyla geliştirme için bir temel sağlamaktır. Değişkenler, manevra kabiliyeti ve aracılık için çok yer ayırır.

Şekil 1. Android geleneksel mimarisi

1.1 Geliştirmenin öncülü: donanım soyutlaması

2008'de, Çin'in 3G çağına girmesinin arifesinde, altyapının dönüşümü mobil alanı değişkenlerle doldurdu ve ne ekipman, ne donanım ne de yazılım tamamlandı. Mimari ve yazılımda iyi olan Google'ın bu alanda hayatta kalması ve gelişmesi için tüm olası, hatta bilinmeyen güçleri birleştirmesi gerekiyor.Mobil operatörlerin, çip tedarikçilerinin ve cep telefonu üreticilerinin desteğini almak, hayatta kalmanın ilk adımıdır. .

Donanım soyutlama katmanı (HAL) bu amaca bir dereceye kadar hizmet eder: mobil alandaki çeşitli ve tek tip olmayan donanım sürücüleri için standart arayüzler tanımlar, Android'in Linux'a aşırı bağımlılığını önler ve daha sonra tüm makinenin genişletilmesini ve entegrasyonunu daha verimli ve tatmin edici hale getirir. Cep telefonu üreticilerinin önemli taleplerini karşılar; aynı zamanda Linux çekirdeğinin izole edilmesinde, üreticinin gizli sürücü kaynak kodunun GPL anlaşmasından ve açık kaynaktan etkilenmesinin önlenmesinde ve çip ve diğer donanım üreticilerinin temel çıkarlarının korunmasında rol oynar. Geleneksel cep telefonu işletim sisteminin özelleştirme ve entegrasyon süreci çok fazla kod değişikliği ve çok fazla yük gerektirir.Bu açıdan Android HAL tasarımı liderdir. AOSP'nin mükemmel kod dallanma ve modül yönetimi ve GNU automake makrosunu temel alan Android oluşturma sistemi ile birleştiğinde, üreticiler her zamankinden daha fazla rahatlığın keyfini çıkarıyor.

Bununla birlikte, HAL'ın sabit bir yaklaşımı yoktur (Şekil 2'de gösterildiği gibi). Android 8.0'dan önce HAL eski sürümü benimsendi. Çerçeve doğrudan * .so yüklendi ve ona dayanıyordu, esas olarak ağ ve Bluetooth gibi modüllere odaklanıyordu. Eski sürüm çerçeveye neden oldu ve Spesifik sürücü arayüzü çok sıkı bir şekilde birleştirilmiştir ve daha sonra geleneksel HAL yöntemi, yani iyileştirme için belirli spesifikasyonlar ve arayüzler sağlamak ve böylece doğrudan kuplajı azaltmak için oluşturulur, ancak üretici Android'in yeni bir sürümünü her desteklediğinde, hala birçok değişiklik ve uyarlama vardır; bu sorunu daha etkili bir şekilde çözmek için Android 8.0, Treble projesini başlatıyor. Bundan sonra, çip üreticileri Binder tabanlı HIDL aracılığıyla kararlı arayüzler sağlayabiliyor ve üreticiler, çip üreticilerinden etkilenmeden doğrudan Framework'ü güncelleyebiliyor ve hatta HAL'ı yeniden derlemeden OTA becerisi kazanabiliyor.

Şekil 2. Android'in donanım sürücüsü tasarımı

HAL tasarımı sayesinde Google, özellikle Android 8.0'ın yerli üreticiler arasında hızlı adaptasyonu olmak üzere dünya çapında daha geniş bir destek kazandı. HAL, Android cihaz hacminin sürekli büyümesi için temel sağlar ve temel teknolojilere sahip üreticilere (Qualcomm, Huawei, MTK gibi) yansıyan, cihazın üst katmanı ve altyapısının iki alanında (Şekil 3) güçlü üreticilerin derinlemesine gelişimini destekler. Sürekli olarak sistem yetenekleri (5G standartlarını, donanım yeteneklerini, yazılım ve donanım entegrasyonunu ve sistem yeteneklerinin derinlemesine özelleştirilmesini destekleyin) ve kanal ve kaynak entegrasyonundaki avantajlarla (Huawei, OPPO, Xiaomi, VIVO, vb.) Cep telefonu üreticileri oluşturarak rekabet gücünü güçlendirin. , İşletim Sistemine dayalı olarak, Android HAL'ın tüm endüstri üzerindeki uyumunu ve etkisini yansıtan ve Android'in kendi eksikliklerinin çoğunu dolaylı olarak telafi eden düzeni genişletmek için daha verimli uygulamalar geliştirmeye devam edin (UI, push, store, light uygulamalar vb.).

Şekil 3. Temel rekabet gücüne sahip üreticilerin gelişme eğilimi

1.2 Yetenek merkezi: bileşenleştirme

Yeteneklerin nasıl organize edileceği ve yeniden kullanılacağı mimarideki en büyük zorluktur ve mevcut yeteneklerden öğrenmek, geliştirmeye giden bir kısayoldur. İster Mircosoftun COM veya OMGnin CORBAı, ister EJBden Springe, SOAdan Sunucusuza, ağlar ve terminal cihazları gibi altyapı yetenekleri geliştikçe, bu teknolojilerin gelişimi ağırlıktan hafifliğe ve Merkez (otobüs) büyük ölçüde hafif bağımlılık eğilimine bağlıdır. Android, çeşitli alanlardaki ileri teknolojileri tam olarak birleştirir ve mobil terminal kaynak kısıtlamalarının en büyük özelliğine dayanarak kendi teknik özelliklerini oluşturmuştur: AIDL, karmaşık CORBA IDL'den türetilmiştir, bileşenler SOA'dan geliştirilmiştir ve bağımsız yaşam, yaşlı, hasta ve ölüm Sistem Hizmeti bire benzer Bir mikro hizmet olan Binder, veriyolunu zayıflatan, daha iyi performansa sahip olan ve birbirleriyle iletişim kurabilen bir DBUS olarak kabul edilebilir. UI düzen sistemi SWING'den büyük ölçüde etkilenir. Manifesto aslında APP ile sistem arasındaki iletişim için gerekli bileşen arabirimidir. Açıklama dosyası ...

Yukarıda bahsedilen alan teknolojisi gerçekten Android'in geliştirilmesine elverişlidir, ancak yeterli olmaktan uzaktır. Daha önce bahsedilen HAL ve genel mimariyi hatırlatarak, Android'in aslında birçok teknolojinin bir karışımını kullanan bir hodgepodge olduğunu görüyoruz. İster Meego, ister Symbian, MTK, UCOS, WindowsCE gibi Linux / Unix tabanlı sistemlere dayalı olsun, Palm ve diğer Web işletim sistemlerini kaldırarak, ister gerçek zamanlı bir sistem ister gerçek zamanlı olmayan bir sistem olsun, bu mobil sistemler esas olarak C / C ++ ve Küçük ve kompakt, bellek kullanımı ve gereksinimleri açısından son derece sofistike.Kaynağı kısıtlı cihazların gereksinimlerini karşılamasına rağmen, bir eşik getiriyor; Windows Phone'daki KJava ve .NET gibi sanal makine benzeri platformlar bellek kullanımı ve enerji tüketimi açısından daha cömerttir. Ancak birçok geliştirici tarafından memnuniyetle karşılanan Ar-Ge verimliliği ve hata toleransında kazanır.

Bu nedenle, Google için tam bir mobil endüstri zincirinin desteğinden yoksun, kendi teknik konseptlerine uygun ve kazanma şansı en yüksek olan hibrit bir mimari seçmek, her bir bileşenin organik olarak birleştirilip uygulanabilmesi için özel bileşenleştirme yetenekleri bu görevi üstlenecektir. Uygulama ile sistem arasındaki iletişim daha net ve daha kısıtlayıcıdır, bu da sonuçta tüm sistemin esnek bir şekilde çalışmasına yardımcı olur ve yetenekler hızla büyür.

Android sisteminin başlatma ve işletim sürecini (Şekil 4) ve sistem yeteneklerinin APP tarafından kullanımını (Şekil 5) gözlemleyerek, çeşitli yeteneklerinin bileşen standartları ve ayrıntı düzeyine (yetenek kaydı keşfi, arayüz ve iletişim standardizasyonu, İşletim alanı izolasyonu, vb.), Cep telefonu donanımının hızlı yinelemesine ve sürekli olarak yükseltilen sistem yeteneklerinin minimum maliyetle ortaya çıkarılmasına ve mobil cihaz sistemindeki yeniden kullanımın değerinin somutlaştırılmasına ve maksimize edilmesine olanak sağlayarak daha yüksek esneklik ve uyumluluğa sahip olur. Yazılım mühendisliğinin arkasındaki önemi, yazılım gereksinimleri ile tasarım arasında bir köprü oluşturmak ve sorunsuz bir geçiş sağlamak için sistem yapısı ve Ar-Ge gereksinimleri sorununu çözmektir.

Şekil 4. Android sistem süreci mimarisine genel bakış

Şekil 5. Cihaz yeteneklerini kullanan tipik arama yolu

Tabii ki, tarihteki diğer şirketlerin bu tür zorluklarla karşılaştıklarında farklı fikirleri vardır.Örneğin, Windows Phone 8.0, ister JAVA ile karşılaştırılabilir bir C # ve VB.NET çerçevesi, ister Sliverlight Bağımlılık Özelliği + XAML tabanlı bir UI sistemi sağlamak olsun, başka bir yol seçmiştir. , Hatta C ++ / CX ve C ++ 'yı desteklemek için geliştirilen bir dizi çalışma zamanı, teknolojik bir şölen olarak kabul edilebilecek sistem teknolojisinin çeşitliliğini ve karmaşıklığını her zaman duyuruyor gibi görünüyor.

Meego başka bir örnek. Nokia'yı krizden kurtarması bekleniyor ve Intel tarafından piyasaya sürüldü.Sistem, Linux çekirdeği + QEMU simülatörü + QT + QML arayüzü gibi çeşitli açık kaynak özelliklerinin bir kombinasyonu ile oluşturuldu, ancak aslında kısa ömürlü. .

1.3 Uygulama temeli arayüz katmanı

Sistem yetenekleri temelde yerinde ve daha fazla geliştiricinin nasıl karşılanacağı, Android'in uzun vadeli gelişimi için çok önemlidir. JAVA'yı üst düzey dil olarak seçmek, hem cesaret hem de hırsını göstermek için yeterli gerektirir; Kaynak kısıtlamalarının mobil alanında geçmişin, bugünün ve geleceğin en büyük nesnel gerçeğini karşılamak için, Dalvik sanal makinesini yazmaç mimarisine ve daha küçük yürütülebilir dosyalara dayalı olarak tasarladı. , Ve aynı zamanda pürüzsüz bir JAVA programlama yöntemi sağlamak için birçok araçla birleştirilen temiz oda mühendisliği yoluyla, benzer MTK özellikli telefonun sınırlamalarından kurtulun, yalnızca bazı küçük oyunlar yazmak için KJava kullanabilir, böylece Android geliştirmesi hem JAVA rahatlığına hem de iyi verim.

Öngörülemeyen Sun, Nisan 2009'da, Android 1.0'ın piyasaya sürülmesinden bir yıldan kısa bir süre sonra Oracle tarafından satın alındı. İlk başta JAVA API sağlamak için Apache Harmony'yi seçmek akıllıca olsa da, teknik olarak JAVA 7 / 8'i desteklememe ve telif hakkı ile ilgili Oracle davalarının akışı gibi birçok zorlukla karşılaştı. Tüm bunlara yanıt olarak Google, Android N ile başladı ve JAVA'nın desteğini OpenJDK olarak değiştirdi. Ayrıca Kotlin, benzer özellikleri nedeniyle Google tarafından tercih edilir ve derlenir ve sınıf veya dx bayt kodu olarak derlenebilir (Şekil 6).

Şekil 6. Android arayüz katmanının geçmişi ve geleceği

Aslında, Android'in bunu yapmaya cesaret etmesinin nedeni, tasarım temelinin desteğine sahip olmasıdır.Biraz kişisel anlayışa göre, ipuçları Android API çağrı bağlantısından bulunabilir (Şekil 7): temelde yatan bağımlılıklar, uygulama ve süreç ne olursa olsun. Değişim, üst katmanın kullanımı değişmeyecek.

Şekil 7. Android'de arama bağlantısının üç uygulaması

Bu, neredeyse tüm sistem yeteneklerinin çekirdeğinin yerel kitaplıkta tükendiği ve iyi bir koruma sağlamak için üst katmanla birleştirildiği anlamına gelir. Bu, diğer dillerin, özellikle JAVA'ya benzer özelliklere sahip bir dilin Framework uygulamasını mümkün kılar. Dolayısıyla hangi dil ve Kotlin olup olmadığı ön tasarım şartnamesine göre sadece uygun bir seçimdir.

Şekil 8. Gelecekte java'yı kotlin ile değiştirme olasılığı çok yüksek

2. Bizim için sembolizm ve pratik

Özetle Android, geliştirilmesindeki temel sorunları üç açıdan çözer:

  • Donanım odaklı: üreticiler arasındaki işbirliğinin temelini oluşturur ve karşılığında tüm endüstri üzerinde bir etki yaratır.
  • Bileşenleştirme: Çeşitli dahili yetenekleri verimli bir şekilde düzenleyin ve kendisinin daha hızlı geliştirilmesini isteyin.
  • Arayüz katmanı: Sistemin ve donanım özelliklerinin kullanımı için üst katmanın çeşitli taleplerini karşılayın.

Mobil İnternet endüstrisindeki devlerin gelişimi, farklı başlangıç noktaları ve yürütme konseptleri nedeniyle farklıdır.Apple, tüm sistemini App Store etrafında oluşturur ve titizlikle korur.Ayrıca, modern API programlama, makine deneyimi ve ağlar / algoritmalar gibi dikey alan teknolojilerinde çeşitli derinliklere sahiptir. Alan ön plandadır; Google, öncülük etmek için Android'i kullanır ve kendi geliştirme özelliklerini oluşturmak için her düzeyde farklı güçleri sürdürmesi ve birleştirmesi gerekir. Bu nedenle Android, sistemin nasıl geliştiğine dair başka bir cevap daha veriyor: Sistemin kendi yeteneklerinin geliştirilmesine odaklanmanın yanı sıra, sistemin sürekli gelişiminin temeli ve öncülünün nasıl korunacağı ve dış dünyanın sistem yeteneklerini nasıl daha iyi açığa çıkaracağı ve kullanmasına izin verileceği de çok önemlidir (bkz. Şekil 9).

Şekil 9. Sorunu çözmek için Android tasarımının aydınlanması

Kullanıcıların ve etkileşimlerin önemli olduğu, cep telefonlarının insan olduğu günümüze dönersek, ürünlerimizin nedenleri vardır ve çağrışımlarıyla hizmetlerin değerini genişletmek ve yükseltmek gerekir. Bunu yapmak kolay değil. Her şeyden önce, iş yinelemeleri gittikçe daha hızlı hale geliyor ve çeşitli uygulamaların ortaya çıkması, ara katman yazılımları için çok çeşitli gereksinimler anlamına geliyor; ikincisi, ister işletim donanımı ve ekipmanlarının çeşitliliği, ister yerleştirme kümelerinin karmaşıklığı ve çeşitliliği, Ali'nin tüm orijinal sonu olsun, ortam değişiyor. Yan ara katman yazılımı büyük bir etki yaratıyor; yine, temel teknolojinin gelişimi yavaşladıkça, teknolojinin değerinin sürekli olarak yükseltilmesi gerekiyor. Kendi yeteneklerimize dayanan hizmetler ve işletmeler için pan-bağlantılı bir temel oluşturmayı ve bunu bir geliştirme vizyonu olarak almayı umuyoruz. Bu, grubun geçmişine ve temel APP geliştirmenin ana amacına dayalı olarak bu geliştirme sorunu hakkında kapsamlı bir şekilde düşünmemizi gerektirir (Şekil 10).

Şekil 10. Pan bağlantı yetenekleri oluşturma üzerine düşünceler

Android'den esinlenerek, çevre ve statüko ile birleştiğinde, iş hedeflerini karşılarken, ağ yeteneklerini üç seviyeden geliştirmeye devam ediyoruz (Şekil 11).

  • Her şeyden önce, çevrimiçi ve çevrimdışı, çeşitli senaryoları ve farklı ekipman biçimlerini kapsayarak, ortak standartları destekleyen verimli ve özel protokoller oluşturmaya devam ediyoruz ve diğer uç taraf ağlarının sağlamamıza yardımcı olamayacağı veya sağlamanın zor olduğu bazı özel yetenekler sağlamaya devam ediyoruz. Ekipman ve hizmetlerin, kullanıcıların ve işletmelerin evrensel bağlantı temeli.
  • İkinci olarak, aşağıdan yukarıya doğru soyutlayın ve engellemeyen GÇ'nin yeniden kullanımını, kullanıcı modu ağ yığın desteğini, kanal kapasitesi genişlemesini ve hibrit kümeleri destekleyebilen çok örnekli bir mimariyi verimli bir şekilde organize edin, böylece farklı düzeylerde veri akışı ve yönetim gereksinimleri sağlanır. .
  • Son olarak, SDK matrisine ve erişim yeteneklerinin inşasına dayalı olarak, işletmeye hizmet erişimi ve kullanıcılara iş ifşası amacına ulaştık ve zengin veriler sağlayarak daha fazla değer kattık.

Şekil 11. Her yerde bulunan bağlantının sistematik yapısı

Yukarıdaki sürekli yağışa dayanarak, artık çok sayıda cihaza ve kullanıcıya ulaştık, Ali'nin içindeki ve dışındaki çeşitli hizmetlere ve platformlara erişmek için bir arayüz haline geldik ve terminaller ve hizmetler için küme ve ekipman çeşitliliğini koruduk ve yeni bir perakende sistemi gerçekleştirdik. Kullanıcılarla bağlantı kurma yeteneği (Şekil 12).

Şekil 12. Gruptaki takım becerisinin konumu

3. Özet

Geleneksel C / S konseptini birleştiren, sunucu tarafından elde edilen bilgiler her ağ terminalinden gelir ve ağ + protokolü hizmete dış dünyanın girdilerinin çeşitliliğini korur veya düzenler, sunucunun geçmişte kümelere ve yüksek eşzamanlılığa odaklanmasını sağlar, ancak şimdi ne olursa olsun Buluta geçiş veya kullanım, arkasındaki iş, maliyet ölçeği ve marjinal etkiler tarafından yönlendirilir ve geliştirmenin nesiller arası teması açıktır. Ancak müşteriye dönersek, çevrenin ve etkileşimlerin çeşitliliğinin doğrudan etkisi nedeniyle, dinamik teknolojiler bile müşterinin tamamını veya hatta ana akımını temsil edemez. Bu nedenle, belirli bir yerel teknolojide rekabet eden dövüş sanatları, müşteriler için geçmişte bir endüstri "trendi" haline geldi.

Yerel teknoloji ve tek nokta derinlemesine anlamlıdır.Yazarın ayrıca, cep telefonu yığının en üst etkinliğini elde etmek için sorgulamasız yöntem, Alibaba'nın karmaşık kümesi için SDK çoklu örnek tasarımı, Sophix sıcak onarımı ve bulut ürünleri gibi bazı hileleri de vardı. . Ancak geçmiş deneyim ve Android tasarımı ile birleştiğinde, bu fenomene daha sistematik bir şekilde bakabiliriz: yani, işletmenin temel taleplerini karşılamanın yanı sıra (çünkü büyük miktarda kaynak yatırımı yapıldığından, en azından başarılması gerekir, en azından başarılmalıdır) ve teknolojinin nasıl daha iyi hizmet verebileceğine daha fazla dikkat edilmelidir. İş ve yetenek hendekinden sürekli olarak nasıl yararlanılacağı. Bu nedenle, bir sistem kurmak ve geliştirmek için, sistemin omurgasını oluşturmanın yanı sıra, sistem geliştirme için ön koşulların sağlanması, çeşitli sistem yeteneklerinin uyumunun düzenlenmesi ve sistem üzerindeki dış taleplerin karşılanması da gereklidir.

Yukarıdakiler, Android sisteminin tasarımından teknik destek sisteminin geliştirilmesine kadar yüzeysel bir görünümdür.Sektördeki meslektaşlarımla bunu tartışmayı dört gözle bekliyorum.

Manchester United'ın pasif oyunu teslim olmakla aynı şeydir! Sadece pasta kaybetmekle kalmıyor, aynı zamanda topsuz Manchester City'nin gerisinde kalıyor
önceki
Mobil oyun "Mobius: Final Fantasy", Kasım Steam ücretsiz PC'ye çıktı
Sonraki
Jiangxi Isuzu 2018 Mu-X Ranger 178.800'e satıldı, dört önemli nokta
Zarafeti ve kısıtlamayı vurgulayın! SEMA fuarında 4 kişiselleştirilmiş Lexus arabası
31 yaşındaki milli oyuncu, oynamak için en uygun alternatif! Evergrande ona sahip olduğu için şanslı, ancak Cannavaro başlamasını tercih ediyor
Bugünün futboluna 2 büyük ceza! Oyuncular bildirimle eleştirildi ve oyunu terk etmeyi reddetti ve 200.000 euro para cezasına çarptırıldı.
Bu coupe SUV sadece görünüş olarak değil, aynı zamanda ...
Öğretmen Yue: Artık Rockets ile karşılaşmak istemiyorum! Ma Long: Ben de! Paul: Sadece 5 puan kazandı!
147 gün! Wei Shihao top sıkıntısı çekti, U23 milli futbol takımı Asya Oyunları'nda ne oynamalı?
Kesinlikle benzersiz! BMW böbrek ızgaraları doğrudan "ön dişler" mi oluyor?
Xie Er balayı için evlenmeye gitti, ancak seyirci gençliğe veda etmek istedi - "Büyük Patlama Teorisi" önümüzdeki yıl Mayıs ayında sona erecek!
Manchester United aşağılanmıştı ve Manchester City'nin topunu yarım dakikada alamadı! Gülümseyen Mata yardım edemedi ama delirdi
30 dakikada teslimat yapabilmek için Hema mühendislerinin hangi "bilge operasyonları" var?
Avrupa futbolundaki en büyük sakatlık emekli olduğunu açıkladı! Kariyerinde 35 kez yaralandı, 1935 günü kayıp
To Top