将 Eclipse ADT 项目迁移到 Android Studio:错误多个 dex 文件定义 Landroid/support/v4
Migrate Eclipse ADT project to Android Studio: Error Multiple dex files define Landroid/support/v4
我有一个用 Eclipse ADT 制作的旧 Android 项目,我正在尝试将它迁移到 Android Studio。
我遵循了几个指南和 howtos,也许我几乎已经迁移了它。
当我尝试构建它时出现以下错误:
错误:将字节码转换为 dex:Cause 时出错:com.android.dex.DexException:多个 dex 文件定义 Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
我已经阅读了很多解决方案,但 none 似乎适合我的问题。
但也许这个 answer 适合我的情况...
这是 Eclipse 项目资源管理器中的项目状态:
这里是 Android Studio 项目视图中迁移的项目:
也许问题出在每个 gradle 脚本的 dependencies
属性:
app-app:
dependencies {
compile project(':androidsupportv7appcompat')
compile project(':library')
compile files('libs/android-support-v4.jar')
}
androidsupportv7appcompat:
dependencies {
compile files('libs/android-support-v4.jar')
compile files('libs/android-support-v7-appcompat.jar')
}
googleplayservice_lib:
dependencies {
compile files('libs/google-play-services.jar')
}
库:(用于标记聚类的 Google 地图库)
dependencies {
compile project(':googleplayservices_lib')
compile files('libs/android-support-v4.jar')
}
您知道这些依赖项配置是否有问题吗?
否则,可能是什么原因?
在我的一个旧项目中,我不得不将它放在应用程序部分下的 gradle 文件中
multiDexEnabled 在默认配置中为真,然后在下面添加 dex 选项...也许这会有所帮助。
defaultConfig {
applicationId "xxx"
minSdkVersion 14
targetSdkVersion 24
versionCode 4
versionName "2.2"
multiDexEnabled true
}
dexOptions {
javaMaxHeapSize "2g"
}
首先,您应该从 Android Studio 项目中删除支持库模块。而是向您的应用 gradle 构建文件添加依赖项。如果您的库使用支持库中的组件,其构建文件也应该具有适当的依赖项。
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:support-v4:25.3.1'
}
请务必从您的 lib 文件夹中删除支持库 JAR 文件。
同样,您应该为 Google Play 服务添加依赖项。
使用 Gradle 进行依赖管理是迁移到 Android Studio 的众多优势之一。如果库模块不是你写的,你也应该找到正确的 take 依赖添加到你的构建文件中,而不是你现在有的模块。
我有一个用 Eclipse ADT 制作的旧 Android 项目,我正在尝试将它迁移到 Android Studio。 我遵循了几个指南和 howtos,也许我几乎已经迁移了它。
当我尝试构建它时出现以下错误:
错误:将字节码转换为 dex:Cause 时出错:com.android.dex.DexException:多个 dex 文件定义 Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
我已经阅读了很多解决方案,但 none 似乎适合我的问题。 但也许这个 answer 适合我的情况...
这是 Eclipse 项目资源管理器中的项目状态:
这里是 Android Studio 项目视图中迁移的项目:
也许问题出在每个 gradle 脚本的 dependencies
属性:
app-app:
dependencies {
compile project(':androidsupportv7appcompat')
compile project(':library')
compile files('libs/android-support-v4.jar')
}
androidsupportv7appcompat:
dependencies {
compile files('libs/android-support-v4.jar')
compile files('libs/android-support-v7-appcompat.jar')
}
googleplayservice_lib:
dependencies {
compile files('libs/google-play-services.jar')
}
库:(用于标记聚类的 Google 地图库)
dependencies {
compile project(':googleplayservices_lib')
compile files('libs/android-support-v4.jar')
}
您知道这些依赖项配置是否有问题吗? 否则,可能是什么原因?
在我的一个旧项目中,我不得不将它放在应用程序部分下的 gradle 文件中
multiDexEnabled 在默认配置中为真,然后在下面添加 dex 选项...也许这会有所帮助。
defaultConfig {
applicationId "xxx"
minSdkVersion 14
targetSdkVersion 24
versionCode 4
versionName "2.2"
multiDexEnabled true
}
dexOptions {
javaMaxHeapSize "2g"
}
首先,您应该从 Android Studio 项目中删除支持库模块。而是向您的应用 gradle 构建文件添加依赖项。如果您的库使用支持库中的组件,其构建文件也应该具有适当的依赖项。
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:support-v4:25.3.1'
}
请务必从您的 lib 文件夹中删除支持库 JAR 文件。
同样,您应该为 Google Play 服务添加依赖项。
使用 Gradle 进行依赖管理是迁移到 Android Studio 的众多优势之一。如果库模块不是你写的,你也应该找到正确的 take 依赖添加到你的构建文件中,而不是你现在有的模块。