Ошибка округления с плавающей точкой. Из Что каждый компьютерный ученый должен знать о арифметике с плавающей точкой :
Сжатие бесконечного числа действительных чисел в конечное число бит требует приблизительного представления. Несмотря на то, что в большинстве программ имеется бесконечно много целых чисел, результат целочисленных вычислений может быть сохранен в 32 битах. В отличие от этого, учитывая любое фиксированное количество бит, большинство вычислений с реальными числами будут давать количества, которые не могут быть точно представлены с использованием этого количества бит. Поэтому результат вычисления с плавающей запятой часто должен быть округлен, чтобы соответствовать его конечному представлению. Эта ошибка округления является характерной особенностью вычисления с плавающей запятой.
blockquote>
просто используйте java 1.8 с Android Studio 3.0+ и задайте следующие работы для меня: кажется, нужны последние инструменты построения
classpath 'com.android.tools.build:gradle:3.0.0'
и
android {
compileSdkVersion 26
buildToolsVersion "26.0.1"
defaultConfig {
...
//jackOptions { // DEPRECATED
//enabled true
//}
}
dexOptions {
incremental true
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
Я сталкиваюсь с той же проблемой с библиотекой API Reactive Location API для Android и RxJava 2 . Простое обновление build.gradle до 3.0.1 и сокращение библиотеки API-интерфейсов Reactive Location для Android и RxJava 2 версия библиотеки от 1.0.4 до 1.0.3. В моем случае она отлично работает.
Возможно, некоторые из ваших зависимостей были скомпилированы с Java 8, а не для Android. Попробуйте переключить эти зависимости на более раннюю версию. Я точно не знаю, какую библиотеку вы должны понизить, потому что вы не привязали список зависимостей вашего основного модуля.
Например: у меня была такая же проблема. После нескольких часов поиска я обнаружил, что для библиотеки org.codehaus.httpcache4j.uribuilder:2.0.0
требуется Java 8, начиная с github . Итак, когда я переключился на 1.1.0
, проект был успешно создан и развернут.
Я смог решить эту проблему, добавив следующие строки:
jackOptions {
enabled true
}
- defaultConfig
в файле build.gradle
.
Вы можете следовать рекомендациям для Java 8 по ссылке - https://developer.android.com/guide/platform/j8-jack.html
Если возможно для вас:
Это должно позаботиться об этой проблеме.
Ссылка: https://developer.android.com/studio/write/java8-support
Это случилось со мной с Android Studio 2.3.3. Решение, которое я нашел, это удалить папку сборки, а затем перестроить проект. Это было так просто.
Если у вас есть модуль с java-библиотекой, не зависящей от Android, это должно работать: apply plugin:'java'
Поместите его в начало файла build.gradle, а затем перестройте.
apply plugin: 'java'
apply plugin: 'jacoco'
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.11'
sourceCompatibility = 1.7
targetCompatibility = 1.7
}
Я также столкнулся с такой же ошибкой в Android 2.3.3
, добавив несколько JAR-зависимостей. Проблема была связана с депенцией io.netty:netty-all:4.1.16.Final
. Эта версия 4.1.16 JAR была скомпилирована с Java 1.8, а все остальные были сгенерированы с помощью Java 1.7.
Это разрешилось после включения более старой версии netty
(которая была сгенерирована с помощью Java 1.7) в моей build.gradle
.
compile 'io.netty:netty-all:4.1.5.Final'
У меня была та же проблема с зависимостью greendao-generator. Я ошибочно добавил, что зависимость от моего build.gradle (compile 'org.greenrobot:greendao-generator:3.1.0'
) и AndroidStudio показала мне то же сообщение об ошибке.
Вероятно, это потому, что этот модуль был скомпилирован с Java 8.
Поэтому я удалил эту зависимость из моего build.gradle и все скомпилировано счастливо:)
Отключение Instant Run в Android Studio 2.2 с плагином Gradle 2.2.2 исправлено для меня. Переход на более раннюю версию плагина Gradle (например, 2.2.0) также исправил его, но это менее желательно imho.
Если вы используете плагин org.jetbrains:annotation:15
и retrolambda, то удалите строку compile org.jetbrains:annotations:15.0
с вашего build.gradle
, и ошибка исчезнет. Это работает для меня.
Я столкнулся с этой проблемой при попытке импортировать jar, скомпилированный jdk 1.8 в Android Studio 3.0. Я пробовал все вышеперечисленное решение, но никто не работает. поэтому я попросил разработчика этой банки перекомпилировать его с помощью jdk 1.7, а затем он хорошо работает, а не снова сталкивался с этой проблемой.
Попробуйте добавить в main build.gradle в разделе allprojects
tasks.withType(JavaCompile) {
sourceCompatibility = "1.7"
targetCompatibility = "1.7"
}
или добавить это в зависимостях
sourceCompatibility = 1.7
targetCompatibility = 1.7
в все модули вручную
Я решил эту проблему ниже:
apply plugin: 'java'
sourceCompatibility = 1.7
targetCompatibility = 1.7
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}