2015-10-23 17 views
6

私はGitHubのプロジェクトを持っています。約2ヶ月間、両方のマシンで正常に動作していました。その後、2週間前、私の家のPCで稼働を停止しましたが、はまだ私の仕事のPCで正常に動作します。Gradle dependencyが原因でエラーが発生しました "無効なマジックナンバー"

これは私が取得エラーですアプリ:例外で失敗しましたビルド:shrinkDebugMultiDexComponentsは

FAILUREに失敗しました。

  • どうしたのですか。 'app:shrinkDebugMultiDexComponents'タスクの実行に失敗しました。 java.io.IOException:[D:\ dev \ gitRepo \ app \ android \ app \ build \ intermediates \ multi-dex \ debug \ allclasses.jar]を読むことができません(クラス[__MACOSX /ストライプ/アンドロイド/. BuildConfig.class](クラス内のマジックナンバー[51607]が無効です)
  • 試してみてください: スタックトレースを取得するには、--stacktraceオプションを指定して実行してください。より多くのログ出力を得るには、--infoまたは--debugオプションを指定して実行します。

私にエラーを与えているstripeパッケージには、サードパーティのライブラリthat you can find hereです。私はビルド.gradleファイルの依存関係として、彼らの言うとおりにリストします。

compile 'com.stripe:stripe-android:+' 

私はstripeを関連するすべてのコードをコメントアウトしており、アプリは完全に正常に動作するので、私はそれが私がそのパッケージを処理していますどのように何かを持って知っています。

残念ながら、私はこれを止めるために何をしたのか正確には思い出せません。私はこれが起こる前の週がAndroid Studioをアップグレードし、ProGuardの設定を乱すかなりの時間を費やしたと思う。

  • にはProGuard変更が行われていないmasterブランチで作業:私が試してみました何

  • API 17をインストール、アンインストールし、再インストールのAndroidメーカー
  • 再クローニングGitのレポ
  • (日食のためのストライプがこれを必要とする。未メーカーが、私はそれに打撃を与えました)。
  • ストライプカスタマーサポートに連絡していますが、ヒントはありませんでした。
  • This stack overflow post。しかし、このプロジェクトに触れたMacコンピュータはありません。また、私は個人的にはstripeに関連するものを圧縮していません。
  • From hereは、マジックナンバーをHexからASCIIに変換しました。結果は私が認識していないQ`でした。

私はProGuardのために何かしたかもしれないと思いますが、私は理解できません。私は、クリーンなAndroidStudioをインストールし、きれいなリポジトリのクローンを使って、Proguardの仕事とはまったく異なる枝に立っています。私はオフィスにいてもプロジェクトは正常に動作します。

EDIT

私はdebug BuildTypeでこれを実行しています。これらは私の3階調ファイルです。 1つ目はプロジェクト全体、2つ目はアプリケーションモジュール用、3つ目はローカルアンドロイドライブラリモジュール用です。

プロジェクトbuild.gradle: buildscript {リポジトリ{ jcenter() 達人{URL 'http://download.crashlytics.com/maven'}} 依存関係{クラスパス 'com.android.tools.build:gradle:1.2.3' クラスパス 'com.crashlytics.tools.gradle:crashlytics-のGradle:1 +' }}

allprojects { 
    repositories { 
     jcenter() 
     maven{ url 'http://download.crashlytics.com/maven' } 
    } 
} 

Android用アプリケーションモジュールbuild.gradle

buildscript { 
    repositories { 
     maven { url 'https://maven.fabric.io/public' } 
    } 

    dependencies { 
     classpath 'io.fabric.tools:gradle:1.+' 
    } 
} 
apply plugin: 'com.android.application' 
apply plugin: 'io.fabric' 

repositories { 
    maven { url 'https://maven.fabric.io/public' } 
} 


android { 
    compileSdkVersion 22 
    buildToolsVersion "22.0.1" 

    defaultConfig { 
     applicationId "com.app.android" 
     renderscriptTargetApi 19 
     renderscriptSupportModeEnabled true 
     minSdkVersion 16 
     targetSdkVersion 22 
     multiDexEnabled = true 
    } 

    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' 
      buildConfigField 'Boolean', 'enableCrashlytics', 'true' 
     } 
     debug { 
      buildConfigField 'Boolean', 'enableCrashlytics', 'false' 
     } 
     adhoc { 
      debuggable true 
      signingConfig signingConfigs.debug 
      buildConfigField 'Boolean', 'enableCrashlytics', 'true' 
     } 
    } 
    packagingOptions { 
     exclude 'META-INF/DEPENDENCIES.txt' 
     exclude 'META-INF/LICENSE.txt' 
     exclude 'META-INF/NOTICE.txt' 
     exclude 'META-INF/NOTICE' 
     exclude 'META-INF/LICENSE' 
     exclude 'META-INF/DEPENDENCIES' 
     exclude 'META-INF/notice.txt' 
     exclude 'META-INF/license.txt' 
     exclude 'META-INF/dependencies.txt' 
     exclude 'META-INF/LGPL2.1' 
    } 
} 
dependencies { 
    compile project(':localLibrary') 
    compile 'com.facebook.android:facebook-android-sdk:3.21.1' 
    compile 'commons-io:commons-io:2.4' 
    compile 'com.github.bumptech.glide:glide:3.6.1' 
    compile 'com.android.support:support-v4:22.0.1' 
    compile 'com.google.android.gms:play-services-identity:8.1.0' 
    compile 'com.google.android.gms:play-services-plus:8.1.0' 
    compile 'com.google.android.gms:play-services-maps:8.1.0' 
    compile 'com.android.support:multidex:1.0.1' 
    compile 'io.card:android-sdk:5.0.1' 
    compile 'com.stripe:stripe-android:+' 
    compile('com.crashlytics.sdk.android:crashlytics:[email protected]') { 
     transitive = true; 
    } 
} 

ローカルのAndroidライブラリモジュールはbuild.gradle

apply plugin: 'com.android.library' 

android { 
    compileSdkVersion 22 
    buildToolsVersion "22.0.1" 

    defaultConfig { 
     minSdkVersion 16 
     targetSdkVersion 22 
     multiDexEnabled = true 
    } 

    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' 
     } 
    } 
} 

dependencies { 
    compile 'com.android.support:support-v4:22.1.0' 
    compile 'com.google.code.gson:gson:2.2.2' 
    compile 'com.android.support:multidex:1.0.0' 
    compile group: 'org.apache.httpcomponents' , name: 'httpmime' , version: '4.3.5' 
    compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5' 

} 
+1

無効なマジックナンバーは、Javaバージョンの周りの問題を示してあるべき

File -> Project Structure -> SDK Location 

JDK Locationに行く – ligi

+0

@ligiは、あなたがのJavaバージョンを意味しています私が使っているマシンは? – JuiCe

+0

私は依存関係で '+'を使わないでください - 代わりに 'stripe-android'のフルバージョン番号を指定してください。次に、異なるバージョンを試して問題があるかどうかを確認することができます。 'io.fabric.tools:gradle'でも同じです。 –

答えて

2

この問題は、実行しているJavaのバージョンに関連している可能性があります。私は同様の問題があり、Java 8がビルドに使用されていることを発見しました。 Java 7に変更したとき、このビルドの問題は修正されました。

のAndroid StudioでのJava 1.7.x(Javaの7)

3

うん、両方のマシンが同じJavaバージョン、および実際のAndroidメーカーの同じバージョンを持っていることを確認します。私が考えることができる唯一の他のものは、おそらくStripeがあなたのapkを構築するためにASにバンドルされているビルドツールを使用していて、あなたがデフォルトでインストールしたものが若干異なり、何かが見つからないということです - see this post I made on a similar problem I had

+1

私はまだこれをテストすることができませんでしたが、賞金は満期になりますので、私はあなたにそれを与えています。私は今週末家のPCでチェックします。 – JuiCe

関連する問題