Bir oyunu geliştirmeye / Android'e aktarmaya çalışıyorum, ancak C'de ve Android Java'yı destekliyor, ancak eminim orada bir C uygulaması almanın bir yolu olmalı, herkes bunu başarmanın bir yolunu biliyor mu?
Bir oyunu geliştirmeye / Android'e aktarmaya çalışıyorum, ancak C'de ve Android Java'yı destekliyor, ancak eminim orada bir C uygulaması almanın bir yolu olmalı, herkes bunu başarmanın bir yolunu biliyor mu?
Yanıtlar:
Google üzerinden gelen herkes için, SDK 1.6 Android'den başlayarak artık resmi bir yerel SDK'ya sahip olduğunu unutmayın.
Android NDK'yı (Yerel Geliştirme Kiti) buradan indirebilirsiniz: https://developer.android.com/ndk/downloads/index.html
Ayrıca NDK hakkında bir blog yazısı var:
http://android-developers.blogspot.com/2009/06/introducing-android-15-ndk-release-1.html
Android NDK Böyle C ve C ++ kullanarak dili, yerel kodda uygulamanızın parçalarını uygulamak sağlayan bir araç setidir. Belirli uygulama türleri için bu, bu dillerde yazılmış kod kitaplıklarını yeniden kullanmanıza yardımcı olabilir.
Yerel geliştirmeye nasıl başlayacağınız hakkında daha fazla bilgi için bu bağlantıyı izleyin .
Örnek uygulamalar burada bulunabilir .
Normalde şunları yapmanız gerekir:
Bir uygulama satmak istiyorsanız:
Google bir Yerel Geliştirme Kiti (NDK) yayınladı ( http://www.youtube.com/watch?v=Z5whfaLH1-E uyarınca 00:07:30).
Umarız, bilgiler henüz yayınlanmadığını söylediği gibi google gruplar sayfasında ( http://groups.google.com/group/android-ndk ) güncellenecektir .
Nereden basit bir indirme yapacağımdan emin değilim, ancak donut şubesi altındaki Google'ın Git deposundan NDK'nın bir kopyasını alabileceğinizi duydum.
Resmi tutum , bunun "yapmak istediğiniz" bir şey olmadığı anlaşılıyor . Bkz Konuyu Android Geliştiricileri listesinde. Google, Android'in çeşitli farklı cihazlarda (CPU'lar, ekranlar vb.) Çalışmasını öngörmektedir. Bu nedenle geliştirmeyi etkinleştirmenin en iyi yolu, Dalvik VM'yi hedefleyen (taşınabilir) yönetilen kodu kullanmaktır. Bu nedenle, Android SDK C / C ++ 'ı desteklemez.
ANCAK, bu sayfaya bir göz atın :
Android, Android sisteminin çeşitli bileşenleri tarafından kullanılan bir dizi C / C ++ kütüphanesi içerir. Bu özellikler Android uygulama çerçevesi aracılığıyla geliştiricilere açıktır.
Yönetilen uygulama çerçevesinin bu kütüphanelerin üstünde olduğu görülmektedir. Sayfa C / C ++ kütüphanelerini listeler: standart C kütüphanesi, medya, 3D, SQL lite ve diğerleri.
Tek ihtiyacınız olan, C / C ++ 'ı uygun CPU'ya (G1 durumunda ARM) derleyecek bir derleyici zinciri. Bunun nasıl yapılacağıyla ilgili bazı kısa talimatlar burada .
Ne bilmiyorum, bu kütüphanelerin sağladığı API'lerin açıklamalarını nerede bulabilirim. SDK'da bir yere gömülü başlık dosyaları olabilir, ancak belgeler kabataslak / eksik olabilir. Ama bence yapılabilir!
Umarım faydalıdır. Kayıt için, herhangi bir yerel android uygulaması yazmadım - sadece birkaç basit yönetilen uygulama.
Andy
C'yi (veya diğer GCC dillerini) Java bayt koduna çevirmek için nestedvm komutunu kullanabilir ve bunu bağlantı noktanızın temeli olarak kullanabilirsiniz. Örneğin, Simon Tathams taşınabilir bulmaca koleksiyonunun Android bağlantı noktasına bakın .
Bu yöntemin NDK tarafından kullanılmamasını bekliyorum, ancak bazı ağlar veya bir şey insanların telefonlarını yükseltmesine izin vermiyorsa olmayabilir.
Google zaten Google I / O 2011'i başlattı : C ve C ++ Oyunlarını http://www.youtube.com/watch?v=5yorhsSPFG4 adresinde bulunan Android oturumuna getirme
android için c ve c ++ 'da uygulama yazmak için NDK kullanımını anlamak iyidir.
Sadece herhangi bir konsol tabanlı yerli oyun derlemek ve android üzerinde çalıştırmak istiyorsanız o zaman bu makale aynı için 3 yöntem göstermiştir.
1: Bağımsız araç zinciri kullanarak statik derleme
2: Android NDK'nın araç zincirini kullanarak çapraz derleme
3: AOSP kaynak kodunu kullanarak çapraz derleme
Belki de bunu arıyorsun?
C ++ kullanarak çeşitli mobil platformlar için geliştirilmiş orta bir katmandır.
Buna bakarak mümkün görünüyor:
"Aslında sadece Java dili destekleniyor diğer dillerde uygulama geliştiremezsiniz anlamına gelmez. Bu birçok geliştirici, bilgisayar korsanları ve mobil uygulama geliştirme uzmanları tarafından kanıtlanmıştır. Edgelib arkasındaki şirket Elements Interactive BV kütüphane, Android platformunda yerel C ++ uygulamalarını çalıştırmayı başardı, ancak şu anda ekran ve ses konusunda hala birçok sorun var ... vb. Bu S-Tris2 oyunu ve Edgelib'in 3D animasyon demosunu içeriyor. "
2009'dan beri bu konuda bir gelişme var.
Necessitas - Android için Qt (C ++ çerçevesi)
Başlangıç videosu .
Umut verici görünüyor google ndk grubuna bir göz atın , NDK'nın ilk sürümü 1H2009'da mevcut olacak.
Güncelleme: Ve yayınlandı http://android-developers.blogspot.com/2009/06/introducing-android-15-ndk-release-1.html
NDK'nın resmi Java API'sının tamamını kapsadığından emin değilim.
Gönderen http://developer.android.com/sdk/ndk/index.html#overview :
NDK'nın yalnızca yerel uygulamalar geliştirmenize izin vermediğini lütfen unutmayın. Android'in birincil çalışma süresi Dalvik sanal makinesi olmaya devam ediyor.
Google, tam olarak buna izin veren NDK'yı piyasaya sürdü.
Burada bulunabilir: http://developer.android.com/sdk/ndk/1.5_r1/index.html
Bu blog yazısı iyi bir başlangıç olabilir: http://benno.id.au/blog/2007/11/13/android-native-apps Ne yazık ki, önemli şeylerin çoğu "okuyucuya alıştırma olarak bırakılmıştır".
Ben bir öğretici bilmiyorum ama iyi bir geliştirme aracı: Ideaworks Labs Airplay SDK. (Son zamanlarda " Marmelade " olarak yeniden markalandı ) C / C ++ kullanarak Windows Mobile, iPhone, Android için uygulamalar oluşturabilirsiniz. Sevmediğim tek bileşen GUI bestecisiydi - bir arabası, ancak her zaman Not Defteri ile değiştirebilirsiniz.
C4droid'i indirebilir, ardından GCC eklentisini yükleyebilir ve SD'nize kurabilirsiniz. Kabuktan ben sadece GCC ikili olduğu dizine geçmek ve daha sonra bir yerleşik yürütülebilir yapmak için çağırır.
/mnt/sdcard/Android/data/com.n0n3m4.droidc/files/gcc/bin/arm-linux-androideabi-gcc
#include<stdio.h>
int main(){
printf("hello arm!\n");
return 0;
}
merhaba kol!
Bu üç adım, bu gönderiye sahip olmak ve depolamak için iyidir.
1) Android'de yerel c kodu nasıl taşınır
3) http://mindtherobot.com/blog/452/android-beginners-ndk-setup-step-by-step/
Ubuntu'nuzdaki yerel C / c ++ Dosyaları libstdc ++. * X86 (veya x86_64) ikili dosyalarıdır, ancak Android cihazlar ve emülatörler ARM'dir. Tabii ki, doğru soname ayarlasanız bile bu yine de çalışmaz. Bu, hiçbir yere götürmeyen çok saf bir yoldur. Android'in C ++ desteği çok sınırlıdır, yani istisna yoktur, standart C ++ kütüphanesi (STL dahil) ve RTTI. Böyle bir işleve ihtiyacınız varsa, özel NDK dağıtımımı kullanın.
http://crystax.net/android/ndk.php - yukarıda listelenen tam C ++ özelliklerini destekler.
Neden hata var: '__cxa_end_cleanup' bağlantı hatasına tanımsız başvuru. Android stlport
zaman. Çünkü libstdc + + bağlantısı yoktur. A. Çok yanlış.
Bazı statik kitaplık kullandığından, tam libstdc + + 'yı bağlamak gerekir. A. Can
http://crystax.net/android/ndk.phpPaketi indirmek için burada
kaynaklar \ cxx-stl \ gnu-libstdc + + \ libs \ armeabi dizini.
Android kendi libstdc + + desteği ile sınırlıdır, tam bir libstdc + + ile bağlantılı olmalıdır. Bir iş.
Android.mk'de dosya ekle LOCAL_LDFLAGS = $ (LOCAL_PATH) / libs / libcurl.a \
$ (LOCAL_PATH) / libs / liblua.a \
`$ (LOCAL_PATH) / libs / libstdc + +. A`
Ve LOCAL_CPPFLAGS + =-lstdc + +-fexceptions
derlenebilir
Android'in bir sonraki SDK sürümünde C / C ++ kütüphanelerine izin verme planı var (Codename Eclair?) Bugüne kadar Android Java SDK'sı ile mümkün değil. Ancak, BÜYÜK açık kaynak projesini alabilir, kendi kitaplıklarınızı yuvarlayabilir ve ardından kendi cihazınızı flaş edebilirsiniz ... ancak kitaplığınızı kullanmak isteyen herkesin özel yapınızı da flaş etmesi gerekir.
Kısa cevap: Yapamazsınız.
@ Backslash17: makale ve kurulum talimatları ile aşağıdaki bağlantı bakarak, tüm şirket var android çerçeve atlayarak emülatör üzerinde kendinden derlenmiş bir çalıştırılabilir başlatmaktır. Emülatöre sahip olduktan sonra telnet yapabilir ve linux kabuğuna sahip olabilirsiniz. Bir linux programı çalıştırmak elbette çok önemlidir. Ancak bu, jailbreak (diğer adıyla root erişimi) olmayan telefonlar için geçerli değildir ve piyasaya sunulmaz.
Google başka fırsatlar açmazsa veya birisi Dil X'i Dalvik bayt koduna (Dalvik Android programlarını çalıştıran VM'dir) derleyen özel bir derleyici yazmadıkça yerel kod yazamazsınız.