Android Instant Apps’e Genel Bakış


Native Android apps that run instantly without installation

Android Instant App’leri ilk duyduğumda tam beklenen şey gelmiş, çok iyi fikir diye düşünmüştüm. Biraz daha derinine inip araştırmamı, merak eden diğer Android Developer’larla da paylamanın zamanı geldi geçiyordu. Yukarıda gördüğünüz gif early adopter’lerden biri olan vimeo’nun Android Instant App’i nasıl kullandığını gösteriyor. Nasıl bir süreç yaşadıklarını detaylı olarak anlatan medium’daki yazılarından aldım. Okumaya devam et

Android Lifecycle-Aware components


Google I/O’da tanıtılan ve aslında biz Android geliştiricileri oldukça heyecanlandıran en önemli gelişmelerden biri de Lifecyle-Aware Component’lerdi. Ben de yeni hakkında detaylı bir yazma fırsatı bulabiliyorum. 22 Temmuz’da Google Dome’da GDG Istanbul olarak gerçekleştireceğimiz codelab’in konularından biri de bu componentler. Merak edenlerle hep beraber inceleyebiliriz.

Componentlerin detaylarını konuşmaya başlamadan Android Activity Lifecycle’ı bir hatırlamakta fayda var. Aşağıdaki imaj aslında bize tüm akışı özetlemiş oluyor. Activity launch edildiğinde sırasıyla onCreate(Activity’nin yaratıldığı state), onStart(Activity’nin kullanıcıya visible olduğu state), onResume methodları trigger ediliyor ve Activity run edilmiş oluyor. Eğer üzerinde başka bir activity açılırsa, başka bir app’e giderse vs onPause methodu çağrılıyor. Activity sistem tarafından sonlanıyorsa ise onPause ardından, onStop(Activity tamamen görünmez olur) ve onDestroy methodları da tetikleniyor. Okumaya devam et

Google I/O’17 Developer Festival & 1 week with GDGs at SF :)


Uzun ve eğlenceli geçen bir haftanın ardından biraz dinlenip, festival notlarını paylaşmanın zamanı geldi. Ama biraz daha öne gidip, konferans öncesinde Türkiye’deki tüm GDG’ler olarak bir haftayı nasıl geçirdiğimizi de paylaşıyorum (plus) 🙂 Benim için bu yazının en zor yanı, anlatacak fotoğrafları seçmek oldu.

Herkesin bildiği gibi Google I/O 17-18-19 Mayıs tarihlerindeydi. Ama biz GDG’ler için program biraz daha doluydu 🙂

  • 15 Mayıs Pazartesi Akşamı: GDG Dinner Party
  • 16 Mayıs: GDG Summit + WTM Dinner Party
  • 17 Mayıs: I/O 1.gün + I/O Party
  • 18 Mayıs: I/O 2. gün + I/O Konser
  • 19 Mayıs: I/O 3. gün

Okumaya devam et

Firebase’le Tanışma


Şimdi ilk başlayanlar için Firebase nedirden girersek; Firebase, mobil ve web uygulamaları yapılandırabileceğiniz, data okuyan, authentication methodları tanımlayabileceğiniz ve datanız için güvenlik ve izinleri konfigüre edebileceğimiz  bir platformdur. Firebase’in en güzel tarafı backendi çok fazla geliştirme yapmadan sağladığı destekle yapabiliyor olmamız. Bu yazıda Firebase’i manual olarak projemize nasıl ekleyebileceğimizi anlatacağım.

Öncelikle, https://firebase.google.com/’dan firebase’in free accountuna login olmanız gerekmektedir. Sitedeki olanakları inceleyebilirsiniz ancak free account’da da çok fazla ek olanak sağlandığı için en azından başlangıç için free accountla devam edilebilir. Ardından create new project seçeneğiyle ilerleyerek backend ini Firebase’de tutmak istediğimiz uygulamayı create edebiliriz.

screen-shot-2016-11-07-at-22-40-33

screen-shot-2016-11-07-at-22-40-53

Buradan hangi platform için Firebase’i kullanmak istiyorsak onu seçip ilerliyoruz. Biz bu örnekte Android’le ilerleyeceğiz. Androidi seçtiğimizde aşağıdaki gibi ekranla karşılaşıyor olacağız. Burada package name, app name gibi değerler kendi girebileceğimiz, uygulamaya verdiğimiz olmakla beraber Debug signing certificate’i nasıl alacağınızı bilmiyorsanız bir sonraki imajdaki gibi uygulama seçilip ardından Gradle dosyası seçilir, refresh etme seçilir. İmajda da görüldüğü gibi app, tasks, android altındaki signing report çift tıklanmalıdır. Run sekmesinde toogle tasks executions/text mode’a tıklanırsa ilgili outputu görüyor oluruz.

 

screen-shot-2016-11-08-at-19-45-16

screen-shot-2016-11-08-at-19-42-21

Burdan aldığımız değeri Firebase console’da girdiğimizde aşağıdaki 2. ekranla karşılaşıyor olacağız.

screen-shot-2016-11-08-at-23-15-50

Aynen yukarıdaki imajda gösterildiği gibi project görünümüne geçip ardından bir önceki işlemde oluşup otomatikman download olan google-services.json dosyasını app altında bırakmalıyız. Ardından da yine aşağıdaki imajda belirttiği gibi app level ve project level olmak üzere farklı düzeylere gradle için ekleme yapıyoruz.

screen-shot-2016-11-08-at-23-19-21

Gradle sync işleminde “Failed to resolve: com.google.firebase:firebase-core:9.0.0” gibi bir hata alırsanız aslında bu Google Play Services’i SDK manager’dan update etmeniz gerektiği anlamına gelmektedir. Google Play Services 9.0 Release notlarında da olduğu gibi Firebase 9.0.0 Google Play Service 9.0 kullanılarak yapılandırılmıştır ve artık com.google.firebase:* altında yer almaktadır.

Böylece Firebase’i projemize bağlamış olduk. Tabi Firebase online çalışan bir database olduğu için bir sonraki step olarak Manifest dosyasında Internet permission’ınını eklememiz gerekmekte.

<uses-permission android:name=”android.permission.INTERNET”</uses-permission>

Tamam şimdi gradle’a Firebase’i ekledik. Aynı zamanda Manifest dosyasına da Internet iznini ekledik. Bir sonraki adım Firebase’i uygulamamızda initalize etmek olacak. Bunu application class’ında yapmamız gerekmekte. Bu sebeple bir util package’ı oluşturup altında uygulamamızın adı + “Application” formationda Application’dan extend eden bir class oluşturabiliriz. Application class’ı normalde uygulama genelinde initialize etmemiz gereken birşey varsa kullanılır. Bu sebeple Firebase için gayet uygundur. Tabi Custom Application class’ımızı Manifest’de tanımlamayı da unutmayalım.

@Override
public void onCreate() {
    super.onCreate();
    Firebase.setAndroidContext(this);
}

Yukarıda görüldüğü gibi, Application class’ın içerisinde setAndroidContext methodunu çağırarak, Firebase’i register etmiş oluyoruz. Tabi bunu Activity’de de yapabilirdik. Ancak bu şekilde yaptığımızda ilgili methodun çağrılacağından 100% emin olmuş oluyoruz.

Sonrasında ise Firebase url’ini eklememiz gerekmekte. Bunu direk bir constant class’ı içerisine yazabileceğimiz gibi, kodu birden çok firebase backend’i kullanacağımız varsayımında  gradle.properties dosyasına önce aşağıdaki gibi ekleyip;

UniqueFirebaseRoolUrl="https://fir-firstproject-6c1ce.firebaseio.com/"

Ardından, bunu ilgili modülün altındaki build.gradle dosyasına ekleyip;

buildTypes.each {
    it.buildConfigField 'String', 'UNIQUE_FIREBASE_ROOT_URL', UniqueFirebaseRoolUrl
}

Constant class’ında buradaki değişken(UNIQUE_FIREBASE_ROOT_URL) yardımıyla ulaşmak daha doğru olabilir.

Artık herşey hazır olduğuna göre yapabildiğimiz en basit şeyi yapıp, yani Firebase’deki database’imizi bir data ekleyip Firebase entegrasyonunu tamamlayabiliriz. Ekleme yapmadan öncesinde, firebase console’dan baktığınızda hiç bir datanın olmadığını göreceksiniz.

screen-shot-2017-01-08-at-11-10-43

Activity’imizin layoutuna basitçe bir floating action button ekleyip, buraya tıkladığında herhangi birşey eklemesini tetikleyebiliriz. Tabi bunun için küçük bir dipnot gradle dosyasında design support library’nin ekli olması gerekmekte.

compile 'com.android.support:design:23.4.0'

<android.support.design.widget.FloatingActionButton
    android:id="@+id/fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@android:drawable/btn_plus"
    android:layout_gravity="bottom|right"
    android:layout_marginRight="@dimen/activity_horizontal_margin"
    android:layout_marginBottom="@dimen/activity_vertical_margin"/>
Firebase ref = new Firebase(FirstFirebaseAppConstant.FIREBASE_URL);
ref.child("test").setValue("Elif");

Böylece FireBase’le tanışmış olduk. Sonraki yazılarda daha detaylı olarak inceleyeceğiz. İyi pazarlar 🙂

screen-shot-2017-01-08-at-13-41-26

Referanslar:

https://firebase.google.com/docs/android/setup#manually_add_firebase

https://github.com/udacity/ShoppingListPlusPlus

https://firebase.google.com/support/guides/firebase-android#import_your_project_to_the_new_firebase_console_numbered

https://www.firebase.com/docs/android/guide/setup.html

Building a Material Design App with the Android Design Support Library: Hack’n Break Codelab


Türkiye’deki ilk açık inovasyon kampı fikriyle doğan ve İzmir’de yaklaşık bir hafta sürerek çok sayıda konuşma, lab ve hackothanlarla devam eden katılanlara hem deniz kenarında kamp yapıp hem de kendilerini geliştirme imkanı sunan Hack’n Break‘e Google’ın da katılımıyla ben de Murat Can Bur ve Semih Bozdemir’le gerçekleştirdiğimiz Android Codelab’iyle katılma fırsatı buldum. Codelab’in büyük bir kısmını Android Design Support Library’yle sıfırdan hep beraber yazdığımız app kapsadı. Bu yazıda anlattıklarımızın bir kere daha üstünden geçip, takılınan nokta varsa da klavuzluk etmeyi amaçlıyorum. Codelab google.developers sunduğu codelab ve örnek kodlar temel alınarak gerçekleştirilmiştir.

İzmir’de gerçekleştirilen, ilk olan, sıcak yaz günlerine rağmen ilgili bir kalabalığa workshop gerçekleştirmenin mutluluğu yanında, yaz ortası Android’de Google Developer Expert olmanın ardından gerçekleştirdiğim ilk tech event olması açısından bu workshop benim için ayrı bir önemdeydi. 🙂 Okumaya devam et