2015-07-27 18 views
47

Bir 'açıklaması' bir Android uygulaması üzerine inşa yapmaya çalışıyorum bir karmaşa hesaplar edilemiyor ve ben bu hatayı almaya devam ediyorum:Hata: Yürütme ': app: packageRelease' görevi için başarısız oldu. > /../AndroidStudioProjects/../classes.jar

Unable to compute hash of /../AndroidStudioProjects/../classes.jar

Ve sonra 'classes.jar' için bu dizine baktığımda dosya orada yok. Bu dosyayı kendim bir taslak göreviyle oluşturmalı mıyım?

burada ProGuard ile ilgili şeyler oluyor ama

İşte benim gradle.build dosyasıdır ".... karma hesaplamak için açılamıyor' dışındaki çok yararlı bilgiler vermekle ilgili değil: Birisi varsa

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

android { 
    compileSdkVersion 22 
    buildToolsVersion "22.0.1" 
    defaultConfig { 
     applicationId "com.example" 
     minSdkVersion 11 
     targetSdkVersion 22 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     debug { 
      buildConfigField "String", "SERVER_URL", '"http://10.0.2.2:3000"' 
     } 
     release { 
      buildConfigField "String", "SERVER_URL", '"https://example.com"' 
      minifyEnabled true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
     debugRelease { 
      buildConfigField "String", "SERVER_URL", '"https://example.com"' 
      debuggable true 
      jniDebuggable false 
      renderscriptDebuggable false 
      minifyEnabled false 
      zipAlignEnabled true 
     } 
    } 
    productFlavors { 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:22.1.1' 
    compile 'com.android.support:recyclerview-v7:22.1.1' 
    compile 'com.android.support:cardview-v7:22.1.1' 
    compile 'com.google.android.gms:play-services-gcm:7.5.0' 
} 

.

sizin projesi için proguard-rules.pro aç: harika olurdu Bu sorunu çözmek bana yardımcı olabilir

cevap

19

sorunu düşündüm d altına şunu ekleyin:

-dontwarn java.nio.file.Files 
-dontwarn java.nio.file.Path 
-dontwarn java.nio.file.OpenOption 
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement 

ben ben 'salma' modunda Uygulamamı çalıştırmayı denedi şuydu çözüldü ve burada bu adama benzer hataların bir grup var Temelde nasıl: https://github.com/square/okio/issues/144

ben hemen hemen söylediği şeyi söyledi ve düzeltdi.

Bu, başkalarının kendi APK'larını oluşturmalarına yardımcı olabilir.

+5

ben hala burada aynı proguard-android.txt –

+0

bu satırları ekledikten sonra aynı hatayı alıyorum. Bu satırları pro-gurad'a ekledikten sonra bile hata alıyorum. Derleme sırasında görülen bazı hataları gidermek için projenin temiz bir şekilde yeniden yapılması gerekiyordu. İronik olarak bu hatalar imzalı bir yapı oluştururken ortaya çıkmadı. –

+0

Yeni gelenler için: Lütfen çözüm için @georgiecasey'in cevabına bakın. Ne tür derslerin gerekli olduğunu tahmin etmeye çalışmayın. – CoolMind

3

Zaten burada bir cevap olduğunu biliyorum, ama durumum biraz farklıydı ve paylaşmak istedim.

Benim için, projemin proguard dosyası, yani proguard-rules.pro, bir şekilde proguard-android.txt olarak değiştirildi.

proguard-android.txt

Ben hasara neden oldu Android'in proguard dosyasını ağır basan, bu yüzden aslında Android'in varsayılan proguard kuralları için ayrılmıştır ve ben açılamıyor karma mesaj hesaplamak için tanınacak.

Projemdeki dosya adını proguard-android.txt'dan proguard-rules.pro'a değiştirdikten sonra işleri halledebildim. proguard.cfg içeride Benim için

+0

Evet, bu bana oldu, neden otomatik olarak gerçekleşti? Herhangi bir fikir? –

+0

Gerçekten nasıl olduğunu bilmiyorum. Android Studio'nun eski bir sürümünde bir hata olabilirdi, ama bu sadece bir tahmin. – WindsurferOak

21

aşağıdaki 2 satır yardımcı:

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

modern android stüdyosunda proguard-cfg yok –

+1

Dosya adı önemli değil. İstediğin her şey olabilirdi. Proguard için henüz bir konfigürasyon yoksa, build.gradle içine aşağıdaki satırı ekleyebilirsiniz: proguardFiles getDefaultProguardFile ('proguard-android.txt'), 'proguard.cfg' – goRGon

+1

Bu bana yardımcı oldu! Teşekkürler – MduSenthil

1

Ben bu eski bir sorudur ama belki bu cevabı birisi için çalıştığını biliyoruz. Korunmak için -dontwarn butterknife.** ekledim, sonra dümen düzgün bir şekilde inşa edildi.

38

Bu soruya verilen tüm cevaplar sadece kendileri için çalışan Proguard kurallarını veriyor, her düzeltme farklı olacak. Öncelikle, proguard dizininin hata mesajında ​​bir yerde olduğunu kontrol ederek bir Proguard problemi olduğunu onaylayın, böyle bir şey: Unable to compute hash of /Users/Documents/projectX/app/build/intermediates/classes-proguard/release/classes.jar

Bu, daha önceki bir Proguard hatasının neden olduğu anlamına gelir; pencere veya Gradle Console penceresi ve aldığınız uyarıları veya hataları kontrol edin.Şu anki projemde, Square'in Picasso kütüphanesi hataya neden oluyor: Warning: com.squareup.picasso.OkHttpDownloader: can't find referenced class com.squareup.okhttp.OkHttpClient. Uyarıları yok saymak için -dontwarn com.squareup.okhttp.** ekledim ve uygulama hala normal çalışıyordu.

Proguard hatalarının birçoğu, bazı sınıflar hakkında uyarılar olacaktır. Bu nedenle, projenizde neden her hangi bir sınıfın işe yaradığını -dontwarn eklediğinizde.

StackOverflow yolunun sadece Google olduğunu biliyorum, en iyi cevabı kopyalayın ve yapıştırın ve en iyisi için umut verin, ancak burada biraz anlayın ve sizin için proguard kurallarını anlayın!

+1

Nice answer. Bir çözüm olarak kabul edilmeli. – CoolMind

+0

Ve eğer Mesaj veya Gradle Console pencerelerinde Proguard hatası yoksa veya komut satırına monte edildiğinde ne olur? Daha önce hiç hata yok "Hash hesaplamıyor ..." –

+1

Tesadüfen haklısınız. Ama ben sadece düzeltemedim çünkü yeni bir geçiş bağımlılığı eklediğimi bildiğim bir kütüphane versiyonunu değiştirdim. (Çünkü kütüphaneyi yazdım.) Proguard'dan hiç bir hata mesajı bulamadım. –

1

Benim gradle dosyasından minifyEnabled devre dışı bırakıldığında seçeneği yapılamamdaki hatayı düzeltti.

build.gradle

buildTypes { 
     release { 
       // DISABLE OPTION 
       //minifyEnabled true 
       proguardFiles 'proguard.cfg' 
     } 
} 
+0

ProGuard tarafından yapılan gizlemeyi kapattığınızı anlıyor musunuz? Ayrıca, sürüm oluşturma işleminizde ProGuard çalışanı olmadığı için, proguardFiles ... ile hattı da yorumlayabilirsiniz. – Ped7g

+0

Bu çözümler kabul edilemez, bir şaşırmayı kapatır. – Ufkoku