2010-11-07 2 views
7

Мне нужны некоторые операции, которые должны выполняться на больших длинных [] s, чтобы быть очень быстрыми. Единственный вариант, который я вижу, - использовать Android NDK. Может ли кто-нибудь дать резюме о том, что с помощью NDK делает с моим приложением, с точки зрения того, какие устройства могут использовать приложение и какие последствия для поддержания моего приложения?Каковы последствия переносимости использования NDK?

Я видел, что вам нужно указать, какую архитектуру вы хотите скомпилировать для своего C-кода, например ARM и Intel. Что произойдет, когда появятся новые архитектуры для Android? Должен ли я обновлять приложение каждый раз, когда появляется новая архитектура?

+0

Да, для каждой архитектуры вам понадобится исполняемый файл.Возможно, вы можете просто включить их все и загрузить те, которые вам нужны, но я никогда не использовал NDK. Что именно вы делаете на долгах? Вы уверены, что это узкое место в вашем коде? Вы реализовали его и профилировали? – Falmarri

+0

Длительная операция включает в себя маскировку первых 8 бит, выполнение нескольких дополнений и умножений, возврат битов и последующее выполнение этого для оставшихся битов. Это мучительно медленно в Java (e..g 1s для выполнения, когда я хочу около 0,1 с) и кажется идеальным кандидатом для NDK. Код прост, хотя и будет работать на всех арках. – RichardNewton

ответ

7

Может кто-нибудь дать сводку о том, что с помощью NDK делает мое приложение в терминах устройства, которые могут использовать приложение

только устройство, работающее на процессоре, для которого у вас есть NDK .so будет способный запускать ваше приложение.

и какие последствия для поддержания моего приложения?

Для тестирования на нескольких архитектурах процессоров может потребоваться оборудование для каждой архитектуры. Я говорю «может», потому что ...

Что происходит, когда появляются новые архитектуры для Android?

... мы действительно понятия не имеем. Помимо добавления поддержки ARM7, NDK не изменил своих целей.

Прямо сейчас, есть два основных не-ARM платформы для Android, что я могу думать:

  • Intel Atom, которые используются устройства Google TV. На момент написания этой статьи NDK этого не поддерживает. Однако вы также не можете отправлять приложения для Google TV. Таким образом, возможно, что NDK будет обновляться к моменту, когда мы сможем писать приложения Google TV.
  • MIPS. На момент написания этой статьи NDK этого не поддерживает. Я понятия не имею, какие планы могут быть в этой области.

Возможно, эмуляторы будут эмулировать эти процессоры. В конце концов, существующий эмулятор Android имитирует ARM5. Однако, если и до тех пор, пока это не произойдет, вам понадобится тестовое оборудование для каждой архитектуры, которую вы собираетесь поддерживать.

Должен ли я обновлять свое приложение каждый раз, когда появляется новая архитектура?

Только если вы хотите поддержать новую архитектуру. Пока не будет критической массы устройств, которые могут получить доступ к вашему приложению, любая новая архитектура не будет очень важна. «Критическая масса» может быть связана с продажами общих устройств, или это может быть связано с тем, что вы совершаете сделку с OEM, чтобы ваше приложение было подключено на чей-то прибор.

Код прост, хотя и будет работать на всех арках.

Следите за своим концом.

+0

Awesome, спасибо за сообщение. Последнее, если кто-то говорит, имеет новый телефон на базе Intel Atom, и мое приложение не имеет .so для этого процессора, будет ли мое приложение скрыто от них на рынке? – RichardNewton

+1

@ RichardNewton: Надеюсь. Полагаю, вы могли бы создать приложение только для ARM7 и посмотреть, видят ли устройства ARM5 на рынке, чтобы проверить теорию до появления совместимых с Atom продуктов. Однако, поскольку в настоящее время поддерживается так мало технологий, на данный момент все немного туманно. – CommonsWare

+0

Я понимаю, что у Google будет стратегия для всего этого. Я не мог найти никаких статистических данных, но NDK используется разработчиками, и Google поощряет его использование, поэтому, похоже, не представляется возможным создать приложение, использующее NDK, насколько я могу судить. – RichardNewton

Смежные вопросы