{"id":837,"date":"2014-11-27T03:02:13","date_gmt":"2014-11-27T00:02:13","guid":{"rendered":"http:\/\/metehantoksoy.com\/?p=837"},"modified":"2014-11-27T03:02:13","modified_gmt":"2014-11-27T00:02:13","slug":"android-studio-da-nedir","status":"publish","type":"post","link":"https:\/\/metehantoksoy.com\/?p=837","title":{"rendered":"Andro\u0131d Stud\u0131o da Nedir?"},"content":{"rendered":"<p style=\"text-indent:2em;\"><a href=\"https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio_logo.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-897 size-large aligncenter\" src=\"https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio_logo.jpg?w=800\" alt=\"Android-Studio_logo\" width=\"800\" height=\"347\" srcset=\"https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio_logo.jpg 1347w, https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio_logo-300x130.jpg 300w, https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio_logo-1024x445.jpg 1024w, https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio_logo-768x334.jpg 768w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><\/a><\/p>\n<p style=\"text-indent:2em;\">Ge\u00e7en yaz\u0131m\u0131zda Android uygulama geli\u015ftirmek i\u00e7in Android Studio kullanaca\u011f\u0131m\u0131zdan bahsetmi\u015ftik. Bir \u00f6nceki yaz\u0131ya buraya <a title=\"Android\u2019e \u0130lk Selam!\" href=\"https:\/\/metehantoksoy.com\/2014\/11\/27\/androide-ilk-selam\/\">t\u0131klayarak <\/a>ula\u015fabilirsiniz.<\/p>\n<h3 style=\"text-indent:2em;\"><span style=\"color:#008080;\"><strong>Android Studio&#8217;ya \u0130lk Bak\u0131\u015f:<\/strong><\/span><\/h3>\n<p style=\"text-indent:2em;\">Son kullan\u0131c\u0131 olarak bakarsak (<em>bir \u00fcr\u00fcn kulland\u0131\u011f\u0131m\u0131z i\u00e7in son kullan\u0131c\u0131 oluyoruz<\/em>) tasar\u0131m olarak inceledi\u011fimizde, Android Studio&#8217;nun di\u011fer Android IDE&#8217;lerinin \u00f6n\u00fcnde oldu\u011funu s\u00f6yleyebilirim. Zira renk d\u00fczeni, temas\u0131, simgeler ile tasar\u0131m\u0131 g\u00fc\u00e7lendirilmi\u015ftir.<!--more--><\/p>\n<p style=\"text-indent:2em;\">Intellisense&#8217;i \u00e7ok g\u00fc\u00e7l\u00fc, fakat bazen tak\u0131labiliyor. Bu durumda kapat\u0131p a\u00e7man\u0131z gerekebilir. Bir interface&#8217;i implemenet etti\u011finizde, interface&#8217;in methodlar\u0131 otomatik olarak eklenmiyor. Normalde &#8220;Alt+Enter&#8221; kominasyonuyla a\u00e7\u0131lan hata \u00e7\u00f6z\u00fcm \u00f6nerisi intellisense&#8217;i, fonksiyonlar\u0131 eklemeyi \u00f6nermiyor. Onun yerine class tan\u0131mlamas\u0131 yapt\u011f\u0131n\u0131z, yani dosyan\u0131n ba\u015f\u0131na gidip sat\u0131r say\u0131n\u0131n bulundu\u011fu tarafta hata baloncu\u011fu \u00e7\u0131kmas\u0131n\u0131 beklemeniz gerekir.<\/p>\n<p style=\"text-indent:2em;\">Gradle kulland\u0131\u011f\u0131ndan dolay\u0131, k\u00fct\u00fcphane ekleme, dependency i\u015flemleri \u00e7ok kolay. Tek bir sat\u0131r ile bir k\u00fct\u00fcphane ekleyip, k\u00fct\u00fcphanenin dosyas\u0131n\u0131(.jar) kendisinin indirmesini sa\u011flayabiliyorsunuz.<\/p>\n<p style=\"text-indent:2em;\">JetBrains IntelliJ Idea \u00fczerine kurulmu\u015f bir yap\u0131 oldu\u011fu i\u00e7in, Intejli Idea&#8217;da bulunan g\u00fc\u00e7l\u00fc refactoring ve \u00a0intention actions \u00f6zelli\u011fi gibi yaz\u0131l\u0131mc\u0131n\u0131n i\u015fini kolayla\u015ft\u0131racak yanlar\u0131 g\u00fc\u00e7l\u00fcd\u00fcr.<\/p>\n<p style=\"text-indent:2em;\">Google taraf\u0131ndan direkt olarak desteklenmektedir, bundan dolay\u0131 geli\u015fmi\u015f bir IDE olma yolunda sa\u011flam ad\u0131mlarla ilerlemektedir.<\/p>\n<p style=\"text-indent:2em;\">\u00d6zellikle Android SDK \u00a0ba\u011flam\u0131nda konu\u015fmak gerekirse, SDK y\u00f6netimi ve di\u011fer i\u015flemler (<em><strong>AVD vb.<\/strong><\/em>) i\u015flemler \u00e7ok g\u00fczel dizayn edilmi\u015f ve \u00e7ok iyi y\u00f6netilmi\u015ftir. Kullan\u0131lan Android SDK&#8217;nin g\u00fcncelli\u011fi yitirmesi durumunda yaz\u0131l\u0131mc\u0131y\u0131 haberdar etmesi art\u0131 bir \u00f6zellik katm\u0131\u015ft\u0131r.<\/p>\n<p style=\"text-indent:2em;\">Debugger modul\u00fcn\u00fcn kullan\u0131m\u0131 \u00e7ok kolay. De\u011fi\u015fkenlerin i\u00e7lerindeki de\u011ferler ve debug i\u015fleminin yap\u0131ld\u0131\u011f\u0131 sat\u0131rdaki de\u011ferler direkt ayr\u0131 g\u00f6steriliyor. \u00d6rne\u011fin bir if i\u00e7inde (<em><strong>a.lenght ==b[0].length<\/strong><\/em>) gibi bir kontrol var ise ayr\u0131 alanlarda &#8220;a.length&#8221; ve &#8220;b[0].length&#8221; de\u011ferlerini g\u00f6stermektedir. Bu da \u00f6zellikle uzun kodlarda i\u015fi \u00e7ok kolayla\u015ft\u0131rmaktad\u0131r.<\/p>\n<p style=\"text-indent:2em;\">Cihaz\u0131n i\u00e7inde olu\u015fan b\u00fct\u00fcn <strong>logcat<\/strong>&#8216;ler ve hatalar debugger attach edildi\u011fi takdirde g\u00f6z\u00fck\u00fcyor.<\/p>\n<p style=\"text-indent:2em;\">Bu kadar olumlu yanlar\u0131n\u0131 sayd\u0131k ama beta olmas\u0131ndan kaynakland\u0131\u011f\u0131n\u0131 umdu\u011fum bariz olumsuzluklar\u0131 da bulunmaktad\u0131r.<\/p>\n<p style=\"text-indent:2em;\"><strong>Grandle<\/strong> bazen hata verebiliyor ve ekledi\u011finiz k\u00fct\u00fcphane bir anda eklenmemi\u015f gibi g\u00f6z\u00fck\u00fcp derlerken hata alabilirsiniz. Bu durumda tek \u00e7are bilgisayarc\u0131 atas\u00f6z\u00fcn\u00fc uygulamak. Yeniden ba\u015flat d\u00fczelir.<\/p>\n<p style=\"text-indent:2em;\">Debug moda ge\u00e7ti\u011finizde bazen uygulamay\u0131 <strong>\u00e7ok yava\u015f deploy<\/strong> edebiliyor veya uygulaman\u0131n \u00e7ok yava\u015f \u00e7al\u0131\u015fmas\u0131na neden olabiliyor. Bir debugger attach etmi\u015fken yanl\u0131\u015fl\u0131kla ikinciyi de attach etmeyi denerseniz, <strong>debugger hata veriyor<\/strong>. Bu durumda em\u00fclator\u00fc kapat\u0131p a\u00e7mak veya cihaz\u0131n ba\u011flant\u0131s\u0131 kopar\u0131p yeniden takmak \u00e7\u00f6z\u00fcm olabilir.<\/p>\n<p style=\"text-indent:2em;\">Ram kullan\u0131m\u0131 b\u00fcy\u00fck s\u0131k\u0131nt\u0131. \u00d6zellikle bilgisayar\u0131n\u0131z uzunca s\u00fcre kapatmadan beklemeye alarak kullananlardan iseniz Android Studio \u00e7ok b\u00fcy\u00fck ram miktarlar\u0131 ile \u00e7al\u0131\u015fmaya ba\u015flayabiliyor ve ram s\u0131k\u0131nt\u0131s\u0131 olmasa bile bilgisayar\u0131 fareyinin tak\u0131lmas\u0131na neden olacak \u00f6l\u00e7\u00fcde kasabiliyor. Tek \u00e7\u00f6z\u00fcm IDE&#8217;yi yeniden ba\u015flatmak.<\/p>\n<p style=\"text-indent:2em;\">\u00d6zellikle <strong>support library<\/strong>&#8216;lerde designer hata veriyor. Hatay\u0131 a\u015fman\u0131n yolunu bulabilmi\u015f de\u011filim.<\/p>\n<p style=\"text-indent:2em;\">Fakat i\u00e7tenlikle belirtebilirim, Android Studio beta oldu\u011fu halde ben proje kayb\u0131 veya nedensiz bir anda kapanma tarz\u0131 hatalarla kar\u015f\u0131la\u015fmad\u0131m. Ve yine i\u00e7tenlikle s\u00f6yl\u00fcyebilirim ki Java&#8217;n\u0131n kanayan yaras\u0131 IDE&#8217;lerdir. Android Studio bu kanayan yaraya merhem olabilir fakat \u0131srarla kar\u015f\u0131la\u015ft\u0131rmam\u0131 isteyenlere cevap olarak Android Studio \u015fu anl\u0131k bir Visual Studio de\u011fil, bunu belirtmek\u00a0gerekir.<\/p>\n<p>&nbsp;<\/p>\n<h3 style=\"text-indent:2em;\"><span style=\"color:#008080;\"><strong>\u0130lk Projemiz &#8211; Proje Olu\u015fturma<\/strong><\/span><\/h3>\n<p style=\"text-indent:2em;\">Klasik bir ilk proje olan &#8220;<strong>Hello<\/strong>&#8221; uygulamas\u0131 ile ba\u015fl\u0131yoruz. Proje olu\u015fturmay\u0131 anlatt\u0131ktan sonra ekran\u0131m\u0131zdaki neyin ne i\u015fe yarad\u0131\u011f\u0131ndan bahsedece\u011fim.<\/p>\n<p style=\"text-indent:2em;\"><span style=\"color:#003366;\"><strong>1-)<\/strong><\/span> Android Studio&#8217;yu a\u00e7\u0131n. Kar\u015f\u0131n\u0131za a\u015fa\u011f\u0131daki gibi bir ekran \u00e7\u0131kacak. <strong>New Project<\/strong>&#8216;i se\u00e7iyoruz.<\/p>\n<p><a href=\"https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-11.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-839 aligncenter\" src=\"https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-11.png?w=660\" alt=\"android-studio-1\" width=\"660\" height=\"491\" srcset=\"https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-11.png 816w, https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-11-300x224.png 300w, https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-11-768x572.png 768w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><\/a><\/p>\n<p style=\"text-indent:2em;\"><span style=\"color:#003366;\"><strong>2-)<\/strong><\/span> Uygulamam\u0131z\u0131n ad\u0131n\u0131 <strong>Application Name<\/strong> alan\u0131na, takma ismimizi veya Play Store&#8217;da kullanmak istedi\u011fimiz ismimizi <strong>Company Domain<\/strong> alan\u0131na yaz\u0131yoruz. Sonunda &#8220;<strong>.com<\/strong>&#8221; kullanman\u0131z dahilinde paket ad\u0131 &#8220;<em><strong>com.&lt;appDomain&gt;.&lt;appName&gt;<\/strong><\/em>&#8221; olarak otomatik olarak ayarlanacakt\u0131r. \u0130sterseniz paket ad\u0131n\u0131 <strong>Edit<\/strong> yaz\u0131s\u0131na basarak d\u00fczenleyebilirsiniz. Fakat paket ad\u0131n\u0131z\u0131n Play Store&#8217;da kolay bulunabilir olman\u0131z i\u00e7in kullanaca\u011f\u0131n\u0131z takma ismi i\u00e7ermesine dikkat edin. <strong>Next<\/strong>&#8216;e bas\u0131p ilerleyin.<\/p>\n<p><a href=\"https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-21.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-840 size-large aligncenter\" src=\"https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-21.png?w=660\" alt=\"android-studio-2\" width=\"660\" height=\"397\" srcset=\"https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-21.png 1080w, https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-21-300x181.png 300w, https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-21-1024x616.png 1024w, https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-21-768x462.png 768w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><\/a><\/p>\n<p style=\"text-indent:2em;\"><span style=\"color:#003366;\"><strong>3-)<\/strong><\/span> Platformalar\u0131 se\u00e7me zaman\u0131. Hangi platformalara uygulama geli\u015ftirece\u011finizi se\u00e7in. Burada dikkat edilmesi gereken sey, se\u00e7ilen minimum SDK&#8217;n\u0131n kapsama oran\u0131. Basit bit uygulama i\u00e7in y\u00fcksek SDK se\u00e7meniz takdirde uygulaman\u0131z d\u00fc\u015f\u00fck bir kitleye hitap etmektedir. M\u00fcmk\u00fcn oldu\u011funca <strong>SDK&#8217;y\u0131 minimum tutup<\/strong> <strong>Support Library&#8217;<\/strong>lerden faydalanmakta yarar vard\u0131r. Se\u00e7imden sonra <strong>Next<\/strong>&#8216;e bas\u0131p ilerliyoruz.<\/p>\n<p><a href=\"https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-31.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-841 aligncenter\" src=\"https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-31.png?w=660\" alt=\"android-studio-3\" width=\"660\" height=\"397\" srcset=\"https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-31.png 1080w, https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-31-300x181.png 300w, https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-31-1024x616.png 1024w, https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-31-768x462.png 768w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><\/a><\/p>\n<p style=\"text-indent:2em;\"><span style=\"color:#003366;\"><strong>4-)<\/strong><\/span> Bu \u00f6rnekte telefon ve tableti se\u00e7tik. Burada se\u00e7ece\u011fimiz tip, her program\u0131n paradigmas\u0131 olan <strong>main<\/strong> yerine ge\u00e7ecek ve uygulamam\u0131z ilk a\u00e7\u0131ld\u0131\u011f\u0131nda bizi kar\u015f\u0131layacak ekran componentini belirleyecektir, bir nevi. Bu \u00f6rnekte <strong>Blank Activity<\/strong>\u00a0se\u00e7ip <strong>Next<\/strong>&#8216;e bas\u0131p ilerliyoruz.<\/p>\n<p><a href=\"https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-41.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-842 aligncenter\" src=\"https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-41.png?w=660\" alt=\"android-studio-4\" width=\"660\" height=\"397\" srcset=\"https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-41.png 1080w, https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-41-300x181.png 300w, https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-41-1024x616.png 1024w, https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-41-768x462.png 768w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><\/a><\/p>\n<p style=\"text-indent:2em;\"><span style=\"color:#003366;\"><strong>5-)<\/strong><\/span> Se\u00e7ti\u011fimiz Activity&#8217;mize isim vermemizi istiyor. Bunun ilk a\u00e7\u0131l\u0131\u015fta \u00e7al\u0131\u015facak <strong>Main Activity<\/strong> oldu\u011funu hat\u0131rlamam\u0131z\u0131 sa\u011flayacak bir isim veriyoruz ve <strong>Finish&#8217;<\/strong>e bas\u0131yoruz.<\/p>\n<p><a href=\"https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-5.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-843 aligncenter\" src=\"https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-5.png?w=660\" alt=\"android-studio-5\" width=\"660\" height=\"397\" srcset=\"https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-5.png 1080w, https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-5-300x181.png 300w, https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-5-1024x616.png 1024w, https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-5-768x462.png 768w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><\/a><\/p>\n<p style=\"text-indent:2em;\"><span style=\"color:#003366;\"><strong>6-)<\/strong><\/span> Android Studio, \u015fu an se\u00e7ti\u011fimiz de\u011ferlere uygun proje dosyam\u0131z\u0131 ve projeye ba\u011fl\u0131 <strong>Gradle<\/strong>,\u00a0<strong>Manifest<\/strong> gibi dosyalar\u0131 t\u00fcretiyor. B\u00fct\u00fcn bu dosyalar\u0131 ne i\u015fe yarad\u0131\u011f\u0131n\u0131 ileride anlataca\u011f\u0131m.<\/p>\n<p><a href=\"https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-6.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-844 aligncenter\" src=\"https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-6.png\" alt=\"android-studio-6\" width=\"548\" height=\"96\" srcset=\"https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-6.png 548w, https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-6-300x53.png 300w\" sizes=\"auto, (max-width: 548px) 85vw, 548px\" \/><\/a><\/p>\n<p style=\"text-indent:2em;\"><span style=\"color:#003366;\"><strong>7-)<\/strong><\/span> <strong>Blank Activity<\/strong>\u00a0ile bir uygulama a\u00e7t\u0131\u011f\u0131m\u0131zda kar\u015f\u0131m\u0131za bu ekran gelecektir. Bundan sonras\u0131 parmaklara kuvvet diyebiliriz. Fakat elimizi koda bula\u015ft\u0131rmadan \u00f6nce biraz neyin, ne oldu\u011funu inceleyelim.<\/p>\n<p><a href=\"https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-7.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-845 aligncenter\" src=\"https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-7.png?w=660\" alt=\"android-studio-7\" width=\"660\" height=\"353\" srcset=\"https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-7.png 1374w, https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-7-300x161.png 300w, https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-7-1024x549.png 1024w, https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-7-768x411.png 768w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h3 style=\"text-indent:2em;\"><span style=\"color:#008080;\"><strong>Toolbar\u00a0<\/strong><\/span><\/h3>\n<p><a href=\"https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-taskbar2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-891 size-full\" src=\"https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-taskbar2.png\" alt=\"\" width=\"778\" height=\"90\" srcset=\"https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-taskbar2.png 778w, https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-taskbar2-300x35.png 300w, https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-taskbar2-768x89.png 768w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><\/a><\/p>\n<p style=\"text-indent:2em;\"><strong><span style=\"color:#003366;\">1)<\/span> Synchronize:\u00a0<\/strong>Proje dosyalar\u0131 \u00fczerinde Android Studio \u00fczerinden de\u011fil ba\u015fka bir program yard\u0131m\u0131yla oynam\u0131\u015f veya projenizde kullanmak \u00fczere bir dosya\u00a0eklemi\u015fseniz ve Android Studio kendisi senkronize etmemi\u015fse (otomatik senkronize etmektedir) senkronize edilmesini sa\u011flar.<\/p>\n<p style=\"text-indent:2em;\"><strong><span style=\"color:#003366;\">2)<\/span> Find:\u00a0<\/strong>Aktif olan pencerede yani dosyada arama yapman\u0131z sa\u011flar.<\/p>\n<p style=\"text-indent:2em;\"><strong><span style=\"color:#003366;\">3)<\/span> Replace:\u00a0<\/strong>Aktif olan pencerede dosya boyunca arad\u0131\u011f\u0131n\u0131z de\u011feri ba\u015fka de\u011ferle de\u011fi\u015ftirmenizi sa\u011flar.<\/p>\n<p style=\"text-indent:2em;\"><strong><span style=\"color:#003366;\">4)<\/span> Make Project:\u00a0<\/strong>K\u0131saca derleme diyebiliriz.<\/p>\n<p style=\"text-indent:2em;\"><strong><span style=\"color:#003366;\">5)<\/span> Select Configuration:\u00a0<\/strong>Build, Debug ve\u00a0Run i\u015flemlerinde IDE&#8217;nin nas\u0131l davranaca\u011f\u0131n\u0131 belirleyen konfigurasyon ayarlar\u0131n\u0131 yapman\u0131z\u0131 sa\u011flar.<\/p>\n<p style=\"text-indent:2em;\"><strong><span style=\"color:#003366;\">6)<\/span> Run App:\u00a0<\/strong>Uygulaman\u0131n Debugger eklenmeden telefona-emulatore deploy edilmesini\u00a0sa\u011flar.<\/p>\n<p style=\"text-indent:2em;\"><strong><span style=\"color:#003366;\">7)<\/span> Debug App:\u00a0<\/strong>Uygulaman\u0131n Debug modunda telefona-emulat\u00f6re deploy edilmesini sa\u011flar.<\/p>\n<p style=\"text-indent:2em;\"><strong><span style=\"color:#003366;\">8)<\/span> Attach Debugger<\/strong>:\u00a0Telefon &#8211; emulator \u00fczerinde \u00e7al\u0131\u015fan kendi uygulamam\u0131za veya ba\u015fka herhangi bir uygulamaya debugger eklememizi sa\u011flar.<\/p>\n<p style=\"text-indent:2em;\"><strong><span style=\"color:#003366;\">9)<\/span> Settings<\/strong>:\u00a0Android Studio&#8217;nun ayarlar\u0131na ula\u015fmam\u0131z\u0131 sa\u011flar.<\/p>\n<p style=\"text-indent:2em;\"><strong><span style=\"color:#003366;\">10)<\/span> Project Structure<\/strong>:\u00a0Android SDK, JDK ve di\u011fer bile\u015fenlerin ayarlar\u0131n\u0131n yap\u0131ld\u0131\u011f\u0131, bilgisayar \u00fczerindeki yerlerinin de\u011fi\u015ftirilebildi\u011fi yerdir.<\/p>\n<p style=\"text-indent:2em;\"><strong><span style=\"color:#003366;\">11)<\/span> Sync Project with Gradle Files<\/strong>:\u00a0Projenin gradle dosyalar\u0131na uygun olarak senkronize edilmesini sa\u011flar. Bu \u015fu anlama gelir gradle dosyas\u0131 \u00fczerinde oynama yapt\u011f\u0131m\u0131zda Android Studio kendisi senkronize etmezse bu butona bas\u0131p senkronize edebiliriz. \u00a0Gradle&#8217;nin ne oldu\u011fu a\u015fa\u011f\u0131da a\u00e7\u0131klanacakt\u0131r.<\/p>\n<p style=\"text-indent:2em;\"><strong><span style=\"color:#003366;\">12)<\/span> AVD Manager<\/strong>:\u00a0Android SDK ile y\u00fcklenen <em><strong>Android Virtual Device Manager<\/strong><\/em>&#8216;i k\u0131sayoldan ba\u015flatabilmemizi sa\u011flar. AVD, SDK Manager arac\u0131l\u0131\u011f\u0131yla y\u00fckledi\u011fimiz cihaz imajlar\u0131yla yeni bir sanal cihaz olu\u015fturmam\u0131z\u0131 ve uygulamalar\u0131m\u0131z telefona gerek duymadan bilgisayardan \u00e7al\u0131\u015ft\u0131rabilmemizi sa\u011flar.<\/p>\n<p style=\"text-indent:2em;\"><strong><span style=\"color:#003366;\">13)<\/span> SDK Manager<\/strong>:\u00a0Ad\u0131ndan anla\u015f\u0131ld\u0131\u011f\u0131 gibi <em><strong>Android SDK<\/strong><\/em> ile ilgili g\u00fcncellemeleri denetleyebilece\u011fimiz, yeni API&#8217;lar\u0131 indirebilece\u011fimiz yerdir.<\/p>\n<p style=\"text-indent:2em;\"><strong><span style=\"color:#003366;\">14)<\/span>\u00a0Android Device Monitor<\/strong>:\u00a0\u00c7al\u0131\u015fan cihazlar\u0131n durumunu g\u00f6rebilece\u011fimiz yerdir.<\/p>\n<p style=\"text-indent:2em;\"><strong><span style=\"color:#003366;\">15)<\/span>\u00a0Help Topics<\/strong>:\u00a0<em>Intellij IDEA<\/em> hakk\u0131nda yard\u0131m ba\u015fl\u0131klar\u0131n\u0131 g\u00f6rebilece\u011fimiz siteyi a\u00e7ar.<\/p>\n<p style=\"text-indent:2em;\"><strong><span style=\"color:#003366;\">16)<\/span>\u00a0Search<\/strong>:\u00a0Her yerde arama yapmam\u0131z\u0131 sa\u011flar. Yani b\u00fct\u00fcn proje i\u00e7indeki dosyalarda arama yapabilmemize imkan tan\u0131r.<\/p>\n<p>&nbsp;<\/p>\n<h3 style=\"text-indent:2em;\"><span style=\"color:#008080;\"><strong>Project Tab<\/strong><\/span><\/h3>\n<p><a href=\"https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-project-tab.png\"><img loading=\"lazy\" decoding=\"async\" class=\" size-full wp-image-854 aligncenter\" src=\"https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-project-tab.png\" alt=\"android-studio-project-tab\" width=\"348\" height=\"590\" srcset=\"https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-project-tab.png 348w, https:\/\/metehantoksoy.com\/wp-content\/uploads\/2014\/11\/android-studio-project-tab-177x300.png 177w\" sizes=\"auto, (max-width: 348px) 85vw, 348px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-indent:2em;\"><span style=\"color:#003366;\"><strong>1)<\/strong><\/span>\u00a0<strong>src:\u00a0<\/strong>Projemize ait <em><strong>source<\/strong> <\/em>dosyalar\u0131m\u0131z\u0131 i\u00e7eren klas\u00f6rd\u00fcr.<\/p>\n<p style=\"text-indent:2em;\"><strong><span style=\"color:#003366;\">2)<\/span>\u00a0java: \u00a0<\/strong>Java paketlerimizi (<em><strong>app packages<\/strong><\/em>) i\u00e7eren klas\u00f6rd\u00fcr.<\/p>\n<p style=\"text-indent:2em;\"><strong><span style=\"color:#003366;\">3)<\/span>\u00a0package name:\u00a0<\/strong>Projemizi olu\u015ftururken kulland\u0131\u011f\u0131m\u0131z isimle \u00fcretilen <em><strong>paket ismidir<\/strong><\/em>. Uygulama kullan\u0131lacak classlar\u0131 bar\u0131nd\u0131r\u0131r.<\/p>\n<p style=\"text-indent:2em;\"><strong><span style=\"color:#003366;\">4)<\/span>\u00a0res:\u00a0<\/strong>Uygulama kullan\u0131lan kaynaklar\u0131(<em><strong>resources<\/strong><\/em>) i\u00e7eren klas\u00f6rd\u00fcr. Resimler, metinler, videolar, layoutlar hepsi bu klas\u00f6rde bulunur.<\/p>\n<p style=\"text-indent:2em;\"><strong><span style=\"color:#003366;\">5)<\/span>\u00a0drawable-xxx:\u00a0<\/strong>Uygulamada kullan\u0131lan simgeleri, navigation drawer resimlerini vs. i\u00e7eren klas\u00f6rd\u00fcr. her biri farkl\u0131 boyutlarda \u00a0ayn\u0131 dosyalar\u0131 i\u00e7erir.<\/p>\n<p style=\"text-indent:2em;\"><strong><span style=\"color:#003366;\">6)\u00a0<\/span>layout:\u00a0<\/strong>Uygulamam\u0131zda kullan\u0131lan <em><strong>layout dosyalar\u0131m\u0131z\u0131<\/strong><\/em> bar\u0131nd\u0131ran klas\u00f6rd\u00fcr. Activitylerimizin, Fragmentlar\u0131m\u0131z\u0131n, templatelerimizin vs. layout dosyalar\u0131 burada bulunmal\u0131d\u0131r. Baz\u0131 t\u00fcr layout dosyalar\u0131\u00a0i\u00e7in bir <em><strong>zorunluluk yoktur<\/strong><\/em> fakat bulunmas\u0131 proje dosyam\u0131za sonradan bakt\u0131\u011f\u0131m\u0131zda <em><strong>daha rahat anlamam\u0131za<\/strong><\/em> yard\u0131mc\u0131 olur.<\/p>\n<p style=\"text-indent:2em;\"><strong><span style=\"color:#003366;\">7)\u00a0<\/span>menu:\u00a0<\/strong>Uygulamam\u0131zda kulland\u0131\u011f\u0131m\u0131z men\u00fclerimizin layout dosyalar\u0131n\u0131 bar\u0131nd\u0131r\u0131r. her activity i\u00e7in ayr\u0131 bir me\u00fc dosyas\u0131 bulunur. Bu da her activity&#8217;de farkl\u0131 men\u00fcler g\u00f6stermemize yard\u0131mc\u0131 olur.<\/p>\n<p style=\"text-indent:2em;\"><strong><span style=\"color:#003366;\">8)<\/span>\u00a0values<\/strong>:\u00a0Uygulamam\u0131zda kulland\u0131\u011f\u0131m\u0131z metinleri, sitil dosyalar\u0131n\u0131, kod okunurlu\u011funu art\u0131rmak i\u00e7in kullanaca\u011f\u0131m\u0131z renk kodlar\u0131n\u0131 bar\u0131nd\u0131r\u0131r. <em><strong>Value<\/strong> <\/em>dosyas\u0131nda kulland\u0131\u011f\u0131m\u0131z xml attribute tagine g\u00f6re, b\u00fct\u00fcn resource dosyalar\u0131 gibi &#8220;<em><strong>R<\/strong><\/em>&#8221; yap\u0131s\u0131n\u0131n i\u00e7erisinde indekslenir. R&#8217;nin ne oldu\u011fu a\u015fa\u011f\u0131da a\u00e7\u0131klanacakt\u0131r.<\/p>\n<p style=\"text-indent:2em;\"><strong><span style=\"color:#003366;\">9)<\/span>\u00a0AndroidManifest.xml:\u00a0<\/strong>Uygulamam\u0131z\u0131n <em><strong>manifest dosyas\u0131d\u0131r<\/strong><\/em>. Manifest dosyas\u0131 arac\u0131l\u0131\u011f\u0131yla Android&#8217;e bu uygulama nerden ba\u015flayacak, hangi sistem servislerini kullanacak, hangi yetkileri talep etmekte, hangi activityleri bar\u0131nd\u0131racak gibi bilgileri veririz.<\/p>\n<p style=\"text-indent:2em;\"><strong><span style=\"color:#003366;\">10)<\/span>\u00a0build.gradle:\u00a0<\/strong>Derleme i\u015flemine ait <strong>Gradle<\/strong> dosyas\u0131d\u0131r. Buradaki\u00a0<em><strong class=\"markup--strong markup--p-strong\">minSdkVersion<\/strong> <\/em>ve\u00a0<em><strong class=\"markup--strong markup--p-strong\">targetSdkVersion<\/strong><\/em> daha \u00f6nce <em><strong>AndroidManifest<\/strong> <\/em>dosyas\u0131nda bulunan de\u011ferlerin ayn\u0131s\u0131d\u0131r.\u00a0<em><strong class=\"markup--strong markup--p-strong\">compileSdkVersion<\/strong> <\/em>da projemizin\u00a0compile etmek istedi\u011fin SDK versiyonunu belirtir. Gradle&#8217;nin ne oldu\u011funu a\u015fa\u011f\u0131da a\u00e7\u0131klanacakt\u0131r.<\/p>\n<p style=\"text-indent:2em;\"><span style=\"color:#003366;\"><em><strong>11)<\/strong><\/em><\/span>\u00a0<strong>proguard-rules.pro:\u00a0<\/strong>Proguard kurallar\u0131n\u0131n oldu\u011fu dosyad\u0131r. ProGuard&#8217;\u0131n ne oldu\u011fu a\u015fa\u011f\u0131da a\u00e7\u0131klanacakt\u0131r.<\/p>\n<p>&nbsp;<\/p>\n<h4 style=\"text-indent:2em;\"><span style=\"color:#008080;\"><strong>R Nedir?<\/strong><\/span><\/h4>\n<p style=\"text-indent:2em;\">R yap\u0131s\u0131, resource dosyas\u0131nda bulunan b\u00fct\u00fcn dosyalar\u0131 indeksleyerek uygulama i\u00e7erisinde direkt olarak &#8220;R.string.xxx&#8221; veya &#8220;R.layout.yyy&#8221; bi\u00e7iminde ula\u015fabilmemizi sa\u011flayan classt\u0131r.<\/p>\n<p>&nbsp;<\/p>\n<h4 style=\"text-indent:2em;\"><span style=\"color:#008080;\"><strong>Gradle Nedir?<\/strong><\/span><\/h4>\n<p style=\"text-indent:2em;\">Android uygulama geli\u015ftirme i\u015flemini otomatikle\u015ftiren yani otomatize eden bir derleme sistemidir. Android Studio&#8217;nun daha i\u015flevsel \u00e7al\u0131\u015fmas\u0131na yard\u0131mc\u0131 olur.<\/p>\n<p style=\"text-indent:2em;\">Gradle build,debug ve release i\u015flemlerini daha h\u0131zland\u0131rmakta ve kolayla\u015ft\u0131rmaktad\u0131r. eklenen k\u00fct\u00fcphaneyi bulup, k\u00fct\u00fcphane dosyas\u0131n\u0131 direk olarak indirip projeye kendisi ekler, proje klas\u00f6r\u00fcnde de\u011fi\u015fiklik yap\u0131ld\u0131\u011f\u0131nda bu de\u011fi\u015fikli\u011fi otomatik olarak projeye yans\u0131t\u0131r, \u00a0Gradle Android uygulamas\u0131 geli\u015ftirme a\u015famalar\u0131n\u0131 otomatize eden bir build sistemidir. Gradle test, debug ve release i\u015flemlerini daha kolay hale getirmektedir. Android i\u00e7in tercih edilmesinin sebebi de i\u00e7inde xml, resim ve font dosyalar\u0131 gibi Android projesinde gereken di\u011fer bile\u015fenleri bar\u0131nd\u0131ran paketlerin olu\u015fturulabilmesidir. Biz kod yazarken Grandle arkada projeyi s\u00fcrekli kontrol etmektedir.<\/p>\n<p>&nbsp;<\/p>\n<h4 style=\"text-indent:2em;\"><span style=\"color:#008080;\"><strong>ProGuard Nedir?<\/strong><\/span><\/h4>\n<p style=\"text-indent:2em;\">ProGuard&#8217;\u0131n iki amac\u0131 vard\u0131r. Bunlar\u0131n birincisi Java Class&#8217;lar\u0131 compile edildikten sonra kolay bi\u00e7imde <strong>decompile<\/strong> edilebilmektedir. Decompile edildi\u011finde, java classlar\u0131 de\u011fi\u015fken isimlerinde stringlere kadar <strong>ortaya \u00e7\u0131k\u0131yor<\/strong>. ProGuard, de\u011fi\u015fken isimlerini <em><strong>anlams\u0131zla\u015ft\u0131r\u0131p<\/strong><\/em>, stringleri ve di\u011fer tipteki de\u011fi\u015fkenleri, sabit olarak i\u00e7lerine atanan de\u011feri, \u00f6rne\u011fin sabit olarak bir API Key de\u011fi\u015fken gibi, belirli bir <strong><em>kriptolama<\/em><\/strong> i\u015flemine tabi tutup\u00a0kodlama i\u015flemini yapar. Kodun i\u00e7ine anlams\u0131z instruction&#8217;lar ekler. Yani k\u0131saca java classlar\u0131 \u00fczerine yap\u0131lan <em><strong>obfuscate<\/strong> <\/em>i\u015flemini engeller,zorla\u015ft\u0131r\u0131r. \u00a0Classlar\u0131n yap\u0131s\u0131n\u0131 bozmadan <em><strong>boyutlar\u0131n\u0131 k\u00fc\u00e7\u00fcltmekle<\/strong><\/em> de sorumludur. Daha detayl\u0131 bilgi i\u00e7in \u015fu sayfay\u0131 ziyaret edebilirsiniz. <a title=\"ProGuard\" href=\"http:\/\/developer.android.com\/tools\/help\/proguard.html\" target=\"_blank\">Android Developers &#8211; ProGuard<\/a><\/p>\n<p style=\"text-indent:2em;\">Bu yaz\u0131m\u0131zda sizlere Android Studio&#8217;yu basit\u00e7e tan\u0131tt\u0131m. Android Studio&#8217;yu daha detayl\u0131 \u00f6\u011frenmek ve k\u0131sayollar ve ipu\u00e7lar\u0131 hakk\u0131nda bilgi edinmek i\u00e7in Android Developers alt\u0131nda \u015fu sayfay\u0131 ziyaret edebilirsiniz.\u00a0\u00a0<a title=\"Android Studio - Tips and Tricks\" href=\"https:\/\/developer.android.com\/sdk\/installing\/studio-tips.html\" target=\"_blank\">Android Developers : Android Studio<\/a><\/p>\n<p style=\"text-indent:2em;\">Bir sonraki yaz\u0131m\u0131zda elimizi koda bula\u015ft\u0131r\u0131p activitylerle u\u011fra\u015f\u0131p basit kodlar yazaca\u011f\u0131z. Her zamanki gibi takipte kal\u0131n \ud83d\ude42<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ge\u00e7en yaz\u0131m\u0131zda Android uygulama geli\u015ftirmek i\u00e7in Android Studio kullanaca\u011f\u0131m\u0131zdan bahsetmi\u015ftik. Bir \u00f6nceki yaz\u0131ya buraya t\u0131klayarak ula\u015fabilirsiniz. Android Studio&#8217;ya \u0130lk Bak\u0131\u015f: Son kullan\u0131c\u0131 olarak bakarsak (bir \u00fcr\u00fcn kulland\u0131\u011f\u0131m\u0131z i\u00e7in son kullan\u0131c\u0131 oluyoruz) tasar\u0131m olarak inceledi\u011fimizde, Android Studio&#8217;nun di\u011fer Android IDE&#8217;lerinin \u00f6n\u00fcnde oldu\u011funu s\u00f6yleyebilirim. Zira renk d\u00fczeni, temas\u0131, simgeler ile tasar\u0131m\u0131 g\u00fc\u00e7lendirilmi\u015ftir.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[13,2,7],"tags":[],"class_list":["post-837","post","type-post","status-publish","format-standard","hentry","category-android","category-development","category-os"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/metehantoksoy.com\/index.php?rest_route=\/wp\/v2\/posts\/837","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/metehantoksoy.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/metehantoksoy.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/metehantoksoy.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/metehantoksoy.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=837"}],"version-history":[{"count":0,"href":"https:\/\/metehantoksoy.com\/index.php?rest_route=\/wp\/v2\/posts\/837\/revisions"}],"wp:attachment":[{"href":"https:\/\/metehantoksoy.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=837"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/metehantoksoy.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=837"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/metehantoksoy.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=837"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}