无法在android studio中生成APK

时间:2018-01-17 00:39:40

标签: android android-studio apk

我有一个Android应用程序准备发布。我试图在Android工作室的“生成apk'”部分中生成APK。我使用了一些外部库。但是,我得到与字节码相关的错误到dex。我已经在寻找解决方案,但没有成功。

这是错误:

build.gradle

这是apply plugin: 'com.android.application' android { compileSdkVersion 25 buildToolsVersion '26.0.2' defaultConfig { applicationId "com.NanoStima.AndroidClient" minSdkVersion 19 targetSdkVersion 22 multiDexEnabled true versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } repositories { mavenCentral() } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:25.1.1' testCompile 'junit:junit:4.12' compile files('libs/activation.jar') compile files('libs/additionnal.jar') compile files('libs/mail.jar') } dependencies { compile 'com.google.android.gms:play-services:9.2.0' compile 'com.google.android.gms:play-services-location:9.2.0' compile 'com.facebook.android:facebook-android-sdk:4.26.0' compile 'com.android.support:multidex:1.0.1' } dependencies { // compile 'com.github.scribejava:scribejava-apis:3.2.0' compile 'com.loopj.android:android-async-http:1.4.4' compile group: 'org.mindrot', name: 'jbcrypt', version: '0.3m' } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:25.0.1' compile 'com.android.support:design:25.0.1' }

{{1}}

有人可以帮忙吗?

警告新:我正在测试你的一些sugestions并且该项目不再运行了。我为初始gradle做了一次重新滚动,但仍然有这个错误: 错误:任务':app:transformDexArchiveWithExternalLibsDexMergerForDebug'执行失败。

  

java.lang.RuntimeException:com.android.builder.dexing.DexArchiveMergerException:无法合并dex

我已经清理了项目,删除.gradle,重启android studio。只是不再运行:\

3 个答案:

答案 0 :(得分:0)

我注意到你在依赖项中使用了完整的google play服务库,我怀疑它是dex问题的字节码的根本原因。您应该尝试仅使用您需要的特定库,而不是使用整个库。 e.g。

而不是:

compile 'com.google.android.gms:play-services:10.2.0

你可以使用:

compile 'com.google.android.gms:play-services-maps:10.2.0'
compile 'com.google.android.gms:play-services-location:10.2.0'

或考虑使用multi dex。参考:Android multi-dex

答案 1 :(得分:0)

如果您阅读错误消息,您将看到问题是由以下原因引起的:

编译' com.loopj.android:android-async-http:1.4.4'

在build.gradle(项目级别)中添加:

allprojects {
    repositories {
        jcenter()
        google()
        maven {
            url 'https://maven.google.com/'
        }
    }
}

你的问题可能会得到解决(在这种情况下是jcenter())。

注意:

google()或maven {url' https://maven.google.com'}取决于您的Gradle版本。如果您有Gradle版本4.1,则使用google(),在另一种情况下使用maven部分。

您可以在Remote repositories

找到更多解释

答案 2 :(得分:0)

我最终到达那里。我将gradle从上一个版本转换为:

classpath 'com.android.tools.build:gradle:2.3.3'