Я пытаюсь разработать / перенести игру на Android, но она на C, а Android поддерживает Java, но я уверен, что должен быть способ получить приложение на C, кто-нибудь знает, как это сделать?
Я пытаюсь разработать / перенести игру на Android, но она на C, а Android поддерживает Java, но я уверен, что должен быть способ получить приложение на C, кто-нибудь знает, как это сделать?
Ответы:
Для тех, кто приходит к этому через 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/introduction-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 из репозитория Google Git в разделе пончиков.
Официальная позиция , по-видимому, такова, что вы никогда не захотите этого делать. Смотрите эту ветку в списке разработчиков Android. Google предусматривает запуск Android на различных устройствах (процессорах, дисплеях и т. Д.). Поэтому лучший способ обеспечить разработку - использовать (переносимый) управляемый код, предназначенный для виртуальной машины 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 коллекции портативных головоломок Simon Tathams .
Я ожидаю, что этот метод устарел в 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 библиотеке, удалось запустить собственные приложения C ++ на платформе Android, даже в то время, когда на экране все еще остается много проблем с отображением и звуком… и т. д. К ним относятся игра S-Tris2 и демонстрация 3D-анимации Edgelib ».
С 2009 года идет разработка по этому вопросу.
Necessitas - Qt (C ++ framework) для Android
Начало работы с видео .
Взгляните на группу Google ndk, она выглядит многообещающей, первая версия NDK будет доступна в 1П2009.
Обновление: И это выпущено http://android-developers.blogspot.com/2009/06/introduction-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. (Недавно переименован в « Marmelade »). Используя C / C ++, вы можете создавать приложения для Windows Mobile, iPhone, Android. Единственным компонентом, который мне не понравился, был GUI composer - глючный, но вы всегда можете заменить его Блокнотом.
Вы можете скачать 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 код на андроид
3) http://mindtherobot.com/blog/452/android-beginners-ndk-setup-step-by-step/
Собственные файлы C / c ++ 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 ++. Банка
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 (кодовое имя Eclair?). На сегодняшний день это невозможно через Android Java SDK. Тем не менее, вы можете взять ОГРОМНЫЙ проект с открытым исходным кодом, свернуть свои собственные библиотеки, а затем прошить свое собственное устройство ... но любой, кто захочет использовать вашу библиотеку, должен будет также прошить вашу собственную сборку.
Краткий ответ: вы не можете.
@ Backslash17: просматривая статью и следующую ссылку с инструкциями по установке, все, что компания начала работать, это запустить самостоятельно скомпилированный исполняемый файл на эмуляторе, минуя платформу Android. Если у вас есть эмулятор, вы можете подключиться к нему через telnet и получить оболочку linux. Запуск программы Linux там, конечно, тривиально. Но это не работает для телефонов без джейлбрейка (он же root-доступ) и не поставляется на рынке.
Если Google не откроет другие возможности или кто-то не напишет собственный компилятор, который компилирует язык X в байт-код Dalvik (Dalvik - это виртуальная машина, которая запускает программы для Android), вы не сможете писать собственный код.