Android NDK – пишите только на C / C ++

Есть ли способ написать целое приложение NDK с C / C ++ без Java-класса «стартер», например, в проекте hello-jni sample (HelloJni.java) – каким-то образом создайте HelloJni.c, который будет делать то же самое?

Solutions Collecting From Web of "Android NDK – пишите только на C / C ++"

Начиная с Android 2.3 (API уровня 9) есть NativeActivity, который позволяет закодировать Android-приложение только на C ++. В этом примере также показан пример пакета NDK.

Цитата из обзора NDK :

Когда разрабатывать собственный код

NDK не будет полезен большинству приложений. Как разработчик, вам нужно сбалансировать свои преимущества с его недостатками; В частности, использование собственного кода не приводит к автоматическому увеличению производительности , но всегда увеличивает сложность приложения. В общем, вы должны использовать только собственный код, если это важно для вашего приложения, а не только потому, что вы предпочитаете программировать на C / C ++.

Типичными хорошими кандидатами для NDK являются автономные, интенсивные работы с ЦП, которые не выделяют много памяти, таких как обработка сигналов, физическое моделирование и т. Д. Простое повторное кодирование метода для запуска на C обычно не приводит к большому увеличению производительности . Изучая вопрос о том, следует ли вам разрабатывать собственный код, подумайте о своих требованиях и посмотрите, предоставляют ли интерфейсные API-интерфейсы Android необходимые вам функции. Однако NDK может быть эффективным способом повторного использования большого корпуса существующего кода C / C ++ .

В базе Android предусмотрены два способа использования собственного кода:

  • Напишите свое приложение с помощью платформы Android и используйте JNI для доступа к API, предоставляемым Android NDK. Этот метод позволяет вам воспользоваться преимуществами платформы Android, но при необходимости позволяет писать собственный код. Вы можете устанавливать приложения, которые используют собственный код через JNI на устройствах под управлением Android 1.5 или новее.

  • Напишите собственное действие, которое позволяет реализовать обратные вызовы жизненного цикла в собственном коде. Android SDK предоставляет класс NativeActivity , который является классом удобства, который уведомляет ваш собственный код о любых обратных вызовах жизненного цикла активности (onCreate (), onPause (), onResume () и т. Д.). Вы можете реализовать обратные вызовы в своем собственном коде для обработки этих событий, когда они происходят. Приложения, которые используют собственные действия, должны запускаться на Android 2.3 (API Level 9) или более поздней версии.

Вы не можете обращаться к таким функциям, как Services и Content Providers изначально, поэтому, если вы хотите использовать их или любой другой API фреймворка, вы все равно можете написать код JNI для этого.

Я бы взял C / C ++ при портировании кода и, возможно, при разработке кросс-платформенных игр.

Поскольку все пользовательские интерфейсы, графики и другие интересные классы находятся на Java, вам придется использовать Java так или иначе .

Другим я подразумеваю взаимодействие со всеми Java-классами через JNI. Для этого есть библиотека: https://github.com/DmitrySkiba/itoa-jnipp . Проверьте пример HelloJNIpp – он показывает, что действительно можно писать приложения для Android полностью на C ++, единственный способ поймать, что вам нужно будет сначала реализовать все необходимые обертки (некоторые из них находятся в образцах / общей папке).

Однако я рекомендую использовать Java. Его простой и элегантный, имеет отличные библиотеки и инструменты.