Pisać aplikacje w C lub C ++ dla Androida? [Zamknięte]
286
Próbuję opracować / przenieść grę na Androida, ale jest ona w C, a Android obsługuje Javę, ale jestem pewien, że musi istnieć sposób na zainstalowanie aplikacji C, czy ktoś wie, jak to zrobić?
G1 domyślnie nie zezwala na dostęp do roota i istnieje wiele ograniczeń dotyczących tego, co można wykonać poza środowiskiem „Androida”. Nie miałbym wielkiej nadziei na znalezienie sposobu na wykonanie natywnego kodu z poziomu Androida.
Cogsy,
2
ale pobrałem DOOM na Androida z rynku. Tak więc powinno być wykonalne
Android NDK to zestaw narzędzi, który pozwala realizować części aplikacji w natywnego kodu, przy użyciu języków takich jak C i C ++. W przypadku niektórych typów aplikacji może to pomóc w ponownym użyciu bibliotek kodów napisanych w tych językach.
Aby uzyskać więcej informacji na temat rozpoczęcia pracy z programowaniem natywnym, kliknij ten link .
Mamy nadzieję, że informacje zostaną zaktualizowane na stronie grup google ( http://groups.google.com/group/android-ndk ), ponieważ informują, że nie zostały jeszcze opublikowane.
Nie jestem pewien, skąd pobrać prosty plik, ale słyszałem, że możesz otrzymać kopię NDK z repozytorium Google Git w gałęzi pączków.
Oficjalne stanowisko wydaje się być takie, że nie jest to coś, co „chciałbyś zrobić”. Zobacz ten wątek na liście programistów Androida. Google przewiduje, że Android działa na różnych urządzeniach (procesory, wyświetlacze itp.). Dlatego najlepszym sposobem na umożliwienie programowania jest użycie (zarządzanego) kodu zarządzanego, który atakuje maszynę wirtualną Dalvik. Z tego powodu zestaw SDK systemu Android nie obsługuje C / C ++.
Android zawiera zestaw bibliotek C / C ++ używanych przez różne komponenty systemu Android. Funkcje te są udostępniane programistom za pośrednictwem platformy aplikacji na Androida.
Struktura aplikacji zarządzanych wydaje się być warstwowa na tych bibliotekach. Na stronie znajduje się lista bibliotek C / C ++: standardowa biblioteka C, media, 3D, SQL lite i inne.
Wszystko czego potrzebujesz to łańcuch kompilatora, który skompiluje C / C ++ do odpowiedniego procesora (ARM, w przypadku G1). Niektóre instrukcje krótkie, jak to zrobić to tutaj .
Nie wiem, gdzie znaleźć opisy interfejsów API udostępnianych przez te biblioteki. Sądzę, że gdzieś w SDK mogą być ukryte pliki nagłówków, ale dokumentacja może być pobieżna / brakująca. Ale myślę, że da się to zrobić!
Mam nadzieję, że to przydatne. Dla przypomnienia, nie napisałem żadnych natywnych aplikacji na Androida - tylko kilka prostych zarządzanych.
Spodziewam się, że ta metoda jest przestarzała przez NDK, ale może nie być dostępna, jeśli niektóre sieci lub coś nie pozwalają ludziom uaktualnić swoich telefonów.
link nie znaleziono 404. Zawsze dobrym pomysłem jest umieszczenie w odpowiedzi treści z oryginalnego postu na wypadek, gdyby właściciel witryny wygrał na loterii, rozwiódł się z żoną i przeprowadził się na Bahamy.
„fakt, że obsługiwany jest tylko język Java, nie oznacza, że nie można tworzyć aplikacji w innych językach. Zostało to udowodnione przez wielu programistów, hakerów i ekspertów w tworzeniu aplikacji dla urządzeń mobilnych. Faceci z Elements Interactive BV, firmy stojącej za Edgelib biblioteki, udało się uruchomić natywne aplikacje C ++ na platformie Android, nawet jeśli w tej chwili wciąż jest wiele problemów z wyświetlaniem i dźwiękiem ... itd. Obejmuje to grę S-Tris2 i demonstrację animacji 3D Edgelib. ”
Należy pamiętać, że NDK nie pozwala ci tworzyć aplikacji tylko dla natywnych. Głównym środowiskiem uruchomieniowym Androida pozostaje maszyna wirtualna Dalvik.
Nie znam samouczka, ale dobre narzędzie programistyczne: Airplay SDK od Ideaworks Labs. (Ostatnio przemianowany na „ Marmelade ”) Za pomocą C / C ++ możesz tworzyć aplikacje na Windows Mobile, iPhone'y, Android. Jedynym komponentem, który mi się nie podobał, był kompozytor GUI - wadliwy, ale zawsze możesz go zastąpić Notatnikiem.
Możesz pobrać c4droid, a następnie zainstalować wtyczkę GCC i zainstalować na karcie SD. Z powłoki po prostu przechodzę do katalogu, w którym znajduje się plik binarny GCC, a następnie wywołuję go, aby wykonać plik wykonywalny na pokładzie.
Natywne pliki C / c ++ libstdc ++. * Z systemu Ubuntu to pliki binarne x86 (lub x86_64), ale urządzenia z Androidem i emulatory to ARM. Oczywiście i tak to nie zadziała, nawet jeśli ustawisz prawidłową soname. To bardzo naiwny sposób, który nie prowadzi do nikąd. Android ma bardzo ograniczoną obsługę C ++, co oznacza, że nie ma wyjątków, standardowej biblioteki C ++ (w tym STL) i RTTI. Jeśli potrzebujesz takiej funkcjonalności, skorzystaj z mojej niestandardowej dystrybucji NDK z
Planuje się zezwolić na biblioteki C / C ++ w następnej wersji zestawu SDK systemu Android (Codename Eclair?) Do tej pory nie jest to możliwe za pośrednictwem zestawu Android Java SDK. Możesz jednak pobrać OGROMNY projekt open source, rozwinąć własne biblioteki, a następnie sflashować własne urządzenie ... ale każdy, kto chce korzystać z Twojej biblioteki, będzie musiał także sflashować niestandardową kompilację.
@ Backslash17: Przeglądając artykuł i poniższy link z instrukcjami instalacji, cała firma pracowała, aby uruchomić samodzielnie skompilowany plik wykonywalny na emulatorze, omijając platformę Android. Gdy masz emulator, możesz telnet i mieć powłokę Linux. Uruchamianie programu linux jest oczywiście trywialne. Ale to nie działa na telefony bez jailbreak (inaczej dostęp do roota) i nie jest dostępne na rynku.
O ile Google nie otworzy innych możliwości lub ktoś nie napisze niestandardowego kompilatora, który kompiluje język X do kodu bajtowego Dalvik (Dalvik to maszyna wirtualna z programami na Androida), nie będziesz mógł pisać kodu natywnego.
Odpowiedzi:
Każdy, kto przyjdzie do tego za pośrednictwem Google, pamiętaj, że począwszy od SDK 1.6 Android ma teraz oficjalny natywny SDK.
Możesz pobrać Android NDK (Native Development Kit) stąd: https://developer.android.com/ndk/downloads/index.html
Jest też post na blogu o NDK:
http://android-developers.blogspot.com/2009/06/introducing-android-15-ndk-release-1.html
źródło
Android NDK to zestaw narzędzi, który pozwala realizować części aplikacji w natywnego kodu, przy użyciu języków takich jak C i C ++. W przypadku niektórych typów aplikacji może to pomóc w ponownym użyciu bibliotek kodów napisanych w tych językach.
Aby uzyskać więcej informacji na temat rozpoczęcia pracy z programowaniem natywnym, kliknij ten link .
Przykładowe aplikacje można znaleźć tutaj .
źródło
Zwykle musisz:
Jeśli chcesz sprzedać aplikację:
źródło
Google wydało Native Development Kit (NDK) (zgodnie z http://www.youtube.com/watch?v=Z5whfaLH1-E o 00:07:30).
Mamy nadzieję, że informacje zostaną zaktualizowane na stronie grup google ( http://groups.google.com/group/android-ndk ), ponieważ informują, że nie zostały jeszcze opublikowane.
Nie jestem pewien, skąd pobrać prosty plik, ale słyszałem, że możesz otrzymać kopię NDK z repozytorium Google Git w gałęzi pączków.
źródło
Oficjalne stanowisko wydaje się być takie, że nie jest to coś, co „chciałbyś zrobić”. Zobacz ten wątek na liście programistów Androida. Google przewiduje, że Android działa na różnych urządzeniach (procesory, wyświetlacze itp.). Dlatego najlepszym sposobem na umożliwienie programowania jest użycie (zarządzanego) kodu zarządzanego, który atakuje maszynę wirtualną Dalvik. Z tego powodu zestaw SDK systemu Android nie obsługuje C / C ++.
ALE, spójrz na tę stronę :
Struktura aplikacji zarządzanych wydaje się być warstwowa na tych bibliotekach. Na stronie znajduje się lista bibliotek C / C ++: standardowa biblioteka C, media, 3D, SQL lite i inne.
Wszystko czego potrzebujesz to łańcuch kompilatora, który skompiluje C / C ++ do odpowiedniego procesora (ARM, w przypadku G1). Niektóre instrukcje krótkie, jak to zrobić to tutaj .
Nie wiem, gdzie znaleźć opisy interfejsów API udostępnianych przez te biblioteki. Sądzę, że gdzieś w SDK mogą być ukryte pliki nagłówków, ale dokumentacja może być pobieżna / brakująca. Ale myślę, że da się to zrobić!
Mam nadzieję, że to przydatne. Dla przypomnienia, nie napisałem żadnych natywnych aplikacji na Androida - tylko kilka prostych zarządzanych.
Andy
źródło
Możesz użyć nestedvm do przetłumaczenia C (lub innych języków GCC) na kod bajtowy Java i użyć go jako podstawy swojego portu. Na przykład zobacz port przenośnej kolekcji puzzli Simona Tathamsa na Androida .
Spodziewam się, że ta metoda jest przestarzała przez NDK, ale może nie być dostępna, jeśli niektóre sieci lub coś nie pozwalają ludziom uaktualnić swoich telefonów.
źródło
Firma Google uruchomiła już Google I / O 2011: wprowadzenie gier C i C ++ do sesji Androida, która jest dostępna pod adresem http://www.youtube.com/watch?v=5yorhsSPFG4
co dobrze zrozumieć użycie NDK do pisania aplikacji w C i C ++ dla Androida.
Jeśli chcesz po prostu skompilować dowolną natywną grę na konsolę i uruchomić ją na Androidzie, w tym artykule pokazano 3 metody na to samo.
1: Kompilacja statyczna przy użyciu autonomicznego łańcucha narzędzi
2: Kompilacja krzyżowa przy użyciu zestawu narzędzi systemu Android NDK
3: Kompilacja krzyżowa przy użyciu kodu źródłowego AOSP
źródło
Może tego szukasz?
http://www.mosync.com/
Jest to środkowa warstwa do programowania dla kilku platform mobilnych za pomocą c ++.
źródło
Patrząc na to, wydaje się możliwe:
źródło
Od 2009 r. Rozwija się w tej sprawie.
Necessitas - Qt (framework C ++) dla Androida
Pierwsze kroki wideo .
źródło
Spójrz na grupę google ndk, która wygląda obiecująco, pierwsza wersja NDK będzie dostępna w pierwszej połowie 2009 roku.
Aktualizacja: Zostało wydane http://android-developers.blogspot.com/2009/06/introducing-android-15-ndk-release-1.html
źródło
Nie jestem pewien, czy NDK zapewnia pełne pokrycie oficjalnego API Java.
Od http://developer.android.com/sdk/ndk/index.html#overview :
źródło
Google właśnie wydało NDK, który dokładnie na to pozwala.
http://feedproxy.google.com/~r/blogspot/hsDu/~3/2foWz7hwFtE/introducing-android-15-ndk-release-1.html
Można go znaleźć tutaj: http://developer.android.com/sdk/ndk/1.5_r1/index.html
źródło
Ten post na blogu może być dobrym początkiem: http://benno.id.au/blog/2007/11/13/android-native-apps Niestety wiele ważnych rzeczy zostało „pozostawionych czytelnikowi”.
źródło
Nie znam samouczka, ale dobre narzędzie programistyczne: Airplay SDK od Ideaworks Labs. (Ostatnio przemianowany na „ Marmelade ”) Za pomocą C / C ++ możesz tworzyć aplikacje na Windows Mobile, iPhone'y, Android. Jedynym komponentem, który mi się nie podobał, był kompozytor GUI - wadliwy, ale zawsze możesz go zastąpić Notatnikiem.
źródło
Możesz pobrać c4droid, a następnie zainstalować wtyczkę GCC i zainstalować na karcie SD. Z powłoki po prostu przechodzę do katalogu, w którym znajduje się plik binarny GCC, a następnie wywołuję go, aby wykonać plik wykonywalny na pokładzie.
znajdź / -name gcc
/mnt/sdcard/Android/data/com.n0n3m4.droidc/files/gcc/bin/arm-linux-androideabi-gcc
kot> test. c
./arm-linux-androideabi-gcc test.c -o test
./test
cześć ramię!
źródło
Te trzy kroki warto mieć i przechowywać w tym poście.
1) Jak przenieść natywny kod c na Androida
2) http://www.integratingstuff.com/2010/12/12/calling-native-c-code-through-jni-in-android-applications/
3) http://mindtherobot.com/blog/452/android-beginners-ndk-setup-step-by-step/
źródło
Natywne pliki C / c ++ libstdc ++. * Z systemu Ubuntu to pliki binarne x86 (lub x86_64), ale urządzenia z Androidem i emulatory to ARM. Oczywiście i tak to nie zadziała, nawet jeśli ustawisz prawidłową soname. To bardzo naiwny sposób, który nie prowadzi do nikąd. Android ma bardzo ograniczoną obsługę C ++, co oznacza, że nie ma wyjątków, standardowej biblioteki C ++ (w tym STL) i RTTI. Jeśli potrzebujesz takiej funkcjonalności, skorzystaj z mojej niestandardowej dystrybucji NDK z
http://crystax.net/android/ndk.php - obsługuje pełne funkcje C ++ wymienione powyżej.
Dlaczego występuje błąd: niezdefiniowane odwołanie do błędu łącza „__cxa_end_cleanup”. Android stlport
czas. Ponieważ nie ma linku do libstdc + +. A. Tak źle.
Ponieważ używa jakiejś biblioteki statycznej, konieczne jest połączenie pełnego libstdc + +. Puszka
http://crystax.net/android/ndk.php tutaj, aby pobrać pakiet
sources \ cxx-stl \ gnu-libstdc + + \ libs \ armeabi.
Android na własnej obsłudze libstdc + + jest ograniczony, musi być połączony z pełną biblioteką libstdc + +. Praca.
Dodaj plik w Android.mk
LOCAL_LDFLAGS = $ (LOCAL_PATH) / libs / libcurl.a \
I
LOCAL_CPPFLAGS + =-lstdc + +-fexceptions
można go skompilowaćźródło
Planuje się zezwolić na biblioteki C / C ++ w następnej wersji zestawu SDK systemu Android (Codename Eclair?) Do tej pory nie jest to możliwe za pośrednictwem zestawu Android Java SDK. Możesz jednak pobrać OGROMNY projekt open source, rozwinąć własne biblioteki, a następnie sflashować własne urządzenie ... ale każdy, kto chce korzystać z Twojej biblioteki, będzie musiał także sflashować niestandardową kompilację.
źródło
Krótka odpowiedź: nie możesz.
@ Backslash17: Przeglądając artykuł i poniższy link z instrukcjami instalacji, cała firma pracowała, aby uruchomić samodzielnie skompilowany plik wykonywalny na emulatorze, omijając platformę Android. Gdy masz emulator, możesz telnet i mieć powłokę Linux. Uruchamianie programu linux jest oczywiście trywialne. Ale to nie działa na telefony bez jailbreak (inaczej dostęp do roota) i nie jest dostępne na rynku.
O ile Google nie otworzy innych możliwości lub ktoś nie napisze niestandardowego kompilatora, który kompiluje język X do kodu bajtowego Dalvik (Dalvik to maszyna wirtualna z programami na Androida), nie będziesz mógł pisać kodu natywnego.
źródło