任务':app:transformClassesWithMultidexlistForDebug'的执行失败。 > java.lang.UnsupportedOperationException(无错误消息)

时间:2018-07-01 03:16:23

标签: android react-native gradle compiler-errors

我不确定为什么会这样,但是我做了一些挖掘并试图找到其他解决方案。没有人解决特别重复的问题:

android {
compileSdkVersion 26
buildToolsVersion "23.0.3"

configurations {
    all*.exclude group: 'com.android.support', module: 'support-v4'
    all*.exclude group: 'com.android.support', module: 'support-annotations'
}

defaultConfig {
    applicationId "com.myapp"
    minSdkVersion 16
    targetSdkVersion 22
    versionCode 1
    versionName "1.0"
    multiDexEnabled true
    ndk {
        abiFilters "armeabi-v7a", "x86"
    }


}

    dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile project(':react-native-customized-image-picker')
    compile project(':react-native-vector-icons')
    compile project(':react-native-restart')
    compile project(':react-native-image-picker')
    compile project(':react-native-fast-image')
    compile project(':lottie-react-native')
    compile project(':react-native-fetch-blob')
    compile "com.android.support:multidex:1.0.1"
    compile "com.android.support:appcompat-v7:23.0.1"
    compile "com.facebook.fresco:fresco:1.0.1"
    compile "com.facebook.fresco:animated-gif:1.0.1"
    compile("com.facebook.react:react-native:0.54.0") { force = true }  // From node_modules

}

我删除了一些发现的重复compiles,但仍然没有帮助。我在跟踪中注意到此警告:

C:\ReactProjects\myapp\android\app\src\main\AndroidManifest.xml:11:5-29:19 Warning: application@android:theme was tagged at AndroidManifest.xml:11 to replace other declarations but no other declaration present C:\ReactProjects\myapp\android\app\src\main\AndroidManifest.xml:16:9-19:35 Warning: meta-data#com.bumptech.glide.integration.okhttp.OkHttpGlideModule was tagged at AndroidManifest.xml:16 to remove other declarations but no other declaration present

我不知道这是否会导致整个失败。最后这是我的清单:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.myapp"
xmlns:tools="http://schemas.android.com/tools">

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

<application
  android:name=".MainApplication"
  android:label="@string/app_name"
  android:icon="@mipmap/ic_launcher"
  android:allowBackup="true"
  tools:replace="android:theme"
  android:theme="@style/AppTheme">
  <activity
    android:name=".MainActivity"
    android:label="@string/app_name"
    android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
    android:windowSoftInputMode="adjustResize">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
  </activity>
  <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
</application>

我试图获得成功的构建时遇到的每个问题,我都看过SO或其他来源,但这很可取。我从来没有插入compile "com.android.support:multidex:1.0.1",并且在出现此问题之前就可以使用。仍然没有成功。

我记得做的最后一件事是在主目录中保存一个名为“ safecode.js”的文件,基本上它只包含我要保存的代码。

1 个答案:

答案 0 :(得分:1)

我遇到了完全相同的问题,并且我知道这可能会令人头疼。这是我的解决方案:

1)确保build.gradlesettings.gradle中没有重复的依赖项

2)你们中的大多数人可能不喜欢这个,但是我(想输入这个)升级了大多数东西,例如:

  • compileSdkVersion 26-build.gradle

  • buildToolsVersion“ 26.0.1”-build.gradle

  • distributionUrl = https://services.gradle.org/distributions/gradle-4.4-all.zip-settings.gradle
  • classpath'com.android.tools.build:gradle:3.1.0'-build.gradle not in app directory

注意:您的命令提示符的构建UI将会更改,看起来确实很庞大,但是很酷。您会习惯的。另外,您可能需要尽快更改compile中的build.gradle

以下是解决方案:in here

应该差不多了,但是我也会告诉您我所做的其他事情可能会影响您的BUILD FAILED

1)您可能需要Java8。JDK1.8。将此添加到build.gradle app directory

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

2)摆脱compile "com.android.support:multidex:1.0.1"

3)targetSdkVersion 22 update to 26

最后

4)在build.gradle not in app directory中,将maven { url 'https://maven.google.com' }放入两个存储库中。

注意:您可以使用google()代替它,但是它对我不起作用,所以我坚持使用maven { url 'https://maven.google.com' }

还请注意:您可能会收到消息,提示"WARNING: The specified Android SDK Build Tools version (26.0.1) is ignored, as it is below the minimum supported version (27.0.3) for Android Gradle Plugin 3.1.0."。嘿,26似乎是我们的魔法数字,如果有效,那就不要碰它。除非您绝对确定需要这样做。

据我所知,从构建过程中获得的警告不会影响您的BUILD SUCCESSBUILD FAILED

我希望这对所有人都有用!