Android NDK неоднозначность, компилируется в байт или машинный код? - PullRequest
2 голосов
/ 12 августа 2011

Просто просматривая документы NDK, http://developer.android.com/sdk/ndk/index.html, первый пункт заявляет

Если вы пишете собственный код, ваши приложения по-прежнему упаковываются в файл .apk, и они по-прежнему выполняются внутривиртуальная машина на устройстве.

, что противоречит первому пункту для Revision 6,

Добавляет поддержку для x86 ABI, который позволяет генерировать машинный код, который выполняетсяна совместимых устройствах Android на базе x86.

Теперь мой родной компилируется в машинный код или байт-код для виртуальной машины?

- EDIT ---

Возможно, я прочитал это неправильно, приложение, конечно, работает на виртуальной машине, все еще вызывая явный, собственный, машинный (машинный) код.Звук примерно так?

1 Ответ

2 голосов
/ 12 августа 2011

Ваше редактирование верное.Вам все еще нужно создать стандартные действия в java и использовать jni для вызова скомпилированного вами нативного кода, во многом как вызов некоторых API, которые не запускаются в dalvikVM (например, sqlite).Этот нативный код, конечно, зависит от архитектуры.

AFAIK, он меняется с нативной активностью (android 2.3+), но так как только небольшой процент телефонов работает под управлением 2.3+, я не исследовал это много.

Редактировать: Подумайте об этом таким образом, с помощью NDK, вашей библиотеки, которую вы затем можете использовать в своем приложении, которое создаете с помощью SDK.Тем не менее, имея небольшой опыт работы, вы можете поместить большинство своих приложений в эту библиотеку, сделав ваше приложение просто связующим кодом вокруг библиотеки.

В качестве дополнительного примечания вы можете использовать NDK для полнойнативные программы для android, как вы можете с любым кросс-компилятором (основной метод и все).Однако, если вы не планируете выпускать телефон Android в будущем или нацеливаться только на пользователей с root-правами, вы не будете этого делать, потому что обычные пользователи не могут выполнить нативную программу, не установив ее в качестве приложения, для довольно очевидной (безопасности).) причины.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...