我正在尝试生成发布版本但由于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.
答案 0 :(得分:42)
您收到此错误是因为您的库模块与应用程序模块具有相同的程序包名称。
解决方案是更改库模块的包名称。您可以按照此SO中的接受答案进行操作,该答案描述了如何在android studio中更改软件包名称。
答案 1 :(得分:4)
我解决了在应用模块的build.gradle
中启用multiDexEnabled的错误:
defaultConfig {
...
...
...
multiDexEnabled true
}
答案 2 :(得分:3)
只需在android studio中转到工具> Flutter>清理干净。 它将解决问题。 (如果您正在颤抖)
答案 3 :(得分:2)
错误:程序类型已存在:somemodule / BuildConfig
原因
就我而言,我有一个(隐藏的)循环依赖关系,而Android Studio找不到:
SELECT TIME_FORMAT(TIMEDIFF( '2018-06-18 08:20:00','2019-01-25 14:29:00'),'%H:%i:%s');
使用testutils/build.gradle
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类,请编辑清单文件,以在
<?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类,请编辑清单文件,以在
<?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/android
(example
是项目路径)./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
再试一次,它起作用了;