StackOverflowで質問をして以来、長い年月が経ちました。私はほとんど毎日それを使用しますが。とにかく ;ここに行く:Android Studio、ProGuardがClasses.jarのハッシュを計算できない
最近私はAPI 23に切り替えました。私を強制的に使用して
useLibrary 'org.apache.http.legacy'
がApacheのライブラリに簡単にアクセスできなくなってしまったためです。
私のプロジェクトは正常にコンパイルされ、デバッグモードのすべてのテストデバイスで正常に動作します。 今日は本番に私のプロジェクトを持参する必要があるとProGuardのは
(..)\ビルド\中間体\クラス、ProGuardの\リリース\のclasses.jar」のハッシュを計算することができませんと叫びます他のエラーや警告はありません。以前はありましたが、私はそれらを取り除きました。 Apacheライブラリの重複コピーを取り除くように。ここで
は私のGradleファイルです:buildscript {
repositories {
mavenCentral()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.3.1'
}
}
apply plugin: 'com.android.application'
repositories {
maven { url "http://dl.bintray.com/populov/maven" }
mavenCentral()
jcenter()
}
dependencies {
compile 'com.github.lzyzsd:circleprogress:[email protected]'
compile('com.fasterxml.jackson.datatype:jackson-datatype-joda:2.0.4') {
exclude module: 'joda-time'
}
compile 'net.danlew:android.joda:2.8.1'
compile "commons-io:commons-io:+"
compile 'com.google.android.gms:play-services-location:7.8.0'
compile 'com.google.android.gms:play-services-nearby:7.8.0'
compile ('com.google.apis:google-api-services-translate:v2-rev41-1.20.0')
{
// Exclude artifacts that the Android SDK/Runtime provides.
exclude group: 'xpp3', module: 'shared'
exclude group: 'org.apache.httpcomponents', module: 'httpclient'
exclude group: 'junit', module: 'junit'
exclude group: 'com.google.android', module: 'android'
}
compile ('com.google.http-client:google-http-client-android:1.18.0-rc')
{
// Exclude artifacts that the Android SDK/Runtime provides.
exclude group: 'xpp3', module: 'shared'
exclude group: 'org.apache.httpcomponents', module: 'httpclient'
exclude group: 'junit', module: 'junit'
exclude group: 'com.google.android', module: 'android'
}
compile 'com.theartofdev.edmodo:android-image-cropper:1.0.+'
compile 'com.viewpagerindicator:library:[email protected]'
compile 'me.leolin:ShortcutBadger:[email protected]'
compile 'com.android.support:appcompat-v7:23.0.+'
compile "com.android.support:support-v4:23.0.+"
compile "com.android.support:gridlayout-v7:23.0.+"
compile "com.android.support:cardview-v7:23.0.+"
compile (
[group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.4.1'],
[group: 'com.fasterxml.jackson.core', name: 'jackson-annotations', version: '2.4.1'],
[group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.4.1']
)
compile 'de.undercouch:bson4jackson:2.4.0'
}
// The sample build uses multiple directories to
// keep boilerplate and common code separate from
// the main sample code.
List<String> dirs = [
'main', // main sample code; look here for the interesting stuff.
'common', // components that are reused by multiple samples
'template'] // boilerplate code that is generated by the sample template process
android {
compileSdkVersion 23
buildToolsVersion "23.0.0"
useLibrary 'org.apache.http.legacy'
defaultConfig {
minSdkVersion 10
targetSdkVersion 23
}
buildTypes {
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
sourceSets {
main {
dirs.each { dir ->
java.srcDirs "src/${dir}/java"
res.srcDirs "src/${dir}/res"
}
}
androidTest.setRoot('tests')
androidTest.java.srcDirs = ['tests/src']
}
packagingOptions {
exclude 'META-INF/NOTICE'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
}
}
とここにProGuardの-rules.txt
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in C:\android-sdk/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# Only obfuscate
-dontshrink
# Keep source file and line numbers for better crash logs
-keepattributes SourceFile,LineNumberTable
# Avoid throws declarations getting removed from retrofit service definitions
-keepattributes Exceptions
# Allow obfuscation of android.support.v7.internal.view.menu.**
# to avoid problem on Samsung 4.2.2 devices with appcompat v21
# see https://code.google.com/p/android/issues/detail?id=78377
-keep class !android.support.v7.internal.view.menu.** { *; }
# Amazon IAP library has some missing stuff
-dontwarn com.amazon.**
# ButterKnife uses some annotations not available on Android.
-dontwarn butterknife.internal.**
# Prevent ButterKnife annotations from getting renamed.
-keepnames class * { @butterknife.InjectView *;}
# Eventbus methods can not be renamed.
-keepclassmembers class ** {
public void onEvent*(**);
}
# Gson uses generic type information stored in a class file when working with fields. Proguard
# removes such information by default, so configure it to keep all of it.
-keepattributes Signature
# Gson specific classes
-dontwarn sun.misc.Unsafe
# joda-time has some annotations we don't care about.
-dontwarn org.joda.convert.**
# OkHttp has some internal stuff not available on Android.
-dontwarn com.squareup.okhttp.internal.**
# Okio has some stuff not available on Android.
-dontwarn java.nio.file.*
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
# Oltu has some stuff not available on Android (javax.servlet), we don't use (slf4j)
# and not included because it is available on Android (json).
-dontwarn javax.servlet.http.**
-dontwarn org.slf4j.**
-dontwarn org.json.**
-dontwarn com.fasterxml.**
# Retrofit has some optional dependencies we don't use.
-dontwarn rx.**
-dontwarn retrofit.appengine.**
私は自分のプロジェクトをきれいにしました。再起動したAndroid StuioはBuildsディレクトリ全体を一掃しました。
Result:
Information:Gradle tasks [:Application:assembleRelease]
:Application:preBuild UP-TO-DATE
:Application:preReleaseBuild UP-TO-DATE
:Application:checkReleaseManifest
:Application:preDebugBuild UP-TO-DATE
:Application:prepareComAndroidSupportAppcompatV72300Library UP-TO-DATE
:Application:prepareComAndroidSupportCardviewV72300Library UP-TO-DATE
:Application:prepareComAndroidSupportGridlayoutV72300Library UP-TO-DATE
:Application:prepareComAndroidSupportSupportV42300Library UP-TO-DATE
:Application:prepareComGithubLzyzsdCircleprogress110Library UP-TO-DATE
:Application:prepareComGoogleAndroidGmsPlayServicesBase780Library UP-TO-DATE
:Application:prepareComGoogleAndroidGmsPlayServicesLocation780Library UP-TO-DATE
:Application:prepareComGoogleAndroidGmsPlayServicesMaps780Library UP-TO-DATE
:Application:prepareComGoogleAndroidGmsPlayServicesNearby780Library UP-TO-DATE
:Application:prepareComTheartofdevEdmodoAndroidImageCropper104Library UP-TO-DATE
:Application:prepareComViewpagerindicatorLibrary241Library UP-TO-DATE
:Application:prepareMeLeolinShortcutBadger1010Library UP-TO-DATE
:Application:prepareNetDanlewAndroidJoda281Library UP-TO-DATE
:Application:prepareReleaseDependencies
:Application:compileReleaseAidl UP-TO-DATE
:Application:compileReleaseRenderscript UP-TO-DATE
:Application:generateReleaseBuildConfig UP-TO-DATE
:Application:generateReleaseAssets UP-TO-DATE
:Application:mergeReleaseAssets UP-TO-DATE
:Application:generateReleaseResValues UP-TO-DATE
:Application:generateReleaseResources UP-TO-DATE
:Application:mergeReleaseResources UP-TO-DATE
:Application:processReleaseManifest UP-TO-DATE
:Application:processReleaseResources UP-TO-DATE
:Application:generateReleaseSources UP-TO-DATE
:Application:processReleaseJavaRes UP-TO-DATE
:Application:compileReleaseJavaWithJavac UP-TO-DATE
:Application:compileReleaseNdk UP-TO-DATE
:Application:compileReleaseSources UP-TO-DATE
:Application:lintVitalRelease
:Application:proguardRelease UP-TO-DATE
:Application:dexRelease UP-TO-DATE
:Application:validateExternalOverrideSigning
:Application:packageRelease FAILED
Error:Execution failed for task ':Application:packageRelease'.
> Unable to compute hash of C:\Users\rafal_000\Projekty\Application\build\intermediates\classes-proguard\release\classes.jar
Information:BUILD FAILED
Information:Total time: 6.694 secs
Information:1 error
Information:0 warnings
Information:See complete output in console
'./gradlew clean assembleRelease'を試してみて、あなたがプロゴア警告を受け取ったかどうか確認してください – iagreen
Gradlewユーティリティを私に指摘してくれてありがとう!それはAndroid Studioで内部的に使用されているようですね。 Adnroidのスタジオでビルドしている間は、警告が表示されませんでした。 Java環境変数に問題がありました。もう1つ思い出してください。私は答えとしてマークするか、あなたにポイントを割り当てる方法を知らない。 – Rafal