Могу ли я создать довольно родное приложение на С++ с Android?

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

  • Написание приложения для Android Market, написанное полностью на С++ (фактически порт существующего продукта).
  • Используйте быстрое нажатие на пиксель экрана-буфера (или, скорее, используя OpenGL ES для этого).
  • Захватите пользовательский ввод и направьте его на код С++.

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

Ответ 1

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

Из примера нативной активности:

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

Ответ 2

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

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

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

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

Ответ 3

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

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

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

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

Ответ 4

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

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

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

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

Ответ 5

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

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

Ответ 6

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

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