İçeriğe geç →

Etiket: firemonkey

[Çözüm] DCC E2597 Derleme Hatası (Android NDK, Toolchain İşlemleri) Delphi Android FireMonkey

FMX projeleriniz bazı zamanlar sizlere küçük sürprizler yapabilir. Bugün başıma gelen bir diğer olayı sizlerle paylaşayım.

VersionCode bilgisi 54 olan bir projenin 55. sürümünü kodladıktan sonra iş derleme aşamasına geldiğinde, proje aşağıdaki derleyici hatasını oluşturdu.

[Image: AyjJD0.png]

Örnek hata kodu:
[DCC Error] E2597 S:\Users\Public\Documents\RAD Studio\12.0\PlatformSDKs\android-ndk-r8e\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ld.exe

Bu hatayı biraz analiz ettiğim zaman tanımlanamayan referans hatası olduğunu öğrendim. Bu hatayı yapmasının bir çok sebebi olabileceği gibi çözümü için 2 tane pratik yöntem keşfettim.

1) Projeyi derlemek yerine doğrudan Build ederek bu sorundan kurtulabilirsiniz. Eğer IDE yönetici olarak çalışmıyorsa hata devam edebilir.

2) Projenin hedef (Android) output klasörlerini silin ve tekrar derleyin. Sorun çözülmüş olacaktır.

FireMonkey uygulamalarınızda bildirim çubuğuna bildirim gönderme

Merhaba,

FMX projelerinizde uyarı, bilgi ve hatırlatmalar göndermenizi kolaylaştıran pratik bir komponent (TNotificationCenter) bulunuyor. Bu komponent, bildirimlerinizi oluşturmanızı, planlamanızı yapmanızı, gönderimlerini sağlamanızı ve kullanıcının bildirime tıkladığı an yanıtı dinlemenizi sağlıyor.

Kullanımı

[Image: nJVb6g.png]

[Image: o6PdW2.png]

  1. Tool Palette’ten;
    • System > TNotificationCenter (bildirimi yönetmek için)
    • Standard > TButton (işlemi tetiklemek için)
    • Standard > TLabel (bildirime tıklandığını bildirmek için)
      komponentlerini formunuza ekleyin.
  2. Eklenen butonunuza çift tıklayın ve OnClick metodunun içine aşağıdaki kodları ekleyin.

    [Image: lb2QGk.png]

  3. Kullanıcının bildirime karşı yapacağı etkileşimleri dinlemek için NotificationCenter1’in OnReceiveLocalNotification (tek) event’ını oluşturun ve aşağıdaki kodları ekleyin.

    [Image: V35QnV.png]

Örnek Proje Çıktısı

[Image: vJda3v.png] [Image: 1GmpRA.png]  [Image: LO7vjj.png]

FireMonkey (FMX) Projelerinize hızlı dil desteği eklemek

Merhaba,

Geçenlerde yaptığım küçük bir projede deneme fırsatı bulduğum TLang Komponentinin kullanımı ile ilgili çeşitli bilgilendirmelerde bulunmak istiyorum. Öncelikle FMX Projelerinize hızlı dil desteği eklemek için başvuracağınız bu yolun, köklü ve devasa bir projede kullanımında size istediğiniz yanıtı vereceğinden emin değilim. Nitekim yaşadığım sıkıntıları da yazının sonuna doğru sizlere ileteceğim.

Öncelikle nedir bu TLang, ne işimize yarar?

TLang, FMX projelerimizde yer alan string değerlerin çok pratik bir şekilde değiştirilerek, yerelleştirme (localize) yapmamıza olanak sunan bir komponent.

Nasıl oluşturulur, Dil karşılığı nasıl girilir, Dil nereden eklenir ve komponent nasıl kullanılır?

Herhangi bir komponent yerleştirir gibi Tool Palette’in içerisinden alıp form üzerine bırakabilirsiniz. Bu komponent, diğerlerine nazaran tüm projenin içindeki statik olan string değerleri tarayıp toplama kabiliyetine sahip. (Form1’e yerleştirdiğiniz Lang1, Form2..10, kısaca tüm formları tarar.)

Form üzerine yerleştirdiğiniz TLang komponentinin üstüne çift tıklayarak Language Designer’ı aktif edersiniz. Burada üst kısımdan Add language butonuna basarak TR dilini ekleyin. Tüm projenizde yer alan string değerlerin bir listesini altta göreceksiniz. Karşılarına olduğu gibi değerleri aktarın. Ardından yeni dil ekle diyerek EN olarak İngilizce’yi dahil edin. (Örneklem için)

Yukarıda yer alan ComboBox’tan Dil seçimi yaparak string değerlerin o dilde yer alan karşılığını doldurun. Tüm işlem bittiğinde Save file ile dosyanızı projenin kaynak kodlarının olduğu dizinde Language.lang (yada isim ne verirseniz, uzantı lang olmalı) olarak kaydedin. Kullanıma hazırız.

Run-time (Çalışma anında) Dil değişimi nasıl yapılır?

Bu komponentin acemilik döneminde yapılan basit bir yöntem var. Bu yöntem bazı sorunlar oluşturabiliyor. Mesela Android cihazda çok dil desteği hazır bir projenin Combobox nesnelerinde sadece ItemIndex’inde yer alan string değer dil değişimini görüyorken, diğer ön tanımlı değerler ne yazık ki başarısız oluyor. Tüm değerleri mevcut fonksiyon ile aldığınızda bu sorun yaşanmıyor.

1
2
//Lang1.Lang := 'en'; // bunu kullanmayın!
LoadLangFromStrings(Lang1.LangStr['en']); // bu sağlıklı yöntem

Köklü ve devasa bir projede neden tercih edilmez?

Bir önceki soruda yaşadığımız statik string değerlerin okunmasındaki problem, dinamik değerlerin dil karşılıklarını da okumamıza engel olacaktır. Bunun yerine çok dil desteği olan projelerde genellikle veritabanı yapılarının çoklu dile uyumlu olması sorunumuzu çözecektir. Kelime tablosunda işaretlemeleri yapacak uygun KEY değerlerini oluşturup, dilleri tanıttıktan sonra aktif dilde bu key’in value’su ne ise onu doğrudan kullanabilirsiniz.

TLang hangi projeler için doğru bir tercih olur?

Üzerinde veritabanı işlemlerini çok yapmayacağınız, yapacaksanız da ortak değerleri muhafaza edecek şekliyle dinamik verilerin çeviri yönetimini manuel yapacağınız her projede kullanılabilir. Statik string değerlere sahip projeler için müthiş hız kazandıracaktır. Tanıtım projelerinde, ürün projelerinde, basit fonksiyonel işlemlerde ve oyunlarda genellikle sabit menü ve  string kullanımı yaygındır. Bu yüzden saydığım proje türlerinde kullanmanız avantajlı olacaktır.

Dip: örnek bir proje oluşturup ekran görüntüleri almak için yeterli zamanım olmadığı için sizlere hazır bir örnek linki vereceğim. Örnekte ListBox’ta seçilen dil doğrultusunda string değerlerin değişimini ve kelimenin kullanımını gösteriyor.

Delphi Android ve Linux ile Chrome OS Platformuna Uygulama Geliştirme Webinarı

Targeting Chrome OS with Delphi via Android and Linux başlığı ile duyurulan ve 20.07.2017-21.07.2017 tarihlerinde toplamda 3 oturumdan oluşacaktır.

Kayıt yaptırmak için bu adresi kullanabilirsiniz.

Oturum Tarih ve Saat Bilgileri:

  • 20.07.2017 Perşembe 16:00-17:00
  • 20.07.2017 Perşembe 21:00-22:00
  • 21.07.2017 Cuma 16:00-17:00

[Image: 2e1ax_embarcadero_entry_AndroidChromeDelphi.png]

Webinar kapsamına dair;

Google firmasının Chrome Tarayıcısı ile başlayan macerası, Chromebook cihazlarla yoluna devam ediyor. Tablet ve laptop arasında kompakt bir segmente sahip olan Chromebook cihazlarda çalışan Chrome OS işletim sisteminde aklımıza gelen birçok şeyi yapabiliyoruz. Birkaç ay önce Google, Chrome OS için Google Play Store desteğinin ekleneceğini söylemişti. Böylelikle Chromebook cihazlarda Android uygulamalarını çalıştırabileceğiz. Samsung firmasının ilk 2 Chromebook cihazı Android uygulamaları destekleyecek. İşlemci olarak Intel Core m3-6y30 kullanan bu cihazlarla birlikte Intel Android geri dönüyor!

Delphi ile Linux Uygulama Geliştirme

Rad Studio ile artık Linux platformuna uygulama geliştirme imkanına sahibiz. Rad Studio kurulu Windows makinemizle 64 bit Linux uygulamaları geliştirebilir ve Linux makinelere deploy edebiliriz. Linux uygulamalar geliştirmek, Rad Studio’da Android uygulamalar geliştirmeye çok yakın diyebiliriz.

Linux için görsel arayüze sahip VCL yada FMX uygulamaları geliştirme imkanımız olmasa da;

  • Konsol uygulamaları
  • EMS Package (Rad Server)
  • DataSnap
  • DataSnap WebBroker
  • WebBroker
  • Dynamic-link Libraries
  • DUnitX Project

Geliştirme imkanına sahibiz.

Arrow GEREKSİNİMLER

Linux uygulama geliştirme ortamımızı oluşturmamız gerekiyor. Öncelikle Windows işletim sistemi olan bir bilgisayarda Rad Studio kurulumunu yapmamız gerekiyor. Ayrıca Linux kurulu olan bir makineye ihtiyacımız var. Mümkünse içinde Linux olan bir sanal makine işimizi oldukça kolaylaştıracaktır.

Arrow LINUX GELİŞTİRME ORTAMININ OLUŞTURULMASI

Geliştirme yapacağımız bilgisayarda Linux için ihtiyaçlarımızı şu şekilde sıralayabiliriz:

  1. Windows bilgisayara Rad Studio kurulumu
  2. Linux SDK kurulumu
  3. Linux makinenin ayarlanması
  4. Connection Profile oluşturma
  5. Kurulan SDK’nın Rad Studio’ya eklenmesi
  6. Linux makinede PAServer’ın çalıştırılması

Arrow 1. Rad Studio kurulumu tamamlayın.

Arrow 2. Linux SDK Kurulumu

Ubuntu için:

  1. Masaüstünde sağ tuş yapın ve Open Terminal’i seçin.
  2. Repository eklemek için terminale sudo add-apt-repository ppa:ubuntu-sdk-team/ppa yazın.
  3. Enter’e basın. Şimdi repository eklendi.
  4. Linux SDK kurmak için terminale sudo apt install ubuntu-sdk yazın.
  5. Enter’e basın ve kurulumun tamamlanmasını bekleyin. 5-10 dakika sürebiliyor.

Red Hat için:

  1. Masaüstünde sağ tuş yapın ve Open Terminal’i seçin.
  2. Terminale yum groupinstall ‘Development Tools’ yazın.
  3. Enter’e basın ve kurulumun tamamlanmasını bekleyin. 5-10 dakika sürebiliyor.

Arrow 3. Linux Makinenin Ayarlanması

Linux uygulamaları oluşturmak için PAServer sanal makinesi eklememiz gerekiyor.

  1. C:\Program Files (x86)\Embarcadero\Studio\19.0\PAServer konumunda LinuxPAServer19.0.tar.gz dosyasını bulun.
  2. Arşiv dosyasından çıkartın.

System.zLib dosyasını kullanmak için;

Ubuntu için:

  1. Ubuntu makineye zLib-devel kütüphanesini sudo apt-get install zlib1g-dev kodu ile kurun.
  2. local SDK cache’i güncelleyin.

Red Hat için:

  1. RHEL makineye zLib-devel kütüphanesini sudo yum install zlib-devel kodu ile kurun.
  2. local SDK cache’i güncelleyin.

Arrow 4. Connection Profile Oluşturma

  1. LinuxPAServer19.0.tar.gz dosyasını arşivden çıkarttığınız dosyaya sağ tuşa basıp, Open in Terminal’i seçin.
  2. Terminalde ./paserver yazın ve Enter’e basın.
  3. Tools > Options > Environment Options > Connection Profile Manager sayfasında, Add butonuna tıklayın.
  4. Açılan Create a Connection Profile sihirbazında Profile information sayfasına geçin ve şunları girin:
    * Profile Name : isim girin
    * Platform : 64-bit Linux seçin
    * Next’e basın.
  5. Şimdi Remote machine information sayfasına geçin ve şunları girin:
    * Remote machine : Ip adresi veya cihazın adını yazın
    * Test Connection’a basarak bağlantıyı kontrol edin.
  6. Finish’e basın.

Arrow 5. Kurulan SDK’nın Rad Studio’ya eklenmesi

  1. Tools > Options > Environment Options > SDK Manager sayfasında Add butonuna basın.
  2. Add a New SDK ekranında şu işlemleri yapın/seçin:
    * Select a platform alanında 64-Bit Linux’u seçin.
    * Select a profile to connect ‘den açılır listeden oluşturulmuş profili seçin.
    * Select an SDK version alanından biraz önce kurduğumuz SDK sürümünün adını seçin, ilk aşamada zaten otomatik olarak gözükecektir. Eğer SDK kurulumunu yapmadıysanız, Bu aşamada SDK kurulumunu da yapabilirsiniz.

Arrow 6. Linux makinede PAServer’ın çalıştırılması

Linux makinede PAServer’ı çalıştırmak için Terminal’i açın ve daha sonra PAServer’ı çalıştırın.