Intereting Posts
Как создать особую частоту звука? Android webview имеет белую границу вокруг него и как я могу избавиться от него? Google Play показывает неявное разрешение READ_EXTERNAL_STORAGE TargetSdkVersion не похож на манифест андроида как выбранный при создании проекта NullPointerException при проверке электронной почты Лучший способ программирования кнопок / изображений Подписание подписи с помощью packageRelease «указано для свойства« signedConfig.storeFile »не существует» Android-эмулятор зависает Проверьте, присутствует ли SDCard, логическое значение всегда верно Linkedin Android SDK – невозможно подключиться к API (INVALID_REQUEST) Являются ли новые потоки автоматически назначены для другого процессора Core в Java? Удаление значка приложения и текста из ActionBar Как вы отправляете уведомление Firebase обо всем устройствам через CURL? Сессия: была сделана попытка запросить новые разрешения для сеанса с ожидающим запрос Загрузка нескольких apk для разных экранов

Добавление «emma» в триггеры сборки ant Antoid «исключение локального переменного типа» исключение

Я пытаюсь запустить Emma на тестах для Android-проекта, который представляет собой комбинацию Java и кода C / JNI. emma и тесты работают нормально, но всякий раз, когда я добавляю emma , я получаю загадочное исключение. Я использую Android SDK v20.1 и NDK r8b.

Проект здесь, его проект библиотеки Android: https://github.com/guardianproject/IOCipher, и тесты здесь: https://github.com/guardianproject/IOCipherTests

Файл build.xml создается с использованием android update test-project . Запуск ant clean debug install test ant clean emma debug install test каждый раз, когда ant clean emma debug install test запускает исключение:

Вот исключение:

 -dex: [dex] Converting compiled files and external libraries into /var/lib/jenkins/workspace/IOCipherTests/IOCipherTests/bin/classes.dex... [dx] [dx] EXCEPTION FROM SIMULATION: [dx] local variable type mismatch: attempt to set or access a value of type int using a local variable of type info.guardianproject.libcore.io.ErrnoException. This is symptomatic of .class transformation tools that ignore local variable information. [dx] [dx] ...at bytecode offset 0000002e [dx] locals[0000]: Linfo/guardianproject/iocipher/File; [dx] locals[0001]: Linfo/guardianproject/iocipher/FileDescriptor; [dx] locals[0002]: <invalid> [dx] locals[0003]: <invalid> [dx] locals[0004]: <invalid> [dx] locals[0005]: [Z [dx] stack[top0]: int{0x00000001 / 1} [dx] ...while working on block 002c [dx] ...while working on method createNewFile:()Z [dx] ...while processing createNewFile ()Z [dx] ...while processing info/guardianproject/iocipher/File.class [dx] [dx] 1 error; aborting BUILD FAILED /opt/android-sdk/tools/ant/build.xml:850: The following error occurred while executing this line: /opt/android-sdk/tools/ant/build.xml:852: The following error occurred while executing this line: /opt/android-sdk/tools/ant/build.xml:864: The following error occurred while executing this line: /opt/android-sdk/tools/ant/build.xml:266: null returned: 1 

Я получал ту же ошибку. В моем проекте у нас было единое тестовое приложение в одном проекте, в котором был завершен другой проект, содержащий сами тесты модулей. Оба проекта содержали ссылки на мой SDK, который, как предположил Чайтанья, заставлял Эмма дважды вводить код SDK. Удалив ссылку на SDK в модульном тестовом проекте, я смог разрешить ошибку.

Я создаю проект APK Android из командной строки (без муравья, но с некоторой помощью CMake. Думаю, здесь это не важно), и я встретил ту же ошибку, мне помогли две вещи:

  1. Отсюда я получил информацию о том, что «Если у вас есть файлы классов инструментов, в которых у них есть локальная информация об отладке, emma неправильно поддерживает таблицу локальных переменных. Это приведет к ошибке при попытке конвертировать файлы классов для Android. Обходной путь Для этого необходимо скомпилировать классы java только с информацией об отладке строки и источника, а не локальной информацией ». , Поэтому я добавляю флаг в java-компилятор -g:{lines,source}

  2. Я также исключил классы Эммы из инструментария. Моя команда инструментария – java -cp emma/emma_device.jar emma instr -ix -*.test.*,-com.google.android.*,-com.vladium.* -m overwrite -cp ${CMAKE_JAVA_TARGET_OUTPUT_DIR} . Обратите внимание на параметр -ix -com.vladium.* , Это исключает классы Emma