2015-09-05 5 views
5

Es ist eine sehr seltsame Situation. Ich kann mein Projekt erstellen, säubern und mein Projekt erstellen und kann sogar auf physischem Gerät mit Debug-Modus ausgeführt werden. Ich erhalte auch alle Daten, die ich auf der Google Analytics-Webseite benötige.Kann nach dem Hinzufügen von Google Analytics keine APK generieren, funktioniert aber im Debug-Modus einwandfrei

Der traurige Teil ist, Android Studio erzeugt keine Release-Version, .apk-Datei. Ich habe genau Add Analytics to Your Android App, das offizielle Tutorial gefolgt, und suchte auch nach vielen Antworten, aber das genaue Problem ist immer noch da.

Mein build.gradle sieht wie folgt aus:

apply plugin: 'com.android.application' 
apply plugin: 'com.google.gms.google-services' 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.0" 

    defaultConfig { 
     applicationId "com.comname.appname" 
     minSdkVersion 11 
     targetSdkVersion 23 
     versionCode 18 
     versionName "2.7" 
    } 
    buildTypes { 
     release { 
      minifyEnabled true 
      zipAlignEnabled true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 


dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    compile files('libs/achartengine-1.1.0.jar') 
    compile files('libs/SalatCalculator.jar') 
    compile 'com.android.support:appcompat-v7:23.0.0' 
    compile 'com.android.support:support-v4:23.0.0' 
    compile 'com.google.android.gms:play-services-analytics:7.8.0' 
} 

Hier ist der Gradle Bericht Körperbau:

Information:Gradle tasks [:app:assembleRelease] 
:app:preBuild UP-TO-DATE 
:app:preReleaseBuild UP-TO-DATE 
:app:checkReleaseManifest 
:app:preDebugBuild UP-TO-DATE 
:app:prepareComAndroidSupportAppcompatV72300Library UP-TO-DATE 
:app:prepareComAndroidSupportSupportV42300Library UP-TO-DATE 
:app:prepareComGoogleAndroidGmsPlayServicesAnalytics780Library UP-TO-DATE 
:app:prepareComGoogleAndroidGmsPlayServicesBase780Library UP-TO-DATE 
:app:prepareReleaseDependencies 
:app:compileReleaseAidl 
:app:compileReleaseRenderscript 
:app:generateReleaseBuildConfig 
:app:generateReleaseAssets UP-TO-DATE 
:app:mergeReleaseAssets 
:app:generateReleaseResValues UP-TO-DATE 
:app:processReleaseGoogleServices 
:app:generateReleaseResources 
:app:mergeReleaseResources 
:app:processReleaseManifest 
:app:processReleaseResources 
:app:generateReleaseSources 
:app:processReleaseJavaRes UP-TO-DATE 
:app:compileReleaseJavaWithJavac 
Note: D:\D\AndroidStudio\AppName\app\src\main\java\com\comname\AppName\util\NotificationGenerator.java uses or overrides a deprecated API. 
Note: Recompile with -Xlint:deprecation for details. 
:app:compileReleaseNdk UP-TO-DATE 
:app:compileReleaseSources 
:app:proguardRelease 
Warning:com.google.android.gms.analytics.internal.zzam: can't find referenced class org.apache.http.NameValuePair 
Warning:com.google.android.gms.analytics.internal.zzam: can't find referenced class org.apache.http.client.utils.URLEncodedUtils 
Warning:com.google.android.gms.analytics.internal.zzam: can't find referenced class org.apache.http.NameValuePair 
Warning:com.google.android.gms.analytics.internal.zzj: can't find referenced class org.apache.http.NameValuePair 
Warning:com.google.android.gms.analytics.internal.zzj: can't find referenced class org.apache.http.client.utils.URLEncodedUtils 
Warning:com.google.android.gms.analytics.internal.zzj: can't find referenced class org.apache.http.NameValuePair 
Warning:com.google.android.gms.internal.zzqt: can't find referenced class org.apache.http.HttpEntity 
Warning:com.google.android.gms.internal.zzqt: can't find referenced class org.apache.http.HttpResponse 
Warning:com.google.android.gms.internal.zzqt: can't find referenced class org.apache.http.StatusLine 
Warning:com.google.android.gms.internal.zzqt: can't find referenced class org.apache.http.client.HttpClient 
Warning:com.google.android.gms.internal.zzqt: can't find referenced class org.apache.http.client.methods.HttpGet 
Warning:com.google.android.gms.internal.zzqt: can't find referenced class org.apache.http.conn.ClientConnectionManager 
Warning:com.google.android.gms.internal.zzqt: can't find referenced class org.apache.http.impl.client.DefaultHttpClient 
Warning:com.google.android.gms.internal.zzqt: can't find referenced class org.apache.http.params.BasicHttpParams 
Warning:com.google.android.gms.internal.zzqt: can't find referenced class org.apache.http.client.methods.HttpGet 
Warning:com.google.android.gms.internal.zzqt: can't find referenced class org.apache.http.impl.client.DefaultHttpClient 
Warning:com.google.android.gms.internal.zzqt: can't find referenced class org.apache.http.params.BasicHttpParams 
Warning:com.google.android.gms.internal.zzqt: can't find referenced class org.apache.http.HttpEntity 
Warning:com.google.android.gms.internal.zzqt: can't find referenced class org.apache.http.HttpResponse 
Warning:com.google.android.gms.internal.zzqt: can't find referenced class org.apache.http.StatusLine 
Warning:com.google.android.gms.internal.zzqt: can't find referenced class org.apache.http.client.HttpClient 
Warning:com.google.android.gms.internal.zzqt: can't find referenced class org.apache.http.conn.ClientConnectionManager 
Warning:com.google.android.gms.internal.zzqt: can't find referenced class org.apache.http.client.HttpClient 
Warning:com.google.android.gms.internal.zzqt: can't find referenced class org.apache.http.HttpResponse 
Warning:com.google.android.gms.internal.zzqt: can't find referenced class org.apache.http.client.HttpClient 
Warning:com.google.android.gms.tagmanager.zzby: can't find referenced class org.apache.http.impl.client.DefaultHttpClient 
Warning:com.google.android.gms.tagmanager.zzcx: can't find referenced class org.apache.http.Header 
Warning:com.google.android.gms.tagmanager.zzcx: can't find referenced class org.apache.http.HttpEntity 
Warning:com.google.android.gms.tagmanager.zzcx: can't find referenced class org.apache.http.HttpEntityEnclosingRequest 
Warning:com.google.android.gms.tagmanager.zzcx: can't find referenced class org.apache.http.HttpHost 
Warning:com.google.android.gms.tagmanager.zzcx: can't find referenced class org.apache.http.HttpResponse 
Warning:com.google.android.gms.tagmanager.zzcx: can't find referenced class org.apache.http.StatusLine 
Warning:com.google.android.gms.tagmanager.zzcx: can't find referenced class org.apache.http.client.ClientProtocolException 
Warning:com.google.android.gms.tagmanager.zzcx: can't find referenced class org.apache.http.client.HttpClient 
Warning:com.google.android.gms.tagmanager.zzcx: can't find referenced class org.apache.http.message.BasicHttpEntityEnclosingRequest 
Warning:com.google.android.gms.tagmanager.zzcx: can't find referenced class org.apache.http.HttpHost 
Warning:com.google.android.gms.tagmanager.zzcx: can't find referenced class org.apache.http.message.BasicHttpEntityEnclosingRequest 
Warning:com.google.android.gms.tagmanager.zzcx: can't find referenced class org.apache.http.HttpEntity 
Warning:com.google.android.gms.tagmanager.zzcx: can't find referenced class org.apache.http.HttpEntityEnclosingRequest 
Warning:com.google.android.gms.tagmanager.zzcx: can't find referenced class org.apache.http.HttpResponse 
Warning:com.google.android.gms.tagmanager.zzcx: can't find referenced class org.apache.http.StatusLine 
Warning:com.google.android.gms.tagmanager.zzcx: can't find referenced class org.apache.http.client.HttpClient 
Warning:com.google.android.gms.tagmanager.zzcx: can't find referenced class org.apache.http.HttpEntityEnclosingRequest 
Warning:there were 61 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) 
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:dexRelease 
:app:validateExternalOverrideSigning 
:app:packageRelease FAILED 
Error:Execution failed for task ':app:packageRelease'. 
> Unable to compute hash of D:\D\AndroidStudio\AppName\app\build\intermediates\classes-proguard\release\classes.jar 

Auch Note: D:\D\AndroidStudio\AppName\app\src\main\java\com\comname\AppName\util\NotificationGenerator.java uses or overrides a deprecated API. in Bezug auf, ich habe laufen Lint für diese Datei kann nicht angezeigt hat jeder solche Warnung.

Antwort

8

Das Problem ist proguard-bezogen, Sie haben prouard nur bei Release-Profil aktiviert (minifyEnabled true).

Sie haben zwei Möglichkeiten:

  1. Disable Proguard diese Eigenschaft auf false Einstellung. Diese Option ist wirklich nicht empfohlen für den Fall, dass Sie die App freigeben werden.

  2. Fügen Sie Regeln hinzu, damit Proguard mit Analytics ordnungsgemäß funktioniert. Diese Regeln sollten proguard-rules.pro und dies ist ein Beispiel für die Datei hinzugefügt werden:

    -keep class com.google.android.gms.** { *; } 
    -dontwarn com.google.android.gms.** 
    

Weitere Daten zu Proguard im Android Developers Page und die official project page

Hoffe, es hilft.

+0

Welche dieser beiden Optionen, die Sie vorschlagen? –

+0

Außerdem, jetzt, dass .apk-Datei generiert wird, sehe ich fast 1 MB Dateigröße erhöhen. Ist das in Ordnung? –

+0

Die 1MB Erhöhung ist, weil Sie die Deaktivierungsoption wählen, richtig? Es ist sinnvoll, weil Proguard auch den unbenutzten Code entfernt, und andere Optimierungen, um die Apk-Größe zu verringern – sabadow

0

Es gibt eine weitere Lösung, die ich mehr bevorzuge, bis Google das Problem beheben wird. Sie können fehlende Klassen hinzufügen und müssen nicht befürchten, dass eine ClassNotFoundException auftreten könnte.

So einfach fügen Sie diese in der gradle config:

android { 
    useLibrary 'org.apache.http.legacy' 
} 
Verwandte Themen