Android Fundamentals Codelabs Part – 1

Google’ın Codelab’lerini incelerken farkettim ki yeni codelabler eklenmiş ancak bunlar standart olarak https://codelabs.developers.google.com/ sayfasında yer almıyor ve de çok yeni tarihliler. Google’ın sertifikalarından herkes haberdardır sanırım. Bu yeni codelabler, Associate Android Developer sertifika sınavının hazırlık codelableriymiş ve zannedersem son yıllarda Android Development’ın neredeyse tamamen değişmesiyle beraber burası da yenilenmiş. Ben de hem kendim için bilgi tazeleme hem de codelab’ler üzerinden sınava hazırlanacak olan varsa codelab dışında da takıldığı bi yer olursa referans olması açısıyla bu seriyi yazmaya karar verdim. Elimden geldiğince düzenli aralıklarla devamını yazmaya çalışacağım. Codelab’ler dışında da linkinde ilgili her bir alt başlık için slide’lar ve de şurada da daha detaylı açıklamalar yer alıyor. Her ikisini de incelemenizi tavsiye ederim.

Bildiğim kadarıyla sınav Java’da ancak hepimizin bildiği üzere yeni dünya Kotlin kullanıyor. Bu yüzden kendime de biraz ek challenge olması gerekçesiyle, Kotlin’de olmayan codelab örneklerini Kotlin’le de github’da paylaşacağım. Kotlin’de biraz yeniyim. Eksik gördüğünüz yerler için her zaman pr gönderebilirsiniz. Böylece beraber daha güzel bir kaynak oluşturmuş oluruz.

O zaman başlayalım 🙂

Peki course neler içeriyor. Aşağıdaki şekilde listelenmiş 4 bölümden oluşmaktadır. Her birinin altında farklı konulara değinilmekte.

  • Unit 1: Get started
  • Unit 2: User experience
  • Unit 3: Working in the background
  • Unit 4: Saving user data

Android fundamentals 01.1: Android Studio and Hello World

Tabi başlangıç olarak, ilk defa Android Development deneyecek herkesin bilgisayarına Android Studio kurması gerekli. Codelab’in içerisinde yazan detaylara çok fazla değinmiyorum.

İlk codelab aslında çok standart. Yıllar boyunca Android Studio’nun standart templateleri çok fazla gelişti ve uygulamaya başlamak gerekli tüm kurulumları içerir oldu. Yeni proje açıp, empty Activity seçeneğiyle oluşturduğunuzda ekranında hello world yazan bir uygulamaya sahip olacaksınız. Temel hatlarıyla codelab’de yazanları özetleyecek olursak, Activity sizin kullanıcıyla temas ettiğiniz nokta, xml dosyasında lightweight bir şekilde ui bilgisi tutuluyor. layout xml dosyanız, res folderı altında. İlerde uygulama içerisinde ihtiyaç olacak olan colors, strings, dimens, diğer layout dosyaları vs bu folder altında yer alacak. build.gradle dosyası ise uygulamanızn içerisinde kullanacağınız tüm sdk’lerin dependency olarak tanımlandığı yer. (Project: HelloWorld) şeklinde oluşan gradle dosyası app genelindeki konfigürasyonları içerirken (Module: app) app modülünün konfigürasyonlarını tutuyor. Uygulama içerisinde birden fazla modül olması durumunda ise bunların her birinin gradle dosyaları olacak. Son olarak önemli bir diğer dosya ise AndroidManifest.xml dosyası. Android bir app bileşenini başlatabilmek varolduğunu bilmelidir. Bu yüzden tüm activitylerin manifest dosyasında tanımı yer almalıdır. Tanımı olmayan bir activity’yi start etmek istediğinizde uygulama crash edecektir.

Çok güzel şu an uygulamayı çalıştırmaya hazırız. Uygulamayı run ettiğimizde, eğer açık bir emulatör yoksa yenisi create etmemizi isteyecek. Bu örnek kullandığımız birşey olmadığı için Google Play services ekli olanı kullanmasak da olacaktır ama ben genelde Google Playli olan versiyonlardan birini seçiyorum. Android emulatörü fiziksel cihazlara ihtiyacımız olmadan farklı işletim sisteminde, çözünürlükte olan cihazlarda uygulamamızı test etmemizi sağlıyor. Çok eskiden şu anki kadar hızlı çalışan emülatörlerimiz yoktu maalesef ve uygulamayı run etmek için fiziksel cihazları tercih ediyorduk. Ancak şu an emülatör fiziksel cihazlardan çok daha avantajlı konumda. Manifest dosyasında yer alan package tagi, uygulamanızın unique package name’ini göstermektedir. Manifest’deki bir diğer önemli keypointlerden biri de icon değişkeni. Uygulama ikonunu tutmaktadır.

Eğer ki uygulamanızı fiziksel bir cihazda test etmek istiyor iseniz ise usb debuggingin açık olduğundan emin olun. Aksi takdirde, usb kablosunu bağladığınızda device’ların altında cihazı göremezsiniz. Herşey hazırsa run dediğinizde az önce emülatörler çıkan pencerede şimdi sizin fiziksel cihazınız da görünüyor olacak. Onu seçip run edebilirsiniz. Logcat’de şimdi bu fiziksel cihazına düşen logları görmek için ise logcat window’unda en başta yer alan drop down’dan cihazı, 2. dropdown’dan da eğer package name’i değiştirirseniz uygulamanızdan atılan logları görebilirsiniz.

Bir sonraki step’de gradle değişikliği yapılıyor. Gradle’da değişiklik her yapıldığında, sync uyarısı otomatik olarak çıkar. Sizin ekstra herhangi birşey yapmanıza gerek yoktur. Yalnız tüm dependencyler internet üzerinden update olduğu için Android geliştirmesi yaptığınız süre boyunca internet bağlantınızın olması önemli.

Az önce çok kısaca logcat’den bahsetmiştim. Logcat hataları görmek, uygulamayı debug etmek için çok kuvvetli bir tooldur. Log.x (d: debug, i:info, w:warning, e:error) methodunu kullanarak farklı seviyelerde loglama yapabilir ve yazdıklarınızı logcat’in panelinde görebilirsiniz. Verbose’da tüm mesajları görürsünüz. Debug seviyesinde logladığınız datayı release de görmezsiniz, bu sebeple geliştirme sırasında hızlı çözüm bulmak adına önemli olabilecek örneğin network request cevapları gibi dataların loglanması developmentı kolaylaştıracaktır.

Kapanıştaki soruların cevaplarına gelirsek:

Question 1

What is the name of the layout file for the main activity?

  • MainActivity.java
  • AndroidManifest.xml
  • activity_main.xml
  • build.gradle

Question 2

What is the name of the string resource that specifies the application’s name?

  • app_name
  • xmlns:app
  • android:name
  • applicationId

Question 3

Which tool do you use to create a new emulator?

  • Android Device Monitor
  • AVD Manager
  • SDK Manager
  • Theme Editor

Question 4

Assume that your app includes this logging statement:

Log.i("MainActivity", "MainActivity layout is complete");

You see the statement “MainActivity layout is complete” in the Logcat pane if the Log level menu is set to which of the following? (Hint: multiple answers are OK.)

  • Verbose
  • Debug
  • Info
  • Warn
  • Error
  • Assert

Projeler:

References and more:

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Blog at WordPress.com.

Up ↑