Bileşen teknolojisi, çok kişili işbirliği gerektiren orta ve büyük projeler için uygundur.Tek kişilik bir projeyse ve geliştirici bileşenleştirme alıştırması yapmamışsa tavsiye edilmez.
1. İş yalıtımı, her iş modülünün diğer iş modüllerini önemsemeden kendi iş uygulamasına odaklanmasına olanak tanır.
2. Ayrı hata ayıklama, her modül bağımsız olarak çalışabilir, bu da geliştirme ve hata ayıklama için uygundur.
3. Bileşenlerin yeniden kullanılabilirliği, üst üste binen işlere sahip farklı uygulamalar için bileşenler doğrudan birleştirmek için kullanılabilir.
4. AOP için uygundur.
5. Grup üyelerinin kod değiştirme izinleri daha ayrıntılı bir şekilde ayarlanabilir.
demo indirme
* Birden fazla işlem için mükemmel destek ve kullanıcıların AIDL hizmetini bağlamasını veya özelleştirmesini gerektirmez.
* Sayfa yönlendirme: Etkinlik için url tanımlamayı destekleyin, ardından url aracılığıyla Etkinlik'e atlayın, durdurucu eklemeyi destekleyin.
* Çapraz işlem olay veriyolu.
* Çapraz süreç API çağrılarını destekler.
* Modül ayırmayı, sayfa yönlendirmeyi, API çağrılarını ve olay veri yolunu tam olarak gerçekleştirin, hepsi çapraz modül kullanımını destekler.
* Modülün başlatılmasına ve sayfaların, engelleyicilerin ve sağlayıcıların otomatik kaydına rehberlik etmek için AOP'ye dayanmaktadır.
1. BaseModule'a bağımlılık ekleyin:
2. Ek açıklama işlemcisinin bağımlılığını DRouter kullanması gereken diğer bileşenlere ekleyin:
3. Çok işlemli yapılandırma:
* Projenizin çok işlemli geniş alan yönlendirmesi kullanması gerekiyorsa, lütfen Uygulamanızın IMultiProcess arabirimini uygulamasına izin verin. Geniş alan yönlendirme varsayılan olarak devre dışıdır ve yalnızca bu arabirim uygulandığında etkinleştirilecektir.
* Uygulama modülünün build.gradle dosyasında ve eklentiyi uyguladıktan sonra derlenmiş RouterPlugin eklentisine başvurmalıdır: 'com.android.application', aşağıdaki gibi:
''
eklenti uygula: 'com.android.application'
eklenti uygula: "com.dovar.router.plugin" // eklenti uygulandıktan sonra olmalıdır: 'com.android.application', aksi takdirde AppExtension bulunamaz
buildscript {
kod depoları {
Google()
uzman {
url "https://plugins.gradle.org/m2/"
}
}
bağımlılıklar {
classpath "gradle.plugin.RouterPlugin: eklenti: 1.1.8"
}
}
''
Application.onCreate () içinde başlatmayı tamamlayın
DRouter.init (uygulama);
Sayfa yönlendirme
Eylem yönlendirme (API çağrısı)
Etkinliklere abone ol
Olayları yayınlayın (herhangi bir ileti dizisinde)
Aboneliği iptal etme etkinliği (subscribeForever () aracılığıyla abone olurken, zamanında abonelikten çıkmanız gerekir)
Arayüz yönlendirme
Eylem yönlendirme
Etkinlik veriyolu
Bileşenleştirilmiş proje mimarisi diyagramı
APP Shell Engineering hakkında
Paketleme yapılandırmasını yönetmek ve bileşen referanslarını ayarlamak için kullanılır.
Uygulama bileşeni katmanı hakkında
İş bileşenleri ve işlevsel bileşenler dahil olmak üzere iş merkezi (işlevsel bileşenler özellikle kullanıcı arayüzü mantığı olmayan işletmelere atıfta bulunur, ayrıma dikkat edin, ağ talepleri, görüntü yükleme, bunlar temel çerçeve katmanına aittir).
Kamu hizmeti katmanı hakkında
Bileşenler arası çağrıları ve ortak kaynakları yönetin. Ayrıntılar için lütfen projedeki common_service bölümüne bakın.
Neden temel çerçeve katmanı ile uygulama bileşeni katmanı arasında bir kamu hizmeti katmanı oluşturmalı?
* Gelecekte üçüncü taraf kitaplıklarını değiştirme ihtiyacını kolaylaştırmak için temel çerçeve katmanı işlevi API'sine yapılan çağrıyı kapsülleyin. Birçok programcının üçüncü taraf kitaplıklarını (özellikle temel kitaplıkları) değiştirmenin acısını yaşadığına inanıyorum.
* Proje kendisini sarmaz ancak doğrudan üçüncü taraf API'ye başvurursa, değiştirmek istediğinizde değiştirilmesi gereken çok fazla kod olduğunu göreceksiniz.
* Genel kaynakları ve kodları depolayın, bunları üst düzey iş kullanımına maruz bırakın ve bu kaynakların temel çerçeve katmanına düşmesini önleyin, böylece temel çerçeve katmanındaki gereksiz güncellemeleri azaltın.
* Çok kişili işbirlikçi bir projede, temel çerçeve kararlı olmalıdır, bu nedenle temel çerçeve katmanına mümkün olduğunca az taahhütte bulunmayı umuyoruz.
Temel çerçeve katmanı hakkında
Ağ istekleri, görüntü yükleme, genel özel kontroller gibi işle ilgisi olmayan genel işlevsel modüller.
Etkinlik için yol tanımlama desteği, ardından yol boyunca Etkinlik'e atla ve atlama önleyiciyi ayarlama.
1. Hizmet sağlayıcı, hizmetleri diğer bileşenlere sunmak için DRouter ile Action kaydettirir.
2. Çoktan çoğa: LiveEventBus.
1. Hizmet sağlayıcı, hizmetleri diğer işlemlere maruz bırakmak için DRouter ile Action kaydeder ve aktarılan parametrelerin serileştirilmesi gerekir, aksi takdirde DRouter tarafından filtrelenirler.
2. Çoktan çoğa: LiveEventBus.
1. AndroidManifest.xml birleştirme:
Her modülün kendi AndroidManifest bildirim dosyası vardır ve tüm modüllerin manifest dosyaları, uygulamanın derlenmesi sırasında sonunda tek bir dosyada birleştirilecektir.
Sentezlenen AndroidManifest dosyasını Uygulama olarak yapılandırılan modülün altındaki build / intermediates / manifests yolunda bulabilir ve birleştirme kurallarını ve çakışma işleme kurallarını kabaca analiz etmek için derlemeden önceki ve sonraki farkları karşılaştırabiliriz.
Aynı ada sahip kaynaklar birden çok modülde görünüyorsa (örneğin, android: label = "@ string / app_name") ve aynı ada sahip kaynaklara sentezlenmiş AndroidManifest.xml tarafından başvuruluyorsa, geçerli ApplicationModule kaynaklarının ilk olarak kullanılacağına dikkat edilmelidir.
2. R dosyası:
LibModule'daki R dosyasındaki id artık statik bir sabit değil, statik bir değişkendir, bu nedenle kaynak kimliğini değiştirmek için artık switch..case .. sözdizimini kullanamazsınız
3. Diğer kaynaklar:
2. Kaynakların bölünmesiyle ilgili olarak, bazı stillerin, ortak dizelerin, paylaşılan resimlerin, çizimlerin ve diğer kaynakların common_service'de depolanması önerilir. Farklı modüllere ait kaynaklar ilgili modüllerinde saklanmalıdır.
Adım 1: İlgili modülün isDebugMode gibi proje kök dizinindeki gradle.properties altında bağımsız olarak çalışıp çalışmadığının özelliklerini bildirin. Çünkü gradle.properties dosyasında bildirilen özelliklere her modülün build.gradle içinden doğrudan erişilebilir.
Adım 2: Kırmızı kutudaki üç parçayı modülün build.gradle dosyasına ekleyin:
Modül türünü ayarlayın:
''
if (isDebugMode.toBoolean ()) {
eklenti uygula: 'com.android.library'
} Başka {
eklenti uygula: 'com.android.application'
}
Uygulama kimliğini ayarlayın:
eğer (! isDebugMode.toBoolean ()) {
applicationId "com.dovar.router"
}
AndroidManifest'i vb. Yapılandırmak için sourceSets'i kullanın.
sourceSets {
ana {
if (isDebugMode.toBoolean ()) {
manifest.srcFile'src / debug / AndroidManifest.xml '
} Başka {
manifest.srcFile'src / release / AndroidManifest.xml '
}
}
}
''
Daha iyi bir uygulama şu şekilde olmalıdır: Örnekteki uygulama gibi çalıştırılabilir bir kabuk projesi ayarlayın Daha sonra kabuk projesinde bileşen bağımlılıklarını yapılandırın.
Genel olarak, projemiz yalnızca bir Git deposuna karşılık gelir, bu nedenle tüm geliştirme üyeleri projedeki tüm kodlarda değişiklikleri düzenleyebilir ve gönderebilir.Ancak, proje yöneticileri olarak üyelerden, üyelerden kaçınmak için yalnızca sorumlu oldukları iş kodlarını göndermelerini istiyoruz. Geliştirme sürecinde, diğer üyelerin kodu yanlışlıkla değiştirildi ve hatalara neden oldu. Bileşenleştirmeden sonra, üye geliştirme sorumluluklarına göre kod değiştirme izinlerini sıfırlayabiliriz.
Varsayım: Temel çerçeve katmanı geliştirme süreci boyunca değişmeden kalır. A, modül_a'dan, B modül_b'den ve C, modül_c'den ve paketlemeden sorumludur. Hem A, hem de C ortak_hizmeti değiştirebilir. Bu yüzden module_a / module_b / module_c / common_service'i alt depolara ayırıyoruz, module_a depo yalnızca A için izinleri değiştirmek için açıktır, module_b depo yalnızca B için izinleri değiştirmek için açıktır ve module_c deposu yalnızca C izinlerini değiştirmek için açıktır, bu nedenle aşağıdaki şekil vardır. İzin dağıtımı:
Aralarından seçim yapabileceğiniz üç Git dağıtım yöntemi vardır:
Komple bileşenleme ayrımı bir veya iki günde tamamlanamaz, ancak projelerimiz her zaman geliştirilmeyi bekleyen yeni gereksinimlere sahip olacaktır. Sürüm yineleme çalışması, bileşenleştirme için proje gereksinimlerini askıya almamız neredeyse imkansızdır.
Ardından, sürüm yinelemesi ve bileşenli bölme aynı anda gerçekleştirilmelidir.İşte önerilerim:
1. Hazırlanmaya başlayın:
* APP kabuk projesi eklendi, bu projedeki uygulama projesine başvurmanız önerilir.
* Projenizin mevcut uygulama projesini kamu hizmeti katmanı olarak kullanın (doğrudan aşağıda common_service olarak anılacaktır) Elbette, bileşen henüz bölünmediği için, aynı zamanda şu anda en büyük iş bileşenidir.
* Yeni bir bileşen ekleyin (daha sonra module_search ile temsil edilir) En bilindik veya nispeten basit olan bir iş modülüyle başlamanız önerilir.Örneğin, kendi şirket projemin arama modülünün yalnızca arama işlevleri ve diğer modüllerle çok az etkileşimi var, bu yüzden Seçim onunla başlar.
2. Bir bağımlılık zinciri oluşturun:
Kabuk projesi common_service'e bağlıdır.
Kabuk projesi module_search'e bağlıdır.
module_search, common_service'e bağlıdır. (uygulama bağımlılığı)
3. DRouter'ı tanıtın:
Yukarıdaki DRouter talimatlarına bakın.
4. Kamu hizmeti katmanını ve altyapı katmanını ayırın (gerekli değildir):
Projeniz daha önce iş katmanını ve altyapı katmanını ayırmadıysa, şimdi altyapıyı common_service'den çıkarmanız önerilir.
5. Bileşenleri kademeli olarak bölün:
İlk bileşeni ayırın:
* Daha önce module_search ekledik, bu yüzden şimdi arama modülünün kodunu common_service'den çıkarmamız ve arama bileşenine koymamız gerekiyor. Şu anda, arama bileşeni hala doğrudan kamu hizmeti katmanının koduna başvurabilir, ancak kamu hizmeti katmanı yalnızca geçebilir Yönlendirme, arama işlevini kullanır.
* Ana hat için yeni gereksinimler geliştirirken, yeni eklenen kaynak dosyalarının ilgili bileşen projesine yerleştirilmesi tavsiye edilir.Önceki kaynak dosyaları geçici olarak kamu hizmeti katmanında tutulabilir, her bileşen projesinin sonraki taleplerini mümkün olduğunca az bekleyerek Bekleme listesi, kamu hizmeti katmanındadır.
* İzinler, dört ana Android bileşeni ve benzersiz üçüncü taraf kitaplık referansları, vb. Karşılık gelen bileşen Modülünde belirtilmeli ve temel çerçeve katmanı bir yana, kamu hizmeti katmanına girmemelidir.
İkinci bileşeni ayırın, üçüncü ...
(İlk bileşen başarıyla bölündükten ve piyasaya sürüldükten sonra, geri bildirim iyiyse, diğer bileşenleri ayırmaya devam edebilirsiniz)
Bileşen bölünmesinin ayrıntı düzeyi, iş modülü bölümünüze ve ekip üyelerinizin geliştirme sorumluluklarının bölünmesine bağlıdır.Çok fazla bileşeni bölmemeniz önerilir.
Yukarıdaki öğrenme talimatları için kendi yüksek çözünürlüklü düşünme yönü haritamız var ve mimarların kendi mimari video paylaşımları var (gelişmiş kullanıcı arayüzü, performans optimizasyonu, mimar kursları, NDK, hibrit geliştirme: ReactNative + Weex ve diğer Android teknik bilgileri dahil) Yapılandırma video verileri ve çeşitli e-kitap okuma), video veri toplama yöntemi: izleyin + ileri + özel mesaj yanıtlama "Android verileri" ücretsiz!