Android Studio Proje Yapısı (Eclipse Proje Yapısına karşı)


109

Android geliştirmeyi öğrenmeye çalışıyorum ve başlangıçta Eclipse ile Android Studio arasındaki farklı proje yapıları beni şaşırttı. Bu, Eclipse için tasarlanmış öğreticileri takip etmeyi zorlaştırır. Biri bana bu farklılıkların neden var olduğunu söyleyebilir mi? Var olmalılar mı?

Örneğin, iki farklı IDE'de R.java dosyasını bulacak olsaydım, yollar şöyle görünürdü:

Eclipse: app \ gen \ com.example.app \ R.java

Android Studio: app \ build \ source \ r \ debug \ com.example.app \ R.java

Bu yollar neden farklı? R.java'm neden Android Studio'da bir hata ayıklama klasöründe bulunuyor? Bu, erken dönemde bazı hatalara yol açar ve eğer birinin bu farklılıklar hakkında herhangi bir fikri varsa, onları takdir ederim.


3
Bu soruda resim göndermeye çalıştım ama en az 10 itibara ihtiyacım var. Yeterliliğimden sonra resimleri dahil etmek için gönderiyi düzenleyeceğim.
Jesse

9
Neden Eclipse'i kullanmıyorsunuz, böylece yalnızca Android'e özgü sorunların üstesinden geleceksiniz (özellikle Android Studio erken erişim önizlemesinde olduğu için )?
Luksprog

3
Kabul. En az bir yıllık Android geliştirme deneyiminiz olmadığı sürece IMHO, "erken erişim önizleme" modundan çıkana kadar Android Studio ile uğraşmamalısınız.
CommonsWare

2
Bunun yerine IntelliJ IDEA kullanabileceğinizi ekleyeceğim, çünkü çok kararlı. Ek olarak, Android Studio daha kararlı hale geldiğinde, aynı IDE oldukları için ona geçiş çok kolay olacaktır (yalnızca gelişmiş Android entegrasyonu sağlayan AS ile).
free3dom

3
Eclipse kullanarak Android geliştirmede 3 yıllık deneyimim oldu ve A. Studio'yu kullanmakta ciddi anlamda zorlanıyorum. Keşke birileri, insanların hareket etme zamanı olduğu için doğru cevap vermiş; Taşındım Geliştirme sırasında önseziler üzerinde çalışmak istemiyorum.
Dheeraj Bhaskar

Yanıtlar:


203

Gizem: Android Studio'nun Proje Yapısı ve Derleme Sistemi

Bunun Gradle Build System'den mi kaynaklandığını bilmiyorum (buna bahse girerim), ancak şimdiye kadar ne anladığımı size söyleyeceğim.

Güncelleme 4: 2014/09/11 Eklendi Cheat Sheet için BuildTypes, Flavorsve Variants(nihayet bu yazmak için emin hissediyorum: D)
Güncelleme 3: 2014/09/11 hassas olmak karşılaştırma çalışma alanları ve projeleri Güncelleme
Güncelleme 2: 2014/04/17 AS proje yapısına daha fazla ayrıntı eklendi
Güncelleme 1: 2013/07/29 IntelliJ Proje Yapısı eklendi

IntelliJ'in Proje yapısı (sonunda gösterilmiştir) android eklentili IntelliJ içindir. Ancak Android Studio'nun şu şekilde bölünmüş bir proje yapısı vardır:

Yapı: Projeler ve Modüller

Modül içinde Android Studio bir gibidir projede yer Eclipse

Proje içinde Android Studio bir gibidir çalışma içinde Eclipse (kesin konuşmak gerekirse, birbirine bağlı projeler ile bir çalışma alanı)

Gönderen belgelerinde (Android Studio Intellij IDEA dayanmaktadır):

IntelliJ IDEA'da ne yaparsanız yapın, bunu bir proje bağlamında yaparsınız. Proje, eksiksiz bir yazılım çözümünü temsil eden bir organizasyon birimidir.

Bitmiş ürününüz bir dizi ayrı, izole modüle ayrılabilir, ancak bu onları bir araya getiren ve daha büyük bir bütün halinde bağlayan bir proje tanımıdır.

Android için bu, uygulama başına bir proje ve kitaplık ve test uygulaması başına bir modül anlamına gelir.

Aynı proje içinde birden fazla uygulama oluşturmaya çalışırsanız birden fazla sorun vardır. Mümkün, ancak denerseniz (benim yaptığım gibi), neredeyse her şeyin proje başına tek bir uygulama ile çalışacak şekilde tasarlandığını göreceksiniz.

Örneğin, birden fazla uygulamayla hiçbir anlam ifade etmeyen "projeyi yeniden oluşturma" seçeneği vardır, diğer birçok proje ayarı işe yaramaz ve birden fazla deponuz olduğunda yerleşik VCS sistemi harika değildir.

Yapı: Klasör Yapısı

Android Studio Proje Yapısı

Üst Düzey Klasörler

1. Ana Proje

Bu, tüm proje bağlamı olacaktır ( Eclipse Land: Çalışma alanınız gibi, ancak projenizle ilgili olanlarla sınırlıdır). Ör: HelloWorldProjectverdiğiniz başvurunun adıHelloWorld

2.. Fikir

Bu, projeye özel meta verilerin Android Studio (AS) tarafından depolandığı yerdir. ( Eclipse Land: project.properties dosya)

3. Proje Modülü

Bu gerçek proje. ör: HelloWorldverdiğiniz uygulama adınız HelloWorld ise

4. dereceli

Bu, gradle oluşturma sisteminin kavanoz paketleyicisinin, yani bu kavanozun, AS'nin Windows'ta kurulu gradle (benim durumumdaki işletim sistemi) ile nasıl iletişim kurduğu yerdir.

5. Dış Kitaplıklar

Bu aslında bir klasör değil, Başvurulan Kitaplıkların ( Eclipse Land: Başvurulan Kitaplıklar) gösterildiği bir yerdir . Hedeflenen Platform burada vb. Gösterilir.

[ Yan not: Bu, Eclipse Land'deki çoğumuzun başvurulan kitaplıkları siler ve referans hatalarını düzeltmek için Proje Özelliklerini Onarırdı, hatırladın mı?]

Ayrıntılı Proje Klasörü

Bu, yukarıdaki listede 3 numara. Aşağıdaki alt dizinlere sahiptir

1. inşa

Bu, makesürecin tüm çıktılarına sahiptir, yani classes.dex, derlenmiş sınıflar ve kaynaklar vb.

Android Studio GUI'de yalnızca birkaç klasör gösterilir. Önemli olan , R.java'nızın burada ,build/source/<flavor>/r/<build type(optional)>/<package>/R.java

2. kitaplıklar

Bu, tutulma diyarında da gördüğünüz standart libs klasörüdür

3. src

Burada yalnızca Eclipse Land'deki klasör ve klasöre karşılık gelen javave resklasörünü görürsünüz . Bu IMHO sadeleştirmesi çok memnuniyetle karşılanmaktadır.srcres

Modüllere İlişkin Not:

Modüller Eclipse Land projeleri gibidir. Buradaki fikir, uygulama projesinin bağlı olduğu bir uygulama projeniz (yukarıdaki listede Modül # 3) ve birkaç kitaplık projeniz (küresel proje klasörü altında ayrı Modüller olarak (yukarıdaki listede # 1)) olmasıdır. Bu kütüphane projelerinin diğer uygulamalarda nasıl yeniden kullanılabileceğini hala bulamadım.

[ Yan not: Tüm yeniden düzenlemenin src klasöründeki basitleştirme gibi bazı faydaları vardır, ancak pek çok karmaşıklığı vardır. Zorlukların başlıca nedeni bu yeni proje düzenindeki ÇOK ÇOK ince dokümantasyondur.]

Yeni Yapı Sistemi

Yeni Derleme Sistemi için Kullanıcı Kılavuzu

Lezzetlerin ve yapı tiplerinin açıklaması, vb. - Kargaşa ne hakkında?

Tatlar ve yapı tipleri için CheatSheet

BuildType: debug ve tüm projelerde varsayılan releaseolarak buildTypesmevcuttur. Farklı APK'lar oluşturmak için AYNI KODU oluşturmak / derlemek içindir . Örneğin, releaseproguard'ı çalıştırmak isteyeceğiniz APK'larda (gizleme için), anahtarınızla imzalayın (hata ayıklama anahtarına karşı olduğu gibi), optimizasyonları çalıştırın (belki proguard veya diğer araçlar aracılığıyla), biraz farklı packageNameskullanın ( com.company.productiçin releaseve com.company.product.debugiçin kullanıyoruz debug), vb. Ayrıca BuildConfig.DEBUG, releasederlemelerde ( uygulamayı yavaşlattığı için) logcat'e günlük kaydını kapatmak için bir hata ayıklama bayrağı ( ) kullanırız . Bu, debuggeliştirme sırasında daha hızlı bir derleme, aynı zamanda releaseoyun mağazasına koymak için optimize edilmiş bir yapı sağlar.

Ürün Lezzeti: Varsayılan tat yoktur (veya kesin olmak gerekirse, varsayılan lezzet boştur / isimsizdir). FARKLI KODUN bulunduğu ücretsiz sürüm veya ücretli sürümFlavors olabilir . Aynı Kodu paylaşırlar ancak birkaç kaynak kod dosyasının veya kaynağın farklı sürümlerini (veya sürümlerini paylaşmazlar ).Main

BuildVariant: A buildVariant, oluşturulan bir APK'nin gerçekte karşılık geldiği şeydir. Öyle (sırayla) Product Flavor+ Build Type= olarak adlandırılırlarBuild Variant .
Örnek 1: Eğer varsa freeve paidiki tatlar olarak. Alacağınız derleme varyantları şunlardır:
Ücretsiz - Hata Ayıklama
Ücretsiz -
Ücretli Yayın - Hata
Ayıklama Ücretli - Yayın
Bu, 4 olası APK yapılandırmasıdır. Birkaç yapılandırmaları belirli projede mantıklı olmayabilir, ancak bunlar şunlardır mevcut.

Örnek 2: (yeni projeler için / tat yok) buildVariantsVarsayılan aroma isimsiz / boş olduğundan kullanılabilir 2 veya APK'nız var:
hata ayıklama
sürümü

Yardımcı olacaksa bunu Intellij'in Proje Yapısı ile karşılaştırın :

Intellij Proje Yapısı Anlık Görüntüsü

.İdea (1) klasörü, esas olarak dahili IntelliJ IDEA bilgilerinin bulunduğu bir dizi alt klasör içerir.

Src (2) klasörü, uygulamanızın işlevselliğini uygulayan MyActivity.java (3) dosyası kaynak kodunu içerir. Dosya com.example paketine aittir.

Res (4) klasörü çeşitli görsel kaynakları içerir.

Layout / main.xml dosyası (5) , çeşitli türlerdeki kaynaklardan oluşan uygulamanın görünümünü tanımlar.

Değerler klasörü (6) , çeşitli türlerdeki kaynakları açıklayan .xml dosyalarını depolamaya yöneliktir. Halihazırda, klasör, Dize kaynakları tanımlarına sahip bir strings.xml dosyası içerir. Renk Ekleme bölümünde de göreceğiniz gibi, düzen klasörü ayrıca örneğin bir renk tanımlayıcısı içerebilir.

Çekilebilir klasör (7) görüntüleri içerir.

Klasör gen (8) içeren R.java (9) dosyasını linkleri o görsel kaynakları ve Java kaynak kodu. Aşağıdaki bölümlerde göreceğiniz gibi IntelliJ IDEA, statik kaynaklar ve R.java arasında sıkı entegrasyonu destekler. Herhangi bir kaynak eklenir veya çıkarılır eklenmez, R.java'daki ilgili sınıflar ve sınıf alanları buna göre otomatik olarak oluşturulur veya kaldırılır. R.java dosyası da com.example paketine aittir.


3
Eclipse ve Android Studio proje yapılarını karşılaştırdığınız için çok teşekkür ederiz! Ve evet, bu proje yapısı ve günlük gelişimde nasıl kullanılabileceği ile ilgili dokümantasyon mevcut değil.
kpsfoo

1
"3. src Burada, sadece java ve res klasörünü görürsünüz ..." Daha kesin olmak gerekirse javave resaltındasınız src/main.
Code-Apprentice

İşte Android Studio klasör yapısı hakkında bazı belgeler: developer.android.com/sdk/installing/studio-build.html
David d C e Freitas

31

Android Studio: app \ build \ source \ r \ debug \ com.example.app \ R.java

Bu yollar neden farklı? R.java'm neden Android Studio'da bir hata ayıklama klasöründe bulunuyor? Bu, erken dönemde bazı hatalara yol açar ve eğer birinin bu farklılıklar hakkında herhangi bir fikri varsa, onları takdir ederim.

Basitçe söylemek gerekirse, Android Studio, sisteminizde bir hata ayıklama Derleme Türü oluşturacak şekilde yapılandırılmıştır .

Eclipse / ADT, bir seferde tek bir yapıyı desteklemek için tasarlanmıştır (söyleyebileceğim kadarıyla). Yeni derleme sisteminin birincil hedeflerinden biri ( kullanım kılavuzundan ):

Make it easy to create several variants of an application, 
either for multi-apk distribution or for different flavors of an application

Dolayısıyla, Eclipse / ADT'nin bir R.javadosya oluşturabileceği yerde , Android Studio birden çok dosyayı destekler. Oluşturulan dosya klasörde R.javayer alır debugçünkü varsayılan olarak yeni yapı sistemi türleri yarasadan destekler debugve releaseoluşturur. Derleme varyantınızı değiştirdiyseniz (düğme, AS'nin sol alt köşesi) AS'yi serbest bırakmak R.javaiçin releasedizinde oluşturulur .

Bu, basit projeler için hiçbir şey ifade etmeyebilir, ancak Yapı Değişkenlerinin desteği, üzerinde çalıştığım proje de dahil olmak üzere birçok geliştirici için derleme sürecinin büyük ölçüde basitleştirilmesi anlamına gelir.

Projemiz, toplam 8 farklı APK kombinasyonunu desteklemek için 2 yapı türüyle (hata ayıklama ve yayınlama) 4 çeşidi desteklemektedir. Ve bu kombinasyonların her birinin biraz farklı konfigürasyonları var, bu yüzden bu inşa sistemi bizim için gerçekten işe yaradı. Android stüdyom farklı bir makineye yüklendi, ancak bellek doğru şekilde hizmet veriyorsa R.javadosya içinde var build/source/<flavor>/r/<build type>/package/R.java. CI sunucumuz APK dosyalarını R.javaoluşturduğunda, ayrı paketler oluşturmak için bu dosyaların her birini kullanır .


0

Google Eclipse'de Android Geliştirici Araçları (ADT) desteğini sonlandırmak duyurumuza göre sona eriyor. Uygulama geliştirme projelerinizi mümkün olan en kısa sürede Android Studio'ya taşımalısınız. Android Studio'ya geçişle ilgili daha fazla bilgi için bkz.Android Studio'ya Geçiş.

Android Studio için Android geliştirme aracı için en iyisi yalnızca Android M'nin gelecekteki tüm desteği için -


Android Geliştiricileri için Eclipse - eclipse.org/downloads/packages/…
Yousha Aleayoub

-2

Android Studio 3.0.1 ve seçilen tüm özellikler için:

  • Android O son
  • Android Auto
  • Android şeyler
  • Android giyim
  • Android TV
  • C ++ desteği
  • Kotlin desteği

3.0.1 sürümündeki yapı diğer tüm cevaplar gibi görünmüyor.

Son yapı 2018, Android Studio 3.0.1 01/2018'de görüntülendiği gibidir.

Acemi, özellik alt klasöründe kullanılabilene benzer bir şey buldu:

Android Studio 3.0.1 01_2018'inizi güncelleyin:

Araç İpucu:

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.