Записывать приложения на C или C ++ для Android?

Я пытаюсь разработать / переносить игру на Android, но она находится на C, а Android поддерживает Java, но я уверен, что там должен быть способ получить приложение C, кто-нибудь знает хороший учебник по этому вопросу ?

Благодаря!

Solutions Collecting From Web of "Записывать приложения на C или C ++ для 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/introducing-android-15-ndk-release-1.html

Android NDK – это набор инструментов, который позволяет реализовать часть вашего приложения в собственном коде с использованием таких языков, как C и C ++. Для определенных типов приложений это может помочь вам повторно использовать библиотеки кода, написанные на этих языках.

Для получения дополнительной информации о том, как начать работу с родной разработкой, перейдите по этой ссылке .

Примеры приложений можно найти здесь .

Обычно вам необходимо:

  1. Установите Google Android NDK. Он содержит библиотеки, заголовки, примеры makfile и gcc toolchain
  2. Создайте исполняемый файл из вашего C-кода для ARM, оптимизируйте и свяжите его с предоставленными libs, если потребуется
  3. Подключитесь к телефону, используя предоставленный интерфейс adb и проверьте свой исполняемый файл

Если вы хотите продать приложение:

  1. Создайте библиотеку из своего C-кода
  2. Создайте простой Java-код, который будет использовать эту библиотеку
  3. Вставить эту библиотеку в файл пакета приложения
  4. Проверьте приложение
  5. Продайте или бесплатно распространяйте его

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 VM. По этой причине 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

Может быть, вы ищете это?

http://www.mosync.com/

Это средний уровень для разработки для нескольких мобильных платформ с использованием c ++.

С 2009 года есть развитие по этому вопросу.
Necessitas – Qt (C ++ framework) для Android
Начало видео .

Глядя на это, кажется, что это возможно:

«Факт поддерживается только языком Java, не означает, что вы не можете разрабатывать приложения на других языках. Это было доказано многими разработчиками, хакерами и экспертами в разработке приложений для мобильных устройств. Ребята из Elements Interactive BV, компании за Edgelib Библиотеке удалось запустить собственные приложения C ++ на платформе Android, даже если в это время еще много проблем на дисплее и звуке … и т. Д. Сюда входят игра S-Tris2 и демо-версия 3D-анимации Edgelib ».

Взгляните на группу google ndk, она выглядит многообещающей, первая версия 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://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

Вы можете скачать c4droid, а затем установить плагин GCC и установить на свой SD. Из оболочки я просто перехожу в каталог, где находится двоичный файл GCC, и затем вызываю его, чтобы сделать исполняемый файл на борту.

Find / -name gcc

/mnt/sdcard/Android/data/com.n0n3m4.droidc/files/gcc/bin/arm-linux-androideabi-gcc

Cat> test.c

#include<stdio.h> int main(){ printf("hello arm!\n"); return 0; } 

./arm-linux-androideabi-gcc test.c -o test

./контрольная работа

Привет руку!

Я не знаю учебника, но хороший инструмент для разработки: Airplay SDK от Ideaworks Labs. (Недавно ребрендинг « Мармелад »). С помощью C / C ++ вы можете создавать приложения для Windows Mobile, iPhone, Android. Единственным компонентом, который мне не понравился, был композитор GUI – глючный, но вы всегда можете заменить его «Блокнотом».

Эти три шага хороши, чтобы иметь и хранить в этом посте.

1) Как портировать собственный код c на Android

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 здесь, чтобы скачать пакет

Sources \ 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 могут быть скомпилированы

Это сообщение в блоге может быть хорошим началом: http://benno.id.au/blog/2007/11/13/android-native-apps К сожалению, многие важные вещи «оставлены как упражнение для читателя».

Существует план, позволяющий библиотеки C / C ++ в следующей версии SDK для Android (Codename Eclair?). На сегодняшний день это невозможно в Android SDK для Android. Тем не менее, вы можете захватить ОГРОМНЫЙ проект с открытым исходным кодом, свернуть свои собственные библиотеки, а затем запустить собственное устройство … но любой, кто хочет использовать вашу библиотеку, должен будет также выполнить фальсификацию вашей пользовательской сборки.

Короткий ответ: вы не можете.

@ Backslash17: просмотрев статью и следующую ссылку с инструкциями по установке, вся компания получила работу – запустить самокомпилированный исполняемый файл на эмуляторе, минуя инфраструктуру Android. После того, как у вас есть эмулятор, вы можете подключиться к telnet и иметь оболочку linux. Конечно, запуск Linux-программы тривиален. Но это не работает для телефонов без джейлбрейка (ака root access) и не поставляется на рынке.

Если Google не открывает другие возможности, или кто-то пишет собственный компилятор, который компилирует Language X в байт-код Dalvik (Dalvik – это виртуальная машина, которая запускает программы для Android), вы не сможете написать собственный код.