Arama butonu
Bu konudaki kullanıcılar: 1 misafir
15
Cevap
1562
Tıklama
0
Öne Çıkarma
Android NDK ile c++ uygulama geliştirme yardım (QT İÇERİR)
G
9 yıl
Yarbay

Qt nin açık kaynak sürümü ücretsiz, firma desteği yok sadece.

https://www.qt.io/download-open-source/


Bu mesaja 1 cevap geldi.
P
9 yıl
Çavuş

Selamün Aleyküm;
Tabii ki oyun motorları, oyun kütüphaneleri ve hybrid yapılar için iş değişiyor, ben sadece native uygulama geliştirdiğini söyleyen mobil geliştirme araçları için bunu söyledim (Qt, Embarcadero Delphi XE ve C++ Builder XE, Xamarin, React Native vs.). Eğer kişi ben yalnızca Android için veya yalnızca iOS için uygulama geliştireceğim derse bence de o platformların yerel araçları (Java ve Objective-C ya da Swift) ile yazması en iyi tercih lakin kişi birden fazla mobil platformu hedef almışsa o zaman native olarak geliştirmeyi sağlayan bu gibi araçları tercih etmesi çok daha iyi olur. Tabi bu seçim kişiden kişiye göre değişebilir. Biraz da kişinin tercihlerine kalmış.
quote:

Edit: Qt bulaşmayın, geleceği belli olmayan bir çalışma çatısı. CopperSpice filan yerini alacak. Gerçeği Qt bilen adam CopperSpice hayli hayli bilirde, şirket olarak bulaşmayın

Aslında bakılırsa hiçbir aracın geleceği belli değil sadece uzun vadede kullanabileceğimiz araçlar olması elbette iyi olur. Qt bakılınca C++ için en iyi cross platform geliştirme aracı diyebilirim çünkü C++ için hem masaüstü hem de mobil için uygulama geliştirme yapabileceğimiz bir başka platform bilmiyorum. Ayrıca bana göre Qml ile yapılan mobil tasarım Android için yapılan xml tasarımdan çok daha okunaklı ve esnek. CopperSpice Qt'un MOC çıkarılmış hali ve bu aslında derleme zamanında hız kazandırır (signal-slot çalıştırmak için başka bir yapı kullanıyormuş) ama şu anda Qt her platforma geliştirmek için CopperSpice'dan daha fazla ön planda.




Bu mesajda bahsedilenler: @Alper#
M
9 yıl
Yarbay
Konu Sahibi

ios haricinde androide native uygulama yapmak isityorum. java ile hiç uğraşmadığım için bunu c++ bilgimle yapmak amacım. Bu durumda tek çare android NDK gibi duruyor. ( başka çarelerde var evet ama native anlamada söylüyorum. qt olayı da var tabi)

Bu platformu hiç kullanmadım. dediğim gibi ios dışında android için de uygulama yapmak istiyorum.

c++ ile Android ndk yı kullanan var mı? Performans anlamında, native uygulama anlamında ve genel anlamda bildiğiniz kadar yorumlarınıza ihtiyacım var.

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil





< Bu mesaj bu kişi tarafından değiştirildi m.t.y. -- 20 Nisan 2016; 14:19:33 >

P
9 yıl
Çavuş

Merhaba; Android NDK zaten tek başına kullanılmıyor, Java ile beraber kullanılıyor. O yüzden tek NDK ile yazmak isterseniz Java da gerekiyor :). Dediğiniz gibi Qt var ve mobilde Android, iOS, Windows Mobile, Blackberry, Sailfish ve Ubuntu Touch sistemlerine yerel (native) olarak uygulama yazabilirsiniz. Qt hiçbir zaman mobil platformların native araçlarından (mesela Android SDK ve NDK) bağımsız çalışmaz, bu yüzden de performanstan taviz vereceğinizi düşünmüyorum. Ayrıca AndroidExtras ile Java, .mm, .h dosya uzantıları sebebiyle de Objective-C kodlarını Qt'da çağırabilirsiniz. Bu da size yarı yolda kalmama garantisi veriyor. Mobilde tasarımı QML ile (bkz:http://doc.qt.io/qt-5/qtlabscontrols-gallery-example.html ) yapıyorsunuz (Bu dil Javascript ve JSON tarzında bir dil).

Bunun dışında Embarcadero C++ Builder var. Lakin bu platform bir kere ücretli bir platform (bkz: Fiyat). Ayrıca bu platform ile de Android, iOS ve Windows Mobile için yerel uygulama geliştirebiliyorsunuz.

Aksi halde tek NDK ile uygulama geliştirme yapılmıyor. C/C++ için de bu iki araç dışında başka araç yok.





< Bu mesaj bu kişi tarafından değiştirildi Programmer_Kanguru -- 14 Nisan 2016; 23:35:18 >
Bu mesaja 2 cevap geldi.
M
9 yıl
Yarbay
Konu Sahibi

Anladım. qt de ücretli, 30 gün deneme süresi veriyor. c++ ın sınırlarını bu programla dene süresince test etmek istiyorum. c++ cılar için ücretsiz çözüm olmayacak mı? Ubuntu üzerinde qt nin durumu nedir acaba? ücretli mi yine? ücretsiz ise mac in bir köşesine ubuntu kurar geçerim :)





< Bu mesaj bu kişi tarafından değiştirildi m.t.y. -- 18 Nisan 2016; 12:46:09 >
Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @Programmer_Kanguru
M
9 yıl
Yarbay
Konu Sahibi

quote:

Orijinalden alıntı: elektro_gadget

Qt nin açık kaynak sürümü ücretsiz, firma desteği yok sadece.

https://www.qt.io/download-open-source/

sadece firma desteği yoksa çok iyi.


Bu mesaja 1 cevap geldi.
P
9 yıl
Çavuş

@elektro_gadget'in de dediği gibi Qt Açık Kaynak sürümü ücretsiz ve LGPL lisanslı kullandırtıyor. Aradığı şartlar (Qt Open Source sürüm için):
*) Kodun kapalı olabilir LGPL olduğu için. (Tabi bazı kütüphaneler sadece ticari ya da gpl lisanslı, bunlar hariç (mesela QtCharts ve QtVirtualKeyboard). ).
*) LGPL lisanslı sürümde geliştirdiğin yazılımın Qt kütüphanelerini statik bağlayamazsın, dinamik olmak zorunda. Zaten varsayılan dinamik oluyor.
*) Qt kütüphanelerinde değişiklik yaptıysan bunu yayınlamak zorundasın.
*) Cihaz dağıtamazsın (Eğer sadece masaüstü ve mobil geliştici isen bu seninle ilgili olmuyor çünkü cihaz dağıtmıyorsun).

Gördüğün gibi Qt C++ ve QML için her alanda kullanışlı bir araç. Dahası Qt 5.6 sürümüyle birlikte Qt Purchasing modülü geldi ve bu modül ile Android ve iOS'te uygulama içi satış yapabiliyorsun.




Bu mesajda bahsedilenler: @m.t.y.
A
9 yıl
Yarbay

NDK üzerinden derleme alınabiliyor ? Cocos2d-x gibi oyun motorları NDK üzerinde derleme alıp, Java'dan bağımsız build alınabiliniyor.

Temelde zaten Java aracıyla yazılmış ve SDK buildi alınmış APK dosyası byte-codelarını temelde C++ kodları çalıştırıyor.

NDK üzerinde yazılım geliştirmeyi Google kasten zorlaştırıyor. Java kullanmam dersen birden fazla yöntem var ama Google istemiyor

İlla ben NDK üzerinde kodlarımı yazacağım dersen .so(shared object, dinamik kütüphane) şeklinde derleyip, Java üzerinden ilintisini yazmak daha mantıklı.(Çoğu kişi bu yöntemi kullanıyor.)

Java'nın kendi içinde native programlamaya desteği var. Böyle yaparsan temelde C++ kodları yazar, Java ilede rahat rahat arayüzü çıkartırsın.

Edit: Qt bulaşmayın, geleceği belli olmayan bir çalışma çatısı. CopperSpice filan yerini alacak. Gerçeği Qt bilen adam CopperSpice hayli hayli bilirde, şirket olarak bulaşmayın





< Bu mesaj bu kişi tarafından değiştirildi Alper# -- 19 Nisan 2016; 7:11:07 >
Bu mesaja 2 cevap geldi.

Bu mesajda bahsedilenler: @Programmer_Kanguru
M
9 yıl
Yarbay
Konu Sahibi

quote:

Orijinalden alıntı: Alper#

NDK üzerinden derleme alınabiliyor ? Cocos2d-x gibi oyun motorları NDK üzerinde derleme alıp, Java'dan bağımsız build alınabiliniyor.

Temelde zaten Java aracıyla yazılmış ve SDK buildi alınmış APK dosyası byte-codelarını temelde C++ kodları çalıştırıyor.

NDK üzerinde yazılım geliştirmeyi Google kasten zorlaştırıyor. Java kullanmam dersen birden fazla yöntem var ama Google istemiyor

İlla ben NDK üzerinde kodlarımı yazacağım dersen .so(shared object, dinamik kütüphane) şeklinde derleyip, Java üzerinden ilintisini yazmak daha mantıklı.(Çoğu kişi bu yöntemi kullanıyor.)

Java'nın kendi içinde native programlamaya desteği var. Böyle yaparsan temelde C++ kodları yazar, Java ilede rahat rahat arayüzü çıkartırsın.

Edit: Qt bulaşmayın, geleceği belli olmayan bir çalışma çatısı. CopperSpice filan yerini alacak. Gerçeği Qt bilen adam CopperSpice hayli hayli bilirde, şirket olarak bulaşmayın

c++da gui için maalesef çok fazla bir alternatifimiz yok. Siz de haklısınız bu tür hibrit yapılar her ne kadar native olduklarını iddia etseler de sürüm farklılıkları, başka ortamlarda kütüphane gereksinimi, paketleme gibi sorunlar baş ağrıtıyor. Lgpl lisansı işi de yine işin çakallığı gibi (http://ddili.org/forum/thread/1583;?unb666sess=04f9185d0941db7a189f3e03fe1c6610 ). Özgür yazılımcı bir yerde çakallık gördü mü oradan hızla uzaklaşır :)

programcı için dil işi önemli olmamalı zaten. Benim için de değil. oturur 1 ayda java ya adapte olurum. Hepsi c türevi. :) sonra iş frameworkler dünyasının kullanımına kalıyor. O da yine projenin tipine göre karar verilmesi gereken durum. mac ortamında çalışınca seçenekler biraz daha darlıyor. benim sorunum o sadece.

Qt çok iddalı diye bir sorayım istedim. herşeyi sunan isviçre çakısı mübarek ama işte qt yi kullananlar çok daha iyi bilir. Onların görüşlerini ( qt nin artıları eksileri adına) merak ediyorum doğrusu.

Bir de copperspice ile ilgili dedikodu :) http://ddili.org/forum/thread/1431;?unb666sess=04f9185d0941db7a189f3e03fe1c6610

Qt ile ilgili bilgisi olanlar bildiklerini ve tecrübelerini paylaşırsa sevinirim.





< Bu mesaj bu kişi tarafından değiştirildi m.t.y. -- 20 Nisan 2016; 12:32:45 >
Bu mesaja 1 cevap geldi.
P
9 yıl
Çavuş

Merhaba;
quote:

c++da gui için maalesef çok fazla bir alternatifimiz yok.

Eğer amacınız GUI kısmı ise birçok alternatif mevcut: GTK+, Qt, WxWidgets, FLTK, VCL vs. Mobil sadece GUI üstüne kurulu olmadığı için Qt ve VCL(C++ Builder) dışında mobil diğerleriyle mobil geliştirme ya yapamıyorsunuz ya da çok gelişmemiş şekilde yapıyorsunuz. (Bu da C++ GUI araçlarının listesi: LINK). Ayrıca bildiğiniz gibi Qt yalnızca GUI değil kocaman bir yazılım geliştirme kütüphanesidir (Qt C++ Sınıfları).
quote:

bu tür hibrit yapılar her ne kadar native olduklarını iddia etseler de sürüm farklılıkları, başka ortamlarda kütüphane gereksinimi, paketleme gibi sorunlar baş ağrıtıyor.

Söylediğim gibi Qt hibrit değil native geliştirme aracıdır. Hibrit webview üzerinde çalışır. (bkz: LINK). Kütüphane gereksinimi konusunda her Android, iOS ve Windows Mobile kütüphanelerini Qt içinde bulamazsınız ama diğer mesajımda da dediğim gibi Android Extras ile Java, iOS için de Objective-C kodlarını C++'da kullanabilirsiniz: (QtAndroidExtras ile Java kodu çağırma ve Objective-C kodu çağırma). Yani öyle Android'de veya iOS'ta şu kütüphaneyi Qt için bulamadım dediğiniz zaman direk kodları bu şekilde çekin. Paketleme sorunundan kastınız nedir? Eğer apk gibi paketlemek ise bu işler çok basit (Android Studio'da olduğu kadar basit aslında (bkz: Qt Android APK Oluşturma)).
quote:

Lgpl lisansı işi de yine işin çakallığı gibi

LGPL sizi kısıtlar ama kurallarına uyduğunuz taktirde hem kodlarınızı kapatır hem de ticari olarak ürününüzden kazanç elde edebilirsiniz. Özgür yazılım derken siz demek ki mobil uygulamanızın kodlarını açık tutacaksınız o zaman kodunuzu açın ve Qt'un tüm imkanlarını kullanın. Ama mobil uygulamada kodunuzu kapatacağınızı tahmin ediyorum. O halde bu iş zaten özgür yazılım olmuyor ki :). O halde uygulamanızdan para da kazanamayabilirsiniz.
quote:

mac ortamında çalışınca seçenekler biraz daha darlıyor.

Merak etmeyin Qt'un her lisansını MAC üzerinde de kullanabilirsiniz. Yani MAC üzerinde de Qt geliştirme yapabilirsiniz.

Son olarak Qt ile yapılmış 2 uygulama apk olarak:
Mapviewer Örneği: MapViewer
Qt Basit Tasarım Örneği: Qt Android Basit Tasarım Örneği
Basit tasarımın Java ile yapılanı: Java ile olan basit tasarım örneği

Ayrıca tekrar söylüyorum: Eğer sadece tek bir platforma yönelmek istiyorsanız o platformun resmi araçlarını tercih edin. Bu araçları sadece çoklu platform geliştireceğiniz zaman tercih etmeniz daha iyi. Nedeni ise resmi araçlar o platform için daha kolay olarak geliştirmeye imkan veriyor ama uygulama çoklu platform olacağı vakit iş iyice zorlaşıyor, işte tam bu noktada Qt, React Native vs. gibi native uygulama geliştirme araçları çok daha fazla kolaylık sağlıyor. Örnek olarak Android Studio'da XML olarak yaptığınız tasarım yalnızca Android içindir ve iOS'te bambaşka bir yapı bulunuyor (storyboard). Qt'da labs.controls modülünü kullanarak tek tasarım yapın ve her platformda kullanın. Mesela yukarıdaki basit tasarım örneği Qt.labs.controls kullanılarak geliştirildi.

Qt eksi yanı 1.si LGPL lisansı belli kurallar koyuyor ve bu kurallara dikkat etmek lazım. İkinci olarak her mobil özellik hazır olarak yok ve bunları Java ve Objective-C kodu olarak uygulamamıza çağırmamız lazım. (Aslında bu eksiklik değil ama haliyle biraz uğraş istiyor). Başka da bir eksikliğini gören yazarsa biz de bilgileniriz. Dediğiniz gibi amaç araç yarıştırmak değil, ben sadece bir Qt, Android Studio ve Windows Mobile geliştiricisi olarak iki araçta da gördüğüm artı ve eksileri yazdım.


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @m.t.y.
M
9 yıl
Yarbay
Konu Sahibi

ilginiz ve cevaplar için teşekkürler.

Paketleme den kastım başka ortama statik olarak yükleyebilme. Bu durumda qt nin zorlukları veya engelleri var mı? google ve apple ın bu konudaki yaklaşımı nasıl?


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @Programmer_Kanguru
P
9 yıl
Çavuş

Google kısmında sorun yok, Qt kütüphanelerini dinamik olarak bağla, apk dosyasını oluştur ve Google Play hesabına yolla. Qt lisansını LGPL olarak kullanıyorsan ve kodun kapalıysa statik bağlama yapamazsın. Ama eğer LGPL lisansı kullanıp açık kaynak bir uygulama yaptıysan o zaman statik bağlayabilirsin. AppleStore tarafında dinamik bağlama kabul edilmiyor diye biliyorum ama bu olabilir mi bilmiyorum: https://wiki.qt.io/Licensing-talk-about-mobile-platforms#Qt_for_iOS Bu soruya iOS geliştiricileri cevap verirse daha iyi olur. AppleStore kütüphanelerin dinamik olarak bağlanmasını kabul ediyor mu?
Ama eğer Qt ticari lisans satın alırsan bu durum değişiyor, o zaman istediğin gibi geliştirip dağıt. Yani statik bağlama için ya lisans satın almalısın ya da uygulamanın kodlarını açmalısın.


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @m.t.y.
J
9 yıl
Er

Bu konu benim de ilgimi çekti. Şu an QT'ya adapte olmaya çalışıyorum, ama tam olamadım. Pardus Kurumsal 5 işletim sistemini kullanıyorum. C++ derlemeleri için güzel oluyor. QT editör içinde necessitas diye birşey buldum, kurdum güzel gözüküyor. Necessitas'da QT derlemesi yapabiliyorum.

Neyse, asıl meseleyi anlatayım. Şu andaki görevim OpenMP ile yazılmış bir paralel programı, .Android cihazlar için kullanılabilir bir uygulama haline getirip çalıştırmak. Kısacası, basit kodlarla yazılmış bir "Merhaba Dünya" programını, OpenMP ile C++ dilinde yazdım ve bu programı Android cihazlar için uygun hale getirmem lazım. 2 gündür uğraşıyorum, çözemedim maalesef. Yazıklar olsun bana. =)


Bu mesaja 2 cevap geldi.
S
9 yıl
Binbaşı

takip benimde merak etti?im bir konuydu



P
9 yıl
Çavuş

Özel mesaj attım.




Bu mesajda bahsedilenler: @josephshenturk
A
9 yıl
Yarbay

qt kullananlar tecrübelerini paylaşabilir mi acaba?



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.