Написать приложения на C или C ++ для Android? [закрыто]
286
Я пытаюсь разработать / перенести игру на Android, но она на C, а Android поддерживает Java, но я уверен, что должен быть способ получить приложение на C, кто-нибудь знает, как это сделать?
G1 по умолчанию не разрешает root-доступ, и существует множество ограничений в отношении того, что может быть выполнено вне среды «Android». У меня не было бы большой надежды найти способ выполнить собственный код из Android.
Cogsy
2
но я скачал DOOM для Android с торговой площадки. Так что это должно быть выполнимо
Android NDK является набор инструментов , который позволяет реализовать части вашего приложения в машинном коде, с использованием языков , таких как C и C ++. Для определенных типов приложений это может помочь вам повторно использовать библиотеки кода, написанные на этих языках.
Для получения дополнительной информации о том, как начать работу с нативной разработкой, перейдите по этой ссылке .
Надеемся, что информация будет обновлена на странице групп 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 - только несколько простых управляемых.
это хорошо, чтобы понять использование NDK для написания приложений на C и C ++ для Android.
Если вы просто хотите скомпилировать любую консольную нативную игру и запустить ее на Android, то в этой статье показано 3 метода для одного и того же.
1: Статическая компиляция с использованием автономного набора инструментов
2: Кросс-компиляция с использованием набора инструментов Android NDK
3: Кросс-компиляция с использованием исходного кода AOSP
ссылка 404 не найдена. Всегда полезно вставить в ответ какой-либо контент из оригинального поста, если владелец сайта выигрывает в лотерею, разводится со своей женой и переезжает на Багамские острова.
«тот факт, что поддерживается только язык Java, не означает, что вы не можете разрабатывать приложения на других языках. Это доказали многие разработчики, хакеры и эксперты по разработке приложений для мобильных устройств. Ребята из Elements Interactive BV, компании, стоящей за Edgelib библиотеке, удалось запустить собственные приложения C ++ на платформе Android, даже в то время, когда на экране все еще остается много проблем с отображением и звуком… и т. д. К ним относятся игра S-Tris2 и демонстрация 3D-анимации Edgelib ».
Обратите внимание, что NDK не позволяет вам разрабатывать приложения только для нативного уровня. Основной средой выполнения Android остается виртуальная машина Dalvik.
Я не знаю учебник, но хороший инструмент разработки: Airplay SDK от Ideaworks Labs. (Недавно переименован в « Marmelade »). Используя C / C ++, вы можете создавать приложения для Windows Mobile, iPhone, Android. Единственным компонентом, который мне не понравился, был GUI composer - глючный, но вы всегда можете заменить его Блокнотом.
Вы можете скачать c4droid, а затем установить плагин GCC и установить на свой SD. Из оболочки я просто перехожу в каталог, где находится двоичный файл GCC, а затем вызываю его, чтобы сделать исполняемый файл на борту.
Собственные файлы C / c ++ libstdc ++. * Из вашего Ubuntu являются двоичными файлами x86 (или x86_64), но устройства Android и эмуляторы являются ARM. Конечно, это не сработает в любом случае, даже если вы установите правильное имя сына. Это очень наивный путь, который никуда не ведет. Android имеет очень ограниченную поддержку C ++, что означает отсутствие исключений, стандартную библиотеку C ++ (включая STL) и RTTI. Если вам нужна такая функциональность, используйте мой собственный дистрибутив NDK от
Планируется разрешить использование библиотек C / C ++ в следующей версии SDK для Android (кодовое имя Eclair?). На сегодняшний день это невозможно через Android Java SDK. Тем не менее, вы можете взять ОГРОМНЫЙ проект с открытым исходным кодом, свернуть свои собственные библиотеки, а затем прошить свое собственное устройство ... но любой, кто захочет использовать вашу библиотеку, должен будет также прошить вашу собственную сборку.
@ Backslash17: просматривая статью и следующую ссылку с инструкциями по установке, все, что компания начала работать, это запустить самостоятельно скомпилированный исполняемый файл на эмуляторе, минуя платформу Android. Если у вас есть эмулятор, вы можете подключиться к нему через telnet и получить оболочку linux. Запуск программы Linux там, конечно, тривиально. Но это не работает для телефонов без джейлбрейка (он же root-доступ) и не поставляется на рынке.
Если Google не откроет другие возможности или кто-то не напишет собственный компилятор, который компилирует язык X в байт-код Dalvik (Dalvik - это виртуальная машина, которая запускает программы для Android), вы не сможете писать собственный код.
Ответы:
Для тех, кто приходит к этому через 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 ++.
НО, посмотрите на эту страницу :
Платформа управляемых приложений, по-видимому, размещена поверх этих библиотек. Далее на странице перечислены библиотеки 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
источник
Может быть, вы ищете это?
http://www.mosync.com/
Это средний уровень разработки для нескольких мобильных платформ с использованием c ++.
источник
Глядя на это кажется возможным:
источник
С 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 :
источник
Google только что выпустил NDK, который позволяет именно это.
http://feedproxy.google.com/~r/blogspot/hsDu/~3/2foWz7hwFtE/introducing-android-15-ndk-release-1.html
Его можно найти здесь: 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, а затем вызываю его, чтобы сделать исполняемый файл на борту.
найти / -имя gcc
/mnt/sdcard/Android/data/com.n0n3m4.droidc/files/gcc/bin/arm-linux-androideabi-gcc
кошка> test.c
./arm-linux-androideabi-gcc test.c -o test
./тест
привет рука!
источник
Эти три шага хорошо иметь и хранить в этом посте.
1) Как портировать родной c код на андроид
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/
источник
Собственные файлы 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_CPPFLAGS + =-lstdc + +-fexceptions
может быть скомпилированоисточник
Планируется разрешить использование библиотек C / C ++ в следующей версии SDK для Android (кодовое имя Eclair?). На сегодняшний день это невозможно через Android Java SDK. Тем не менее, вы можете взять ОГРОМНЫЙ проект с открытым исходным кодом, свернуть свои собственные библиотеки, а затем прошить свое собственное устройство ... но любой, кто захочет использовать вашу библиотеку, должен будет также прошить вашу собственную сборку.
источник
Краткий ответ: вы не можете.
@ Backslash17: просматривая статью и следующую ссылку с инструкциями по установке, все, что компания начала работать, это запустить самостоятельно скомпилированный исполняемый файл на эмуляторе, минуя платформу Android. Если у вас есть эмулятор, вы можете подключиться к нему через telnet и получить оболочку linux. Запуск программы Linux там, конечно, тривиально. Но это не работает для телефонов без джейлбрейка (он же root-доступ) и не поставляется на рынке.
Если Google не откроет другие возможности или кто-то не напишет собственный компилятор, который компилирует язык X в байт-код Dalvik (Dalvik - это виртуальная машина, которая запускает программы для Android), вы не сможете писать собственный код.
источник