10 Mart 2014 Pazartesi

Linux Üzerinde Lazarus IDE ile Android Programlama Yazısının Tercümesidir.

Yazıyı, internetde maalesef bu konuyla ilgili neredeyse yok hükmündeki türkçe kaynak durumundan dolayı yarım yamalak İngilizce bilgisi ile çevirmeye çalıştım. Az çok linux üzerinde lazarus ile Android platformlar için yazılım geliştirme yapabilmek için iyi başlangıca adım attırabilecek bir kaynak olduğunu düşünmekteyim. Şayet daha düzgün bir çeviri yapılırsa bu yazının yerine onu da seve seve koyacağımı herkesi bilmesini isterim. Faydalı olması dileğiyle..

 Pascal Savaşçısının Yolculuğu


Bilgisayar kullanan insanlar sık sık söylüyor : Pascal öldü, Pascal bir oyuncak dil vs. Ama söylediklerinin hiçbir delili yoktur. TIOBE Programlama endeksinin gösterdiği değerler onun en istikrarlı 20 dil içinde olduğunu göstermektedir. (Ticari ortamda esp.) kullanıcılarının artan sayısını da göstermektedir. Bu blog sürekli olarak, genellikle çok zarif şeylerin pascalla yapılabilir olduğunu ortaya çıkaracaktır.

14 Ekim 2013 Pazartesi.

Arayüze Özel Çizim yaparak Android ile Programlama

Tamam, Free Pascal ve Lazarus ile Android uygulamalar yazmanın mümkün olduğunu sana okudum. Sen doğrudan wiki ye git, oradaki bir sürü adımları takip et ve sonuç BAŞARISIZLIK !
Sonra şüphesiz söylenmeye başlar ve şaka olabileceğini düşünürsün.

Beni dinle ahbap, FPC Android desteği hala geliştirilmekte ve saf arm-android desteği birkaç ay önce eklendi. Bu hedef FPC'de yeterince deneyimli olanlar için kullanılabilir (derleyici önyükleyebilir, derleme vs.seçenekleri ayarlanabilir) ve tüm kurulum yapmak için tembellik sayılmaz. çoğu sorunlar bu olmayan adımları iyice okumamaktan, belki önemli bir bölümünü atlamaktan kaynaklanıyor. Yani onlardan biriyseniz, ya hareket tarzınızı değiştirin veya kararlı sürümün mevcut desteği çıkana kadar bekleyin.

Ben adım adım FPC gövdesini ayarlayarak arm-android hedef desteği ile izleyen Android uygulama inşaa etme desteği için anlatmaya çalışacağım. Tüm linux (kubuntu 13.04) 32-bit üzerinde yapıldığını unutmayın, ancak her desteklenen ana bilgisayar plarformları için çalışması gerekir.

İlk şey, son kararlı sürüm FPC

FPC, önyüklemeli bir derleyiciyle, son kararlı sürüm ve sonraki kararlı versiyonlarda gövdeyi inşaa etmenin mümkün olacağı, garanti edilebilir. Eski sürüm ve revizyonlarda hiçbir garantisi yoktur, ve bu şeyler gövded kırılabilir. Bu yazı yazıldığı sırada, FPC nin son kararlı sürümü 2.6.2 idi. Sizinki değilse hemen kapın.

Sonraki şey, Android NDK

Arm-Android hedefi için FPC, oluşturmayı(make) yapmak için harici assembler ve Android NDK tarafından sağlanan bağlayıcıyı(linkerı) kullanır. Benimki hala r8e sürümü, sürüm 9 daki değişikliklere baktığımda iyi çalışması gerekir. Bunu istediğiniz yere ayıklayarak, biz {ndk.dir} dizinini bu konuma yönlendiririz. Emin olmak için,{ndk.dir} altında README.TXT ve RELEASE.TXT olduğu doğrulanmalı.

En ihtiyacımız olan araçları tespit edelim :

  • {ndk.dir}/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-as (assembler)
  • {ndk.dir}/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-ld (linker)
Eğer isterseniz, androideabi 4.6 veya 4.7 kullanmak istediğiniz durumda, sonra /toolchains/ kısmını değiştirebilirsiniz. Sahip olduğun {ndk.dir} dizinine karşılık gelen dizine bak.


Açtığın fpc.cfg dosyanda, aşağıdaki satırı olmalıdır :

-XP$FPCTARGET-

Bu satır $FPCTARGET-(tire işaretine dikkat edin) adında herhangi harici araçları başa eklemek için derleyiciyi bilgilendirir, böylece derleyici arm-android hedef olarak aramak istediğinde, "arm-android-as" olarak onu arar. Gördüğünüz gibi adı, NDK araçlarının adıyla tutarsız, aynı değil. Bu çözüm derleyici tarafından beklenen isimlerle araçlar için sembolik bir bağlantılar oluşturur. Sembolik bağlantılar (örneğin Windows) desteklemeyen bilgisayarlar için, araçlar için küçük bir exe sarmalayıcı(wrapper) oluşturabilir, yada sadece aracı yeniden adlandırabilirsin. PATH (/usr/bin/ içine koy) içinde bir yere / sembolik sarmalayıcıları(wrappers) koyun.


ls -l `which arm-android-<toolname>` (sadece *nix) çıkışını doğrulayarak geçerliliğinden emin olun. Benim sistemde bu gibi görünüyor (gerçek bir dizin {ndk.dir} ile değiştirilir):

$ ls -l `which arm-android-as`
lrwxrwxrwx 1 root root 120 Mar 8 2013 /usr/bin/arm-android-as -> {ndk.dir}/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-as
$ ls -l `which arm-android-ld`

lrwxrwxrwx 1 root root 120 Mar 8 2013 /usr/bin/arm-android-ld -> {ndk.dir}/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-ld

Terminalde veya komut isteminde arm-android-as ve arm-android-ld 'in çalışması için yürütmeyi deneyin.


Sonraki, FPC gövde

Ya svn (Ben svn'nin nasıl kullanılacağını öğretmeye değil, bir yere öğretici bulmaya gidiyorum) den gelen FPC gövdeden yada Free Pascal'ın FTP sinden alın. Bu durumda svn, buradaki “http://svn.freepascal.org/svn/fpc/trunk” adresinde bulunuyor.


Arm-Android Hedefi için FPC nin İnşaası

Lütfen uçbirim terminalini kullanarak, FPC gövde dizine gidin ve aşağıdaki komutu çalıştırın:

make crossall OS_TARGET=android CPU_TARGET=arm CROSSOPT='-Cp<ARM Arch> -Cf<ARM VFP>'

<ARM Arch> senin derlemen için ARM mimarisini tanımlar, benim cihaz ARMv6, yani kullanımı -CpARMv6.

<ARM VFP> en azından mevcut olan ARMv6,VFPv2 ve VFPv3 için, kayan nokta hesaplaması için kullanmak istediğiniz Vector Floating Point birimini tanımlar. bu varsayılan soft-float kullanır, hesaplama yazılımı ile gerçekleştirilir gibi çok yavaştır. Nadirende olsa kayan nokta(floatin point) kullanıladan beri, "soft-Float" benim için gayet iyi, bu yüzden herhangi bir -Cf seçenek geçmiyorum.

Her şey yolunda giderse eğer, artık onu kurma zamanı. Aşağıdakini (hala aynı FPC gövde klasöre) çalıştırın:

make crossinstall OS_TARGET=android CPU_TARGET=arm INSTALL_PREFIX=<directory of your choice>

İstediğiniz herhangi bir dizini seçmek için çekinmeyin, ancak standart gereklilikleri karşılamak şartıyla(boşluksuz dosya yolu). Aynı ana FPC dizinine yükleme öneririm, böylece kolayca fpc.cfg yi paylaşabilirsin. FPC dizin yapısı çapraz derleyici yüklemeye ana bilgisayar derleyici ağaç yapısı benzerliğinde (ve ilgili birimleri) mümkün olur. Bu ppc[ross]XXX çağırmak için sorgulamaya fpc sürücü kullanılabilir.

Her şey yolunda giderse, derleyici test edin.Aşağıdaki komutu çalıştırın:

fpc -Parm -Tandroid

Çıktı olması gerektiği gibi :

Free Pascal Compiler version 2.7.1 [2013/09/21] for arm
Copyright (c) 1993-2013 by Florian Klaempfl and others
Fatal: No source file name in command line
Fatal: Compilation aborted

Error: /usr/bin/ppcrossarm returned an error exitcode


Sonraki, Android SDK

Eğer Android SDK ya sahip değilsen buradan indir, r22 iyi olmalı. Bize sadece SDK araçları gerek,bu yüzden ADT paket indirirken zaman ve bant genişliği ayrıca gerekir. Ben {sdk.dir} gibi dizine SDK yüklemesini sevkedeceğim. Doğru {ndk.dir} altında olmasından emin olmak için SDK README.TXT yi okumalısın


AndroidLCL örneğini test etmek, yay !

Lazarus kurulum dizinine gidin (ben artık {lazarus.dir} olarak sevkedeceğim) ve "examples/androidlcl/androidlcltest.lpi" yi açın. Şimdi Proje-> Proje Seçenekleri menüsünü aç, Hedef platform OS ayarlanmak için android ayarla ve CPU' yu arm olarak ayarla (yada sadece kendi inşaa moduna al). Eğer FPC gövde inşaasında -Cf seçeneğini kullanıyorsanız, diğerinde de aynı seçeneği belirtin. Ayrıca Tools->Configure Build Lazarus diyaloğunda ayarlaman gerekebilir. Şimdi Run->Build menuye Tıkla. Eğer bunu alıyorsanız :

Trying to use a unit which was compiled with a different FPU mode


Sonra doğru şekilde-Cf seçeneği koymayın. Hatırladığım kadarıyla Proje(Proje seçenekleri diyaloğuyla) ve LCL (ve bağımlılıklarını, Lazarus yapılandırma inşaası yoluyla) koymanız için gerekli.

Herşey yolunda giderse, proje klasöründe android/libs/armeabi/liblclapp.so dosyası olacaktır.

Ant'ı Edinin

Anroid SDK apk inşaasında inşaa aracı ant kullanır, bundan dolayı onu yüklemeniz gerekir.


APK'nın İnşaası

Androidlcl proje klasörü altında android klasörüne gidin ve build.xml dosyasını açın. İçinde, 2 LoadProperties ve 1 property etiketlerini göreceksiniz. Senin SDK Kurulumunla bu noktaları dosyalara karşılaştırarak düzenlemen gerekir. Benimki aşağıda:

<loadproperties srcFile="local.properties" />
<property file="ant.properties" />
<loadproperties srcFile="default.properties" />

{sdk.dir} ile doldurmalısın, sdk.dir içeriğini local.properties ile(elbette gerçek değeri yükledikten sonra ). default.properties hedef android seviyesini içerir. Tam listesi burada görülebilir. Android SDK yöneticisi aracılığıyla ilgili SDK platformunu kurmak zorunda olduğunu unutmayın.

Sizin apk nın kararlı sürümü için gerekli olan key.alias ve key.store'u ant.properties içerir. Hata Ayıklama(debug) sürümü için, bu gerekli değil ve apk inşaa edici program kendine ait debug anahtarı ataması yapar.

Hepsini ayarladıysanız çalıştırın :

ant debug

Android klasöründe. apk sonuçları android/bin klasöründe LCLExample-debug.apk isimlendirmesi ile oluşacaktır. Kurun ve keyfini çıkarın.

Bu noktadan itibaren, bir şablo olarak androidlcl yapısından yararlanılabilir. Genel Java paket yapısı ve Android inşaa bilgi sistemi, paket adını değiştirmeyi gerektirecektir.


Not: Bu yazı http://pascalgeek.blogspot.cz/2013/10/android-programming-with-lazarus.html sayfasındaki yazının amatör bir çevirisidir. Daha doğru bilgi edinmek istiyorsanız lüften kaynağındaki yazıyla karşılaştırma yapınız. Buradaki çeviri şifaen yapılmıştır.

Hiç yorum yok:

Yorum Gönder