Eğer gerçekten istersen, mutlaka olur.

Adobe Native Extension #2 : Android

9 ay ago, Written by , Posted in NOTLARIM

Bir önceki yazımda, Adobe AIR hakkında ve neden extension yazmamız gerektiği hakkında bilgi vermiştim. Kısaca tekrar etmem gerekirse; AIR bize cross-platform uygulamama geliştirebilmemize olanak sağlıyor. ActionScript ile yazdığımız uygulamalarımızı Android’e, iOS’a, Windows’a ve hatta BlackBerry’e derleyebilmekteyiz. ActionScript ile yazdığımız kodların native kodlarla iletişim kurabilmesi için ise ANE yazmamız gerektiğinden bahsetmiştim.

ANE, bir pakettir. Bu paketin içerisinde hem native kodlar (bu yazı için Java – .jar) hem de ActionScript tarafında yazdığımız kodlar(.swc uzantılı kütüphane) bulunmaktadır. İki taraf birbiriyle FlashExtension kütüphanesi sayesinde iletişime geçebilmektedir. Teorik bilgiler bu kadar. Şimdi pratiğe dökelim ve puzzle parçaları yerlerine otursun.

Gerekli Ortamın Kurulması

ANE geliştirebilmemiz için gerekenler: JDK (Java Development Kit) , AIR 3 SDK , ActionScript kod yazabilmek için bir IDE(Ben Adobe Flash Builder 4.7 kullanacağım) ve java kütüphanesi geliştirmek için Android Studio.

JDK ve Android Studio için:
https://developer.android.com/studio/index.html

AIR 3 SDK için:
http://www.adobe.com/devnet/air/air-sdk-download.html

SWC Kütüphanesinin Oluşturulması(ActionScript Tarafı)

Bu bölümde Java kodumuz ve AIR uygulaması arasında arayüz görevi görecek bir ActionScript kütüphanesi yazacağız. Yazacağımız kod basit. Bir ExtensionContext oluşturacağız ve bunu ilklendireceğiz. Bu context sayesinde native taraf ve AIR arasında bir köprü kurmuş olacağız. Buna ek olarak ise basit bir fonksiyon yazacağız. Bu fonksiyon Java tarafındaki bir methodu tetikleyecek. Bu metod da ekrana bir alert dialog getirerek, gönderdiğimiz mesajı yayınlayacak. Hadi işe koyulalım.

SWC tarafı bu kadar. Şimdi iletişime geçeceğimiz Android-Java tarafını yazalım.

Java Kütüphanesinin Oluşturulması(Android Tarafı)

Amacımız .jar uzantılı bir kütüphane oluşturmak olduğundan, öncelikle bir Java kütüphane projesi oluşturmamız lazım. Bu yüzden ilk olarak normal bir Android projesi oluşturuyoruz.
1

2

Ardından gradle dosyamızdaki “applicationId” özelliğini yorum satırına alıyoruz ya da siliyoruz. Buna ek olarak apply plugin : ‘com.android.aplication’ ı ‘com.android.library’ ile değiştirerek uygulama projesini kütüphane projesine çevirmiş oluyoruz.
3

Java kodları altında olan MainActivity ve diğer default olarak gelen tüm sınıfları(classları) siliyoruz. Buna ek olarak FlashRuntimeExtensions.jar kütüphanesini projemizde libs klasörü altına eklememiz lazım. Bu kütüphaneyi indirdiğiniz AIR SDK içerisine bulabilirsiniz. Elimizdeki son yapı aşağıdaki şekilde olduğunda kodlamaya hazırız demektir.
5

Şimdi kütüphanemizi yazmaya başlayabiliriz. İhtiyacımız olan dört sınıf var: AlertExtensionContext, AlertExtension, AlertExtensionInitFunction, ShowDialogFunction. Sırasıyla bu sınıfları oluşturalım.

İlk olarak AlertExtension sınıfını yaratalım. Bu sınıf FREExtension’ı implement edeceği için üç metodu olmalı: createContext() , dispose() ve initialize().

İkinci olarak ise AlertExtensionContext sınıfını yazalım. İki metodumuz var: dispose() ve getFunctions() .

Son temel fonksiyonumuz olan init metodu için bir sınıf oluşturalım. Bu sınıf FREExtension ve FREFuntion sınıfını implement edecek.

Ve son olarak da ShowDialog sınıfımızı yazalım. Bu sınıf da FREFunction ve FREExtension sınıfını implement edecek.

Kodlama işlemleri buraya kadar. Java projemizi .jar uzantılı bir paket haline getirdikten sonra artık ANE yaratmaya hazırız demektir. Nasıl jar paketlemesi yapacağınızı bilmiyorsanız daha önceki yazıma: Jar Paketlemesi göz atabilirsiniz.

ANE Paketlemesinin Yapılması

Artık hem swc hem de java kütüphanemiz hazır olduğuna göre elimizde iki adet dosya bulunmakta: alertDialog.jar ve AlertDialogSample.swc. Bu dosyalarla birlikte çeşitli ayarlamalar yaparak ANE paketlemesi yapacağız. Bunun için daha önce indirmiş olduğumuz AIR SDK’dan yararlanacağız.Şimdi masaüstümüzde bir klasör oluşturalım ve içeriği aşağıdaki resimdeki gibi olsun.

İlk olarak “AlertDialogSample.swc” dosyasını bu dizine kopyalayın. Bu dosyayı winrar ya da türevinde açarak içindeki “library.swf” dosyasını oluşturduğunuz klasörlere(Android-ARM,Android-x86 ve default) çıkartın.
Daha sonra ise “alertdialogsample.jar” dosyasını Android-x86 ve Android-ARM klasörleri altına kopyalayın. Son durumda klasör yapımız aşağıdaki şekildeyse eğer bir sonraki aşamaya geçebiliriz.

Şimdi bulunduğunuz dizinde(Build Ane dosyası benim için) “extension.xml” adında yeni bir dosya oluşturun. Bu dosyanın içeriği aşağıdaki gibi olsun.

Son olarak dosya yapımız şu şekilde oldu:

Bundan sonrasında terminal kullanarak ilerleyeceğiz. Öncelikle windows kullanıyorsanız cmd , mac os kullanıyorsanız terminal açarak oluşturduğunuz dosya içerisine girin.

Bu şekilde “alertdialogsample.ane” dosyası proje dizininizde oluşacaktır.
Paketlemeyle ilgili detaylı bilgi için Adobe ADT Packaging

Böylece Animate CC için nasıl Android kütüphanesini kullanarak ANE oluşturduğumuzu öğrenmiş olduk. Herhangi bir probleminizde veya zorlandığınız aşamada soru sormaktan çekinmeyin.

Hayatınızdan kod eksik olmasın.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir