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:

2 responses to “Android Fundamentals Codelabs Part – 1”

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.