Писать приложения на C или C++ для Android? [закрытый]
Я пытаюсь разработать / перенести игру на Android, но она находится в C, и Android поддерживает Java, но я уверен, что должен быть способ получить приложение C там, кто-нибудь знает хороший учебник по этому вопросу?
спасибо!
20 ответов
для тех, кто приходит к этому через 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 Android NDK. Он содержит библиотеки, заголовки, makfile примеры и gcc toolchain
- создать исполняемый файл из кода C для ARM, оптимизировать и связать его с при необходимости предоставляются библиотеки
- подключиться к телефону с помощью интерфейс adb и протестируйте исполняемый
Если вы хотите продавать приложения:
- создайте библиотеку из вашего кода C
- создать простой код Java, который будет используйте эту библиотеку
- добавьте эту библиотеку в приложение файл пакета
Google выпустила собственный комплект разработки (NDK) (согласно http://www.youtube.com/watch?v=Z5whfaLH1-E в 00: 07:30).
надеюсь, информация будет обновлена на странице Google groups (http://groups.google.com/group/android-ndk), как говорится, он еще не выпущен.
Я не уверен, где получить простую загрузку для него, но я слышал, что вы можете получить копию NDK из репозитория Git Google под пончиком отделение.
официальная позиция Кажется что это не то, что ты "хочешь". См.этой теме в списке разработчиков Android. В Google предполагают Андроид работает на множестве различных устройств (процессоров, дисплеев и т. д.). Поэтому лучший способ включить разработку-использовать (переносимый) управляемый код, предназначенный для виртуальной машины Dalvik. По этой причине Android SDK не поддерживает C/C++.
но взгляните на этот страница:
Android включает в себя набор C / C++ библиотеки, используемые различными компонентами системы Android. Эти возможности для разработчиков через приложение для Android рамки.
платформа управляемых приложений, по-видимому, находится поверх этих библиотек. Далее на странице перечислены библиотеки C/C++: стандартная библиотека C, media, 3D, SQL lite и другие.
поэтому все, что вам нужно-это цепь компилятора скомпилирует C / C++ в соответствующий процессор (ARM, в случае G1). Краткие инструкции о том, как это сделать здесь.
чего я не знаю, так это где найти описания API, которые предоставляют эти библиотеки. Я бы предположил, что где-то в SDK могут быть файлы заголовков, но документация может быть отрывочной/отсутствующей. Но я думаю, это можно сделать!
надеюсь, что это полезно. Для записи, я не написал никаких родных приложений для android - всего несколько простых удалось из них.
Энди
можно использовать nestedvm чтобы перевести C (или другие языки GCC) в байт-код Java и использовать его в качестве основы вашего порта. Например, см. Android порт Simon Tathams portable puzzle collection.
Я ожидаю, что этот метод устарел NDK, но его может не быть, если некоторые сети или что-то не позволяют людям обновлять свои телефоны.
Google уже запустила Google I / O 2011: приведение C и C++ игры для Android сессия, которая доступна по адресу http://www.youtube.com/watch?v=5yorhsSPFG4
что хорошо понять использование NDK для написания приложения на c и C++ для android.
Если вы просто хотите скомпилировать любую консольную нативную игру и запустить их на android, то в этой статье показал 3 метода для тот же.
1: статическая компиляция с использованием автономной toolchain
2: перекрестная компиляция с помощью toolchain Android NDK
3: перекрестная компиляция с использованием исходного кода AOSP
может быть, вы ищете это?
Это средний уровень для разработки для нескольких мобильных платформ с использованием c++.
глядя на это кажется, возможно:
- http://openhandsetmagazine.com/2007/11/running-c-native-applications-on-android-the-final-point/ (теперь доступно только через WayBack Machine)
" тот факт, что поддерживается только язык Java, не означает, что вы не можете разрабатывать приложения на других языках. Это доказали многие разработчики, хакеры и эксперты в области разработки приложений для мобильных устройств. Парень в Elements Interactive B. V., компании, стоящей за библиотекой Edgelib, удалось запустить собственные приложения на C++ на платформе Android, даже в это время все еще много проблем на дисплее и звуке ... и т. д. Это включает в себя игру S-Tris2 и 3D-анимацию демо Edgelib."
с 2009 года есть развитие по этому вопросу.
Necessitas - Qt (C++ framework) для Android
Начало работы видео.
посмотри google NDK group это выглядит многообещающим, первая версия NDK будет доступна в 1H2009.
обновление: И он выпущен http://android-developers.blogspot.com/2009/06/introducing-android-15-ndk-release-1.html
Я не уверен, что NDK обеспечивает полный охват официального API Java.
от http://developer.android.com/sdk/ndk/index.html#overview:
обратите внимание, что NDK не позволяет разрабатывать только native-only приложения. Первичная андроида среда выполнения остается виртуальной Dalvik машина.
Google только что выпустил NDK, который позволяет именно это.
его можно найти здесь: http://developer.android.com/sdk/ndk/1.5_r1/index.html
вы можете скачать c4droid, а затем установить плагин GCC и установить на свой SD. Из оболочки я просто перехожу в каталог, где находится двоичный файл GCC, а затем вызываю его, чтобы сделать исполняемый файл на борту.
найти / -имя gcc
/ mnt / sdcard / Android / data / com.n0n3m4.droidc/файлы/ССЗ/ОГРН/АРМ-ОС Linux-androideabi-GCC и
cat > тест.c
#include<stdio.h>
int main(){
printf("hello arm!\n");
return 0;
}
./ arm-linux-androideabi-GCC test.c-o тест
./ тест
привет arm!
этот блог может быть хорошим началом: http://benno.id.au/blog/2007/11/13/android-native-apps К сожалению, многие важные вещи "оставлены как упражнение для читателя".
Я не знаю учебник, но хороший инструмент разработки: AirPlay SDK от Ideaworks Labs. (Недавно ребрендинг"мармелад") С помощью C / C++ вы можете создавать приложения для Windows Mobile, iPhones, Android. Единственным компонентом, который мне не понравился, был GUI composer-багги, но вы всегда можете заменить его блокнотом.
Это три шага хорошо иметь и хранить в этом посте.
1) как портировать родной код c на android
3) http://mindtherobot.com/blog/452/android-beginners-ndk-setup-step-by-step/
собственные файлы C / C++ libstdc++.* из вашего Ubuntu являются x86 (или x86_64) двоичные файлы, но Android устройства и эмуляторы ARM. Конечно, это все равно не сработает, даже если вы установите правильный soname. Это очень наивный путь, который ведет в никуда. 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 для загрузки пакет
источники \ схх-стл \ гну-с libstdc + + \ либы \ норм каталог.
Android самостоятельно libstdc + + поддержка ограничена, она должна быть связана с полным libstdc + +. Работа.
Добавить файл в Android.МК 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 framework. Как только у вас есть эмулятор, вы можете telnet и иметь оболочку linux. Запуск программы linux там, конечно, тривиален. Но это не работает для телефонов без джейлбрейка (он же root access) и не доставляется на рынок.
Если Google не откроет другие возможности или кто-то не напишет пользовательский компилятор, который компилирует язык X в байт-код Dalvik (Dalvik-это виртуальная машина, которая запускает программы Android), вы не сможете написать собственный код.