2015-04-06 2 views
1

Код уже отлажен на планшетах ARM, я использовал планшет Android с процессором Intel Atom для тестирования собственного x86-кода моего приложения (сгенерированного NDK) ...Atom/x86 против ARM Выполнение кода ЦПУ на устройствах Android

Как и ожидалось, 1) Утилита CPU-Z дает «Архитектура x86» и «Процессор Intel Atom Z3735G» 2) «adb shell cat/proc/cpuinfo» дает «название модели: Intel (R) Atom (TM) CPU Z3735G @ 1.33GHz "

Когда приложение запускается, неожиданным, 1) Log.d (TAG, "CPU:" + android.os.Build.CPU_ABI) дает:" CPU: armeabi-v7a " 2) Некоторые нативные e .so библиотеки моего приложения существуют только в коде ARM, и они работают здесь правильно.

Я сомневаюсь, что x86 .so Lib используется даже при наличии

поведение точно так же, как процессор ARM. У вас есть объяснение? Переведен код для x86? Если код преобразуется, он очень хорошо работает!

+0

Мне интересно, компилятор комментирует строки в "Log.d (TAG," CPU: "+ android.os.Build.CPU_ABI)" во время компиляции, поэтому вы видите, что видите. – auselen

ответ

2

Устройства на базе Android на базе x86, включая уровень эмуляции ARM, который, как я полагаю, используется при выполнении вашего приложения. Когда использование эмуляции не всегда интуитивно понятно.

Вы должны проверить, есть ли у вас номер файлов в libs/x86 и libs/armeabi и libs/armeabi-v7a внутри файла apk. Итак, если у вас есть два родных libs для руки, у вас также должно быть два родных libs для x86.

Если число соответствует и оно по-прежнему не работает, проверьте, совпадают ли имена родных библиотек для ARM и x86.

+0

Вы правы. Кажется, что типы Libs оцениваются для выбора ABI, x86 или armeabi-v7a. Я заметил поведение, описанное здесь в ответе: [link] (http://stackoverflow.com/questions/24041547/how-can-i-detect-when-android-x86-is-emulating-arm?rq=1) \t «Если приложение содержит установочные файлы x86, которые устанавливаются (или вообще не содержит libs) на устройстве x86, Build.CPU_ABI должен возвращать x86, иначе что-то не так с конструкцией, которая находится на устройстве. ], фактически установленные libs - это руки, потому что он считает, что некоторые библиотеки x86 отсутствуют, поэтому он возвращается в руки libs. » – Dudule

+0

Вы проверили имя и количество библиотек для разных ABI? Они одинаковы? –

+0

У меня есть много только arm libs (openCV). На планшете написано: «Я - armv7». если я удалю эти библиотеки. (один multi-cpu arm-armv7-x86-mips lib остается), планшет говорит «Я x86». (= Я не буду встречать код руки на моем пути ...) – Dudule

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