Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 无法签署发布APK-:应用:shrinkReleaseMultiDexComponents失败_Android_Gradle_Apk_Proguard - Fatal编程技术网

Android 无法签署发布APK-:应用:shrinkReleaseMultiDexComponents失败

Android 无法签署发布APK-:应用:shrinkReleaseMultiDexComponents失败,android,gradle,apk,proguard,Android,Gradle,Apk,Proguard,我正在尝试生成一个签名的apk,日志不断向我显示以下错误: :app:compileReleaseJavaWithJavac Note: Some input files use or override a deprecated API. Note: Recompile with -Xlint:deprecation for details. :app:compileReleaseNdk UP-TO-DATE :app:compileReleaseSources :app:collectRele

我正在尝试生成一个签名的apk,日志不断向我显示以下错误:

:app:compileReleaseJavaWithJavac
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
:app:compileReleaseNdk UP-TO-DATE
:app:compileReleaseSources
:app:collectReleaseMultiDexComponents
:app:proguardRelease
Warning:com.google.android.gms.internal.zzac: can't find referenced class android.net.http.AndroidHttpClient
Warning:com.google.android.gms.internal.zzw: can't find referenced method 'void addHeader(java.lang.String,java.lang.String)' in program class com.google.android.gms.internal.zzw$zza
Warning:com.google.android.gms.internal.zzw$zza: can't find referenced method 'void setURI(java.net.URI)' in program class com.google.android.gms.internal.zzw$zza
Warning:com.ironsource.mobilcore.j: can't find referenced method 'void setLatestEventInfo(android.content.Context,java.lang.CharSequence,java.lang.CharSequence,android.app.PendingIntent)' in library class android.app.Notification
Warning:com.mopub.volley.toolbox.HttpClientStack: can't find referenced method 'void addHeader(java.lang.String,java.lang.String)' in program class com.mopub.volley.toolbox.HttpClientStack$HttpPatch
Warning:com.mopub.volley.toolbox.HttpClientStack$HttpPatch: can't find referenced method 'void setURI(java.net.URI)' in program class com.mopub.volley.toolbox.HttpClientStack$HttpPatch
Warning:com.mopub.volley.toolbox.Volley: can't find referenced class android.net.http.AndroidHttpClient
Warning:there were 4 unresolved references to classes or interfaces.
         You may need to add missing library jars or update their versions.
         If your code works fine without the missing classes, you can suppress
         the warnings with '-dontwarn' options.
         (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedclass)
Warning:there were 4 unresolved references to program class members.
         Your input classes appear to be inconsistent.
         You may need to recompile the code.
         (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedprogramclassmember)
Warning:there were 1 unresolved references to library class members.
         You probably need to update the library versions.
         (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedlibraryclassmember)
Exception while processing task 
java.io.IOException: Please correct the above warnings first.
    at proguard.Initializer.execute(Initializer.java:473)
    at proguard.ProGuard.initialize(ProGuard.java:233)
    at proguard.ProGuard.execute(ProGuard.java:98)
    at proguard.gradle.ProGuardTask.proguard(ProGuardTask.java:1074)
    at com.android.build.gradle.tasks.AndroidProGuardTask.doMinification(AndroidProGuardTask.java:139)
    at com.android.build.gradle.tasks.AndroidProGuardTask$1.run(AndroidProGuardTask.java:115)
    at com.android.builder.tasks.Job.runTask(Job.java:48)
    at com.android.build.gradle.tasks.SimpleWorkQueue$EmptyThreadContext.runTask(SimpleWorkQueue.java:41)
    at com.android.builder.tasks.WorkQueue.run(WorkQueue.java:227)
    at java.lang.Thread.run(Thread.java:745)
:app:shrinkReleaseMultiDexComponents FAILED
Error:Execution failed for task ':app:shrinkReleaseMultiDexComponents'.
> java.io.IOException: The output jar [<project_path>\app\build\intermediates\multi-dex\release\componentClasses.jar] must be specified after an input jar, or it will be empty.
和我的顶级身材。格拉德尔:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    defaultConfig {
        applicationId "com.my.app"
        minSdkVersion 14
        targetSdkVersion 23
        versionCode 25
        versionName "2.5"

        // Enabling multidex support.
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    dexOptions {
        incremental true
        javaMaxHeapSize "2048M"
    }
}

repositories {
    mavenCentral()
    maven { url "https://jitpack.io" }
}

dependencies {
    compile 'com.android.support:multidex:1.0.1'
    compile 'com.android.support:appcompat-v7:23.0.1'
    compile 'com.android.support:design:23.0.1'
    compile 'com.android.support:recyclerview-v7:23.0.1'
    compile 'com.google.android.gms:play-services:8.1.0'
    compile 'com.google.code.gson:gson:2.3.1'
    compile 'com.squareup.okhttp:okhttp:2.4.0'
    compile 'com.facebook.android:facebook-android-sdk:4.2.0'
    compile 'me.dm7.barcodescanner:zxing:1.7.2'
    compile 'de.hdodenhof:circleimageview:1.3.0'
    compile 'com.scottyab:secure-preferences-lib:0.1.3'
    compile 'com.soundcloud.android:android-crop:1.0.0@aar'
    compile('com.afollestad.material-dialogs:core:0.8.1.0@aar') {
        transitive = true
    }
    compile('com.mopub:mopub-sdk:3.13.0@aar') {
        transitive = true
    }
    compile project(':android-support-v4-preferencefragment')
    compile project(':circular_progress_bar')
    compile files('libs/mobilecore_V1.1.jar')
    compile files('libs/libAdapterSDKMoPub.jar')
    compile files('libs/adcolony.jar')
}
// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.3.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

我尝试过gradle的其他版本,如
1.4.0-beta1',1.4.0-beta2
,和
1.3.1
,但仍然不走运。

您的跟踪中有一些信息--

警告:有4个未解析的类或接口引用。 您可能需要添加丢失的库jar或更新其版本。 如果代码在没有缺少类的情况下运行良好,则可以抑制 带有“-dontwarn”选项的警告。 ()

至少部分问题在于API 23中删除了
AndroidHttpClient
,并且至少有一个库依赖于它。你有三个选择

1) 您可以在
build.gradle
文件中包含以下内容。其中包括apk中的旧库。看

2) 您可以降低目标并将sdk编译为22而不是23。这应该允许您编译或至少解决
AndroidHttpClient
问题,直到库更新为不需要它为止

3) 您可以将
-dontwarn
命令添加到proguard文件中,以抑制警告以获得生成。如文档中所述,如果您不确定可以安全地忽略警告,则这可能是危险的。我不确定忽略因删除
HttpClient
和相关类而产生的警告是否安全。在M上运行时,它可能会导致不稳定的构建,但对于L及以下版本应该是安全的,因为这些类存在于该API级别的设备上

增加:
无论是谁,请记住,您必须降低
BuiltolsVersion
com.android。在
22.0.1

的依赖项中支持
,这是一个非常容易解决的问题。当你正在开发一个应用程序时,问题就在你中间更新你的SDK。这很好,但您不知道的是,项目的gradle配置应该是最新的。因此,只需创建一个新项目并查看您的
类路径
,我的类路径是
com.android.tools.build:gradle:1.3.1
,但现在新项目类路径是
classpath'com.android.tools.build:gradle:1.5.0'
。要考虑的另一件事是<代码>编译> DKEVIEX ,<代码> BudioTooScript版本,<代码> ToalSDKVIEX< /COD>。您还应该检查库的版本是否是最新的。只需打开SDK管理器,就可以找到它们的版本。 总而言之: 这是您的project gradle应该更新的内容:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.5.0' //update this section to the lates gradle core available
    }
}
android {
    compileSdkVersion 23 // update this one
    buildToolsVersion "23.0.2" // update this one

    defaultConfig {
        applicationId "ranjbar.hadi.something"
        minSdkVersion 14
        targetSdkVersion 23 // update this one
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                    'proguard-rules.pro'
        }
    }
}
这是gradle模块级文件中应该更新的部分:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.5.0' //update this section to the lates gradle core available
    }
}
android {
    compileSdkVersion 23 // update this one
    buildToolsVersion "23.0.2" // update this one

    defaultConfig {
        applicationId "ranjbar.hadi.something"
        minSdkVersion 14
        targetSdkVersion 23 // update this one
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                    'proguard-rules.pro'
        }
    }
}

希望这有助于

说明一个显而易见的问题:应用程序级别构建中的行。gradle:multiDexEnabled true导致了问题。您有解决方案吗?因为它超过了65k限制,我必须启用
multiDex
,我希望能帮上忙,但我对multiDex一无所知,抱歉。我希望你能尽快找到解决方案。嘿@Lancelot你找到解决方案了吗……我也有同样的问题,我也有这个问题。确保您正在使用库的更新版本,因为它们可能已经不使用Apache Http。请不要发布。相反,根据具体问题定制每个答案。如果您有必要的信誉点,您可以在适当的情况下将问题或问题作为重复项。@Kyll ok下次我将尝试将用户推荐到我的答案链接