Я намагаюся розробити / перенести гру на Android, але це на C, а Android підтримує Java, але я впевнений, що там повинен бути спосіб запустити додаток С, хтось знає про спосіб цього досягти?
Я намагаюся розробити / перенести гру на Android, але це на C, а Android підтримує Java, але я впевнений, що там повинен бути спосіб запустити додаток С, хтось знає про спосіб цього досягти?
Відповіді:
Для всіх, хто приходить до цього через Google, зауважте, що починаючи з SDK 1.6 Android тепер є офіційний рідний SDK.
Ви можете завантажити Android NDK (Native Development Kit) звідси: https://developer.android.com/ndk/downloads/index.html
Також є запис у блозі про NDK:
http://android-developers.blogspot.com/2009/06/introducing-android-15-ndk-release-1.html
Android NDK є набір інструментів , який дозволяє реалізувати частини вашого застосування в машинному коді, з використанням мов , таких як C і C ++. Для певних типів програм це допоможе повторно використовувати бібліотеки кодів, написані цими мовами.
Для отримання додаткової інформації про те, як розпочати роботу з нативного розвитку, перейдіть за цим посиланням .
Зразки програм можна знайти тут .
Зазвичай ви повинні:
Якщо ви хочете продати додаток:
Google випустив Native Development Kit (NDK) (згідно http://www.youtube.com/watch?v=Z5whfaLH1-E о 00:07:30).
Сподіваємось, інформація буде оновлена на сторінці груп google ( http://groups.google.com/group/android-ndk ), оскільки, як відомо, вона ще не опублікована.
Я не впевнений, де отримати просте завантаження для цього, але я чув, що ви можете отримати копію NDK з сховища Git Google під філією пончика.
Офіційна позиція здається, що це не те, що ви коли-небудь "хотіли б зробити". Дивіться цю тему у списку розробників Android. Google пропонує Android працювати на різних пристроях (процесорах, дисплеях тощо). Оптимальним способом активізації розробки є використання (портативного) керованого коду, орієнтованого на програму VM Dalvik. З цієї причини Android SDK не підтримує C / C ++.
АЛЕ, погляньте на цю сторінку :
Android включає набір бібліотек C / C ++, які використовуються різними компонентами системи Android. Ці можливості піддаються розробникам за допомогою програми Android.
Схоже, що керована програма додатків є багатошаровою поверх цих бібліотек. На цій сторінці можна переглянути список C / C ++ вкладок: стандартна бібліотека C, медіа, 3D, SQL lite та інші.
Тому все, що вам потрібно, - це ланцюг компілятора, який буде компілювати C / C ++ у відповідний процесор (ARM, у випадку G1). Деякі короткі інструкції, як це зробити, тут .
Що я не знаю, це де знайти описи API, які надають ці бібліотеки. Я б здогадувався, що в SDK десь заховані файли заголовків, але документація може бути схематичною / відсутньою. Але я думаю, що це можна зробити!
Сподіваюся, що це корисно. Для запису я не написав жодних власних програм для Android - лише кілька простих керованих.
Енді
Ви можете використовувати nestedvm для перекладу C (або інших мов GCC) у байт-код Java та використовувати це як основу вашого порту. Наприклад, дивіться портативну колекцію головоломки портату Саймона Таттама для Android .
Я вважаю, що цей метод застарілий NDK, але він може не бути, якщо деякі мережі або щось не дозволяють людям оновити свої телефони.
Google вже запустив Google I / O 2011: Доведення ігор C та C ++ до сеансу Android, який доступний на веб- сайті http://www.youtube.com/watch?v=5yorhsSPFG4
що добре зрозуміти використання NDK для написання додатків в c і c ++ для android.
Якщо ви просто хочете перехрестити компіляцію будь-якої рідної гри на консолі та запустити їх на android, то ця стаття показала 3 методи для того ж.
1: Статична компіляція за допомогою окремої ланцюжка інструментів
2: Перехресна компіляція за допомогою інструментальної мережі Android NDK
3: Перехресна компіляція з використанням вихідного коду AOSP
Можливо, ви цього шукаєте?
Це середній рівень для розробки для декількох мобільних платформ, що використовують c ++.
Дивлячись на це, здається, що можливо:
"факт лише підтримується мовою Java. Це не означає, що ви не можете розробляти додатки іншими мовами. Це було доведено багатьма розробниками, хакерами та експертами з розробки програм для мобільних пристроїв. Хлопці з Elements Interactive BV, компанії, що стоїть за Edgelib бібліотеці, вдалося запустити на платформі Android рідні програми C ++, навіть якщо в даний час існує багато проблем на дисплеї та звуку ... і т. д. Сюди входить гра S-Tris2 та демонстрація 3D-анімації Edgelib ".
З 2009 року в цьому питанні йде розвиток.
Necessitas - Qt (C ++ фреймворк) для Android
Початок відео .
Погляньте на групу ndk google, яка виглядає багатообіцяючою, перша версія NDK буде доступна в першій половині 2009 року.
Оновлення: І випускається http://android-developers.blogspot.com/2009/06/introducing-android-15-ndk-release-1.html
Я не впевнений, що NDK забезпечує повне покриття офіційного Java API.
З http://developer.android.com/sdk/ndk/index.html#overview :
Зауважте, що NDK не дає змоги розробляти програми лише для рідних. Основним режимом роботи Android залишається віртуальна машина Dalvik.
Google щойно випустив NDK, який дозволяє саме це.
Його можна знайти тут: http://developer.android.com/sdk/ndk/1.5_r1/index.html
Ця публікація в блозі може стати гарним початком: http://benno.id.au/blog/2007/11/13/android-native-apps На жаль, багато важливого матеріалу "залишається читачем як вправа".
Я не знаю підручника, але гарний інструмент розробки: Airplay SDK від Ideaworks Labs. (Нещодавно ребрендований " Мармелад ") За допомогою C / C ++ ви можете створювати програми для Windows Mobile, iPhone, Android. Єдиний компонент, який мені не сподобався, був композитор GUI - баггі, але ви завжди можете замінити його Блокнотом.
Ви можете завантажити c4droid, а потім встановити плагін GCC та встановити на свій SD. З оболонки я просто переходжу до каталогу, де є двійковий файл GCC, а потім викликаю його, щоб зробити бортовий виконуваний файл.
/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;
}
привіт рука!
Ці три кроки добре мати і зберігати в цій публікації.
1) Як перенести нативний c код на Android
3) http://mindtherobot.com/blog/452/android-beginners-ndk-setup-step-by-step/
Native C / c ++ Files libstdc ++. * З вашого Ubuntu - це бінарні файли x86 (або x86_64), але пристрої та емулятори Android - ARM. Звичайно, це все одно не вийде, навіть якщо ви встановите правильне ім’я. Це дуже наївний шлях, який нікуди не веде. Android має дуже обмежену підтримку C ++, тобто немає винятків, стандартна бібліотека C ++ (включаючи STL) та RTTI. Якщо вам потрібна така функціональність, використовуйте мій користувацький розподіл NDK від
http://crystax.net/android/ndk.php - він підтримує всі перелічені вище функції C ++.
Чому виникає помилка: невизначена посилання на посилання "__cxa_end_cleanup". Android stlport
час. Тому що немає посилання на libstdc + +. А. Так неправильно.
Оскільки він використовує деяку статичну бібліотеку, необхідно зв’язати повний libstdc + +. A. Може
http://crystax.net/android/ndk.php тут, щоб завантажити пакет
джерела \ cxx-stl \ gnu-libstdc + + \ libs \ armeabi каталог.
Android на власній підтримці libstdc + + обмежений, він повинен бути пов'язаний з повною libstdc + +. Робота.
Додайте файл в Android.mk LOCAL_LDFLAGS = $ (LOCAL_PATH) / libs / libcurl.a \
$ (LOCAL_PATH) / libs / liblua.a \
`$ (LOCAL_PATH) / libs / libstdc + +. A`
І LOCAL_CPPFLAGS + =-lstdc + +-fexceptions
можуть бути складені
Існує план дозволити бібліотеки C / C ++ у наступній версії SDK Android (Codename Eclair?) На сьогоднішній день через Android Java SDK неможливо. Однак ви можете захопити ВЕЛИЧЕЗНИЙ проект з відкритим кодом, прокатати власні бібліотеки, а потім виправити власний пристрій ... але кожен, хто хоче користуватися вашою бібліотекою, також повинен прошивати вашу власну збірку.
Коротка відповідь: Ви не можете.
@ Backslash17: Переглядаючи статтю та наступне посилання з інструкціями щодо встановлення, все, що компанія почала працювати, - це запустити самостійно складений виконуваний файл на емуляторі, минаючи рамки для Android. Як тільки у вас є емулятор, ви можете входити в телнет і мати оболонку Linux. Запуск програми Linux є звичайним. Але це не працює для телефонів без джейлбрейка (він же кореневий доступ) і не доступний на ринку.
Якщо Google не відкриє інших можливостей або хтось не напише користувальницький компілятор, який компілює Language X у байт-код Dalvik (Dalvik - це віртуальна машинка, яка запускає програми Android), ви не зможете написати нативний код.