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

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

283
задан Doc Brown 14 September 2019 в 00:17
поделиться

11 ответов

Для тех, кто приходит к этому через 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

244
ответ дан 23 November 2019 в 01:54
поделиться

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

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

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

-7
ответ дан 23 November 2019 в 01:54
поделиться

Взгляните на google ndk group , это выглядит многообещающе, первая версия NDK будет доступна в первом полугодии 2009 г.

Обновление: And it is released http://android-developers.blogspot.com/2009/06/introducing-android-15-ndk-release-1.html

5
ответ дан 23 November 2019 в 01:54
поделиться

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

2
ответ дан 23 November 2019 в 01:54
поделиться

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

1
ответ дан 23 November 2019 в 01:54
поделиться

Официальная позиция кажется такова, что это не то, чем вы когда-либо «хотели бы заниматься». См. эту ветку в списке разработчиков Android. Google предполагает, что Android будет работать на различных устройствах (процессоры, дисплеи и т. Д.). Поэтому лучший способ включить разработку - использовать (переносимый) управляемый код, предназначенный для виртуальной машины Dalvik. По этой причине Android SDK не поддерживает C / C ++.

НО, взгляните на эту страницу :

Android включает набор C / C ++ библиотеки, используемые различными компонентами системы Android. Эти возможности доступны разработчикам через приложение для Android framework.

Структура управляемых приложений, по-видимому, располагается поверх этих библиотек. Далее на странице перечисляются библиотеки C / C ++: стандартная библиотека C, носители, 3D, SQL lite и др.

Итак, все, что вам нужно, это цепочка компилятора, которая скомпилирует C / C ++ для соответствующего ЦП (ARM, в случае G1). Некоторые краткие инструкции о том, как это сделать, находятся здесь .

Я не знаю, где найти описания API, которые предоставляют эти библиотеки. Я предполагаю, что где-то в SDK могут быть файлы заголовков, но документация может быть отрывочной / отсутствующей. Но я думаю, что это можно сделать!

Надеюсь, это полезно. Для справки, я не писал ни одного родного приложения для Android - только несколько простых управляемых.

Энди

12
ответ дан 23 November 2019 в 01:54
поделиться

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 в ветке пончика.

14
ответ дан 23 November 2019 в 01:54
поделиться

Google только что выпустил NDK, который позволяет именно это.

http://feedproxy.google.com/~r/blogspot/hsDu/~3/2foWz7hwFtE/introduction-android-15 -ndk-release-1.html

Его можно найти здесь: http://developer.android.com/sdk/ndk/1.5_r1/index.html

3
ответ дан 23 November 2019 в 01:54
поделиться

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

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

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

41
ответ дан 23 November 2019 в 01:54
поделиться

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

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

7
ответ дан 23 November 2019 в 01:54
поделиться

Вы можете использовать nestedvm для перевода C (или других языков GCC) в байт-код Java и использовать его в качестве основы для вашего порта. Например, см. порт Android из коллекции портативных головоломок Саймона Татамса .

Я полагаю, что этот метод устарел NDK, но его может не быть, если некоторые сети или что-то не позволяют людям чтобы обновить свои телефоны.

8
ответ дан 23 November 2019 в 01:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: