Добавление «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 

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

Я получал ту же ошибку. В моем проекте у нас было единое тестовое приложение в одном проекте, в котором был завершен другой проект, содержащий сами тесты модулей. Оба проекта содержали ссылки на мой 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