程序类型已存在:BuildConfig

时间:2018-06-06 10:01:02

标签: android android-multidex

我正在尝试生成发布版本但由于mutidex问题而无法使用我的项目已启用所有multidex并添加了依赖项

我收到的错误是:

rules()

和aslo:

Execution failed for task ':app:transformClassesWithMultidexlistForRelease

Caused by: com.android.build.api.transform.TransformException: Error while generating the main dex list.

15 个答案:

答案 0 :(得分:42)

您收到此错误是因为您的库模块与应用程序模块具有相同的程序包名称。

解决方案是更改库模块的包名称。您可以按照此SO中的接受答案进行操作,该答案描述了如何在android studio中更改软件包名称。

答案 1 :(得分:4)

我解决了在应用模块的build.gradle中启用multiDexEnabled的错误:

defaultConfig { 
    ...
    ...
    ...

    multiDexEnabled true
}

答案 2 :(得分:3)

只需在android studio中转到工具> Flutter>清理干净。 它将解决问题。 (如果您正在颤抖)

答案 3 :(得分:2)

错误:程序类型已存在:somemodule / BuildConfig

原因

就我而言,我有一个(隐藏的)循环依赖关系,而Android Studio找不到:

  1. SELECT TIME_FORMAT(TIMEDIFF( '2018-06-18 08:20:00','2019-01-25 14:29:00'),'%H:%i:%s'); 使用testutils/build.gradle

  2. implementation project(':somemodule')具有`androidTestImplementation project(“:testutils”)

解决方案

  • 就我而言,不需要第二个依赖项,因此我将其删除了

答案 4 :(得分:2)

在android studio中进行android x升级后,我遇到了这个问题。为了解决这个问题,我转到File-> Open并在我当前的flutter项目中打开了android文件夹。然后,我可以按照@Seymour Mammadli的建议去Build-> Clean Project。

希望这对遇到相同问题的人有所帮助。

答案 5 :(得分:2)

我遇到了同样的错误。除了这种类型的应用程序之外,我们不像其他应用程序那样通用。在我的应用程序开发中,我使用的是以下提到的依赖项

  youtube_player_flutter: ^6.1.0+7
  webview_flutter: ^0.3.20+2

由于youtube_player_flutter在内部使用webview_flutter作为依赖项之一。我删除了依赖项webview_flutter,它起作用了。

答案 6 :(得分:1)

我在构建 Flutter 应用程序时遇到问题,并按照官方指南解决了该问题: https://developer.android.com/studio/build/multidex

您只需要:

 0。( Android:转到“重构”>迁移到AndroidX
 (如果您在 Flutter 项目中,要迁移该模块,则必须转到“工具”>“ Flutter”>“在Android Studio中打开以进行编辑

 1.(两者)修改模块级别的build.gradle文件以启用multidex,并将multidex库添加为依赖项,如下所示:

android {
    defaultConfig {
        ...
        minSdkVersion 15 
        targetSdkVersion 28
        multiDexEnabled true
    }
    ...
}

dependencies {
  implementation 'com.android.support:multidex:1.0.3'
}

2。 ( non-Flutter )如果不覆盖Application类,请编辑清单文件,以在标记中设置 android:name ,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapp">
    <application
            android:name="android.support.multidex.MultiDexApplication" >
        ...
    </application>
</manifest>

2。 ( Flutter )如果不覆盖Application类,请编辑清单文件,以在标记中设置 android:name ,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapp">
    <application
            android:name=".App" >
        ...
    </application>
</manifest>

3。( Flutter )在project / android / app / src / main / [java或kotlin文件夹] / [your / package / appName]下创建自定义类
kotlin版本: App.kt

package your.package.appName

import io.flutter.app.FlutterApplication
import android.content.Context
import androidx.multidex.MultiDex

class App : FlutterApplication() {

    override fun attachBaseContext(base: Context) {
        super.attachBaseContext(base)
        MultiDex.install(this)
    }

}

java版本: App.java

package your.package.appName;

import io.flutter.app.FlutterApplication;
import android.content.Context;
import androidx.multidex.MultiDex;

public class App extends FlutterApplication {

    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
    }

}

4。 (两者)庆祝是否成功! :D

有关更多信息,请查看官方指南;)
https://developer.android.com/studio/build/multidex

答案 7 :(得分:1)

转到android文件夹并触发以下命令

./ gradlew clean

答案 8 :(得分:0)

您可以看到此回复 https://stackoverflow.com/a/26531074/4097495 就我而言,用这个建议解决。 我的应用程序和模块的包名称相同

答案 9 :(得分:0)

就我而言,这是当我尝试在新安装的Android Studio上运行旧项目时发生的 通过运行Build->Clean Project

解决问题

答案 10 :(得分:0)

就我而言(开发插件),执行以下步骤有效:

  • cd example/androidexample是项目路径)
  • ./gradlew app:clean
  • cd ..; flutter clean; flutter packages get

答案 11 :(得分:0)

如果您的buildDir对于项目中的两个或多个模块相同,也会发生此问题。

答案 12 :(得分:0)

尝试在您的库模块中添加packageBuildConfig(false):

android{
  ...
  packageBuildConfig(false)
}

答案 13 :(得分:0)

更改包裹名称,例如:

您当前的包裹名称:

com.example.appname

收件人:

com.example.appname.app

答案 14 :(得分:0)

我在向现有项目添加flutter时遇到错误,该消息表明是AndroidX导致了问题。

当我在flutter_module/pubspec.yaml的bootom修改AndroidX时

AndroidX:false

再试一次,它起作用了;