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

3

我不确定为什么会发生这种情况,但我进行了一些调查并尝试寻找其他解决方案。但都没有成功,尤其是重复的问题:

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

}

我删除了一些重复的编译,但没有帮助。在跟踪中,我注意到这个警告:

C:\ReactProjects\myapp\android\app\src\main\AndroidManifest.xml:11:5-29:19 警告: application@android:theme 标记为 AndroidManifest.xml:11 的替换其他声明,但没有其他声明 C:\ReactProjects\myapp\android\app\src\main\AndroidManifest.xml:16:9-19:35 警告: meta-data#com.bumptech.glide.integration.okhttp.OkHttpGlideModule 标记为 AndroidManifest.xml:16 的移除其他声明,但没有其他声明

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

<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'的文件,基本上它只包含我想保存的代码。


请访问以下链接,希望您能找到答案:https://dev59.com/r18e5IYBdhLWcg3wNIJp - Shahzad Afridi
尝试将以下代码行添加到清单文件的应用程序标签中:tools:replace="icon, label" ---------例如:<application tools:replace="icon,label"。 - Shahzad Afridi
@Opriday 我仍然遇到错误。我觉得由于清单只有警告,它不会影响构建过程,但我认为它与build.gradle有关。 - Laney Williams
1个回答

2

我曾经遇到过完全相同的问题,我知道这会带来多大的烦恼。这是我的解决方案:

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将发生变化,看起来可能有点压抑,但非常酷。你会习惯的。同时,你可能需要很快更改build.gradle中的那些compile

这里是解决方案:Android Studio build.gradle warning message

这基本上就是解决方案,但我还会告诉你其他可能影响BUILD FAILED的事情:

1)你可能需要Java 8。JDK 1.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 升级到 26

最后,

4) 在 build.gradle 文件中而不是在应用程序目录中,将 maven { url 'https://maven.google.com' } 添加到两个 repos 中。

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

还要注意的是:你可能会收到以下消息:“警告:指定的 Android SDK Build Tools 版本(26.0.1)被忽略,因为它低于 Android Gradle Plugin 3.1.0 的最低支持版本(27.0.3)。如果它能工作,请不要更改。除非你绝对确定需要这样做。

据我所知和经验,构建过程中的警告不会影响你的 BUILD SUCCESSBUILD FAILED

希望这对大家有用!


是的!绿色构建成功了!非常感谢。你的第二步对我有效。@AndrewI。 - Laney Williams
没问题。很高兴能帮忙。 - Andrew I.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接