Могу ли я сделать довольно родное приложение C ++ для Android? - PullRequest
24 голосов
/ 20 февраля 2010

Меня интересуют следующие функции:

  1. Написание приложения для Android Market, полностью написанного на C ++ (на самом деле это порт существующего продукта).
  2. Используйте быстрое нажатие на пиксель буфера экрана (или, скорее, для этого используйте OpenGL ES).
  3. Получите пользовательский ввод и направьте его на код C ++.

Законно ли написать такое приложение для Маркета? Строгая ли рыночная политика к таким вещам?

Ответы [ 6 ]

15 голосов
/ 16 декабря 2010

Начиная с NDK r5 с Android 2.3 (Gingerbread) это возможно, хотя я предполагаю, что только устройства с поддержкой нативных приложений должны иметь на них Gingerbread.

Из образца нативной активности:

Android SDK предоставляет вспомогательный класс NativeActivity, который позволяет писать полностью родная деятельность. С нативным действием можно написать полностью нативное приложение. NativeActivity управляет связью между платформой Android и вашим нативный код, поэтому вам не нужно создавать его подкласс или вызывать его методы. Все, что вам нужно сделать, это объявить Ваше приложение должно быть нативным в вашем файле AndroidManifest.xml и начать создавать нативное применение.

8 голосов
/ 20 февраля 2010

Это на самом деле не моя чашка чая, но есть кое-что под названием Android NDK (Native Development Kit), которое нужно использовать, если вы хотите написать свою программу на C. Хотя не уверен, что поддержка компилятора C ++.

Насколько я знаю, ваше приложение может быть почти на 100% нативным кодом, но имейте в виду, что, идя таким образом, вы, вероятно, испытаете трудности с поддержкой различных процессоров на аппаратном обеспечении Android. Если вам нужно загрузить исходный код так, чтобы он запускался из Java, это, вероятно, не очень большая проблема для вас.

Я нашел несколько разных руководств по поиску "Android NDK". Это очень минималистичный Hello World . Очевидно, вы хотите чего-то гораздо большего, чем библиотека, которая возвращает строку в java, но это хороший первый старт, и вам, вероятно, придется делать все описанные вещи. Выполните поиск, используя NDK и Android в качестве ключевых слов, и вы получите хороший выбор. Я не вижу смысла перечислять их здесь, поскольку такие списки имеют тенденцию быть устаревшими и сломанными в течение года или около того.

Полагаю, официальный сайт Android разработчика от Google останется на месте и будет в курсе новых выпусков платформы, на нем есть ссылка на текущий NDK.

2 голосов
/ 21 января 2011

С Gingerbread (Android 2.3) похоже, что вы можете собрать все свое приложение на C ++.

сравни: http://phandroid.com/2011/01/11/android-developers-blog-awesome-ndk-leads-to-awesome-apps/

» В последней версии NDK, r5, было сделано много значительных улучшений, чтобы совпасть с выпуском Gingerbread. Наиболее важным из них является возможность полностью кодировать собственное приложение для Android 2.3 на C ++. Это означает, что даже программистам и разработчикам, не обладающим знаниями Java, не придется реализовывать одну строку этого кода ... "

Не могу ручаться за правдивость этого блоггера, однако из того, что я прочитал, похоже, вы можете сделать это

1 голос
/ 20 февраля 2010

разговоров в этой теме могут вам помочь. http://groups.google.com/group/android-ndk/browse_thread/thread/50362904ae0574cf

сущность есть, Можно создавать приложения только для Native, и Android Market тоже не ограничивает вас. Но при ограниченной поддержке нативной разработки существует высокая вероятность использования некоторых нестандартных функций, которые могут выйти из строя в будущих версиях.

1 голос
/ 20 февраля 2010

Нет 100% нативного решения, но я думаю, что вы ищете Android NDK (Native Development Kit)

С их сайта «Обратите внимание, что NDK не позволяет вам разрабатывать собственные приложения. Основным временем выполнения Android остается виртуальная машина Dalvik».

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

Лично я никогда не использовал его для своих игр, но я уверен, что это поможет во многих вещах (например, возможность управлять своей собственной памятью и не иметь "лагов" для сборщика мусора)

0 голосов
/ 20 февраля 2010

http://developer.android.com/guide/basics/what-is-android.html

"Android SDK предоставляет инструменты и API, необходимые для начала разработки приложений на платформе Android с использованием языка программирования Java."

http://arstechnica.com/open-source/news/2009/06/android-goes-beyond-java-gains-native-cc-dev-kit.ars

В общем, нет. Существует некоторая ограниченная поддержка C ++ через JNI, но в основном она предназначена для дополнения кода Java, а не его замены. Для C ++ нет поддержки фреймворка / API (AFAIK), поэтому сделать это на самом деле невозможно.

...