Gradleを使用して、Android studio 2.0 Beta 6の最新バージョンに更新しました。
dependencies {
classpath 'com.Android.tools.build:gradle:2.0.0-beta6'
}
アプリは、エミュレーターとすべてのことをテストしたデバイスで完全に正常に動作し、正常に動作します。
署名済みAPKを生成しようとしたときにのみ、多くのエラーが発生しました。
依存関係でエラーが発生しましたが、ベクトルドロアブル、ベクトルアニメーションドロアブル、およびSupport-v4ライブラリを除外するとすべてが解決しました
今、私は依存関係のエラーを持っていません。
これで、appモジュールのgradle.buildは次のようになります。
apply plugin: 'com.Android.application'
Android {
configurations {
//all*.exclude group: 'com.Android.support', module: 'support-v4'
all*.exclude module: 'animated-vector-drawable'
all*.exclude module: 'support-vector-drawable'
//all*.exclude module: 'support-v4'
}
repositories {
maven { url "https://jitpack.io" }
}
compileSdkVersion 23
buildToolsVersion '23.0.2'
defaultConfig {
applicationId "com.test.test"
minSdkVersion 11
targetSdkVersion 23
versionCode 1
versionName "1"
// multiDexEnabled true
vectorDrawables.useSupportLibrary = true
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile('com.github.afollestad.material-dialogs:commons:0.8.5.5@aar') {
transitive = true
exclude module: 'support-v4'
exclude module: 'appcompat-v7'
exclude module: 'recyclerview-v7'
}
compile('com.google.Android.gms:play-services-ads:8.4.0') {
exclude module: 'support-v4'
}
compile('com.google.Android.gms:play-services-analytics:8.4.0') {
exclude module: 'support-v4'
}
compile('com.Android.support:appcompat-v7:23.2.0') {
exclude module: 'support-v4'
exclude module: 'animated-vector-drawable'
exclude module: 'support-vector-drawable'
}
compile('com.Android.support:support-v4:23.2.0') {
exclude module: 'animated-vector-drawable'
exclude module: 'support-vector-drawable'
}
compile('com.Android.support:palette-v7:23.2.0') {
exclude module: 'support-v4'
}
compile('com.Android.support:cardview-v7:23.2.0') {
exclude module: 'support-v4'
}
compile('com.Android.support:recyclerview-v7:23.2.0') {
exclude module: 'support-v4'
}
compile('com.Android.support:design:23.2.0') {
exclude module: 'support-v4'
}
compile('com.nineoldandroids:library:2.4.0') {
exclude module: 'support-v4'
}
compile('com.baoyz.swipemenulistview:library:1.2.1') {
exclude module: 'support-v4'
exclude module: 'appcompat-v7'
exclude module: 'recyclerview-v7'
}
compile('com.squareup.picasso:picasso:2.5.2') {
exclude module: 'support-v4'
}
compile('com.nononsenseapps:filepicker:2.5.0') {
exclude module: 'support-v4'
exclude module: 'appcompat-v7'
exclude module: 'recyclerview-v7'
}
compile 'com.google.code.gson:gson:2.6.1'
}
エラーは、リリース用にビルドするときにのみ表示されます。
これは私がmultiDexをオンにしたときのエラーです:
Error:Execution failed for task ':app:transformClassesWithMultidexlistForRelease'.
> com.Android.build.api.transform.TransformException: com.Android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/bin/Java'' finished with non-zero exit value 1
そして、これは私がそれをオフにしたときのエラーです:
:app:transformClassesWithDexForRelease
Error:Error converting bytecode to dex:
Cause: Java.lang.RuntimeException: Exception parsing classes
Error:Execution failed for task ':app:transformClassesWithDexForRelease'.
> com.Android.build.api.transform.TransformException: com.Android.ide.common.process.ProcessException: Java.util.concurrent.ExecutionException: com.Android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/bin/Java'' finished with non-zero exit value 1
buildToolsVersion '23.0.2'
を可能なすべてのバージョンに変更しようとしましたが、何も変更されませんでした。
バージョン22.0.1を置くと、このエラーが発生しました。
Error:Error converting bytecode to dex:
Cause: com.Android.dx.cf.iface.ParseException: name already added: string{"a"}
Error:Execution failed for task ':app:transformClassesWithDexForRelease'.
> com.Android.build.api.transform.TransformException: com.Android.ide.common.process.ProcessException: Java.util.concurrent.ExecutionException: com.Android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/bin/Java'' finished with non-zero exit value 1
すべての可能なサポートライブラリバージョンと同じ結果で試してみました。
Java 1.6および1.7で試しましたが、何も変わっていません!
他の可能な解決策は何ですか?
私も同じエラーに直面し、重複した依存関係やマルチデックスなどで既存の多くの回答を検索していましたが、どれも機能しませんでした。 (Android Studio 2.0 Beta 6、ビルドツール23.0.2、マルチデックスなし)
マニフェストに記載されているパッケージ名と一致しないパッケージ名を使用したことがあります。
他のParseException行では、異なるモジュールにファイルがあり、パッケージ名/パスが似ているため、デクサーと競合する可能性があることがわかりました。
例:
モジュールA:com.example.xyz.ticketing.modulea.Interface.Java
モジュールB:com.example.Xyz.ticketing.moduleb.Enumerations.Java
モジュールC:AおよびBに依存しています
「Xyz」を小文字に修正した後、デクサーは再び元気になりました。
調べる方法:
ParseExceptionsについてgradleコンソールの出力を調べたところ、次のようになっています。
AGPBI:{"kind": "error"、 "text": "バイトコードからdexへの変換エラー:\ nCause:Java.lang.RuntimeException:例外解析クラス"
例外の終わり近くまでスクロールしました。その長い例外行には、実際に原因に言及している部分があります。
原因:com.Android.dx.cf.iface.ParseException:クラス名(at/dummycompany/mFGM/hata/hwp/BuildConfig)がパス(at/dummycompany/mfgm/hata/hwp/BuildConfig.class)
このようにして、一致しないパッケージ名/パスを検索する場所を見つけました
Build > Clean Project
を実行するだけで、クリーニング終了を待機してからBuild > Rebuild Project
を実行すると、エラーはなくなりました。それでおしまい。
私にとっての解決策は、Build Gradleファイルを変更することです。問題はGCのオーバーヘッド(メモリ不足)であることがわかりました。
構成にコードを追加します
Android {
dexOptions {
incremental = true;
preDexLibraries = false
javaMaxHeapSize "2g"
}
}
Proguardには他にも問題があります。また、minifyEnabledをfalseに設定する必要があります。
ヘルパークラスの1つに間違ったパッケージ名があったため、エラーが発生していました。すべてのクラスをチェックし、正しいパッケージ名を持っていることを確認してください。
私の解決策は異なっていました。proguard-rules.pro
にこれらの行を追加しました
-optimizationpasses 5
-overloadaggressively
-repackageclasses ''
-allowaccessmodification
SDKマネージャーからもすべてを更新してください。
TargetSdkVersionが25以上のバージョンでJDK 8を使用している場合、build.gradleファイルに次を追加する必要があります。
Android {
compileSdkVersion 26
buildToolsVersion "26.0.0"
defaultConfig {
...
jackOptions {
enabled true
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
-overloadaggressively
からproguard-rules.pro
を削除すると、これが修正されました。
または、-useuniqueclassmembernames
を追加しても修正されました。
./gradlew clean build
、スタジオキャッシュの無効化、マシンの再起動を試みました。しかし、問題を解決したのはInstant Run Offです
私の場合、まだ使用していないクラスを作成しました。そのため、クラスを削除するか、クラスを使用する必要があります。
このエラーが発生した場合、マニフェストのパッケージは、クラスで設定した他のパッケージとは確かに異なります。注意してください。
私は同じエラーに直面しました。パッケージの名前を小文字に変更したため、クラスに以前のケースの文言があったようです。
ログインアクティビティにAndroid studiotemplateを使用しているときにこの問題が発生しました。
アクティビティを入れる「アクティビティ」パッケージを選択しました。
AndroidManifest.xmlのテンプレートでは、.activity.LoginActivity
の代わりに.LoginActivity
が使用され、エラーが発生しました。
今日同じ問題にぶつかりました。問題は、Constants.Javaクラスで(誤って)定義したことです
public static final class Checkout {
.......
}
そして
public static final class CHECKOUT {
......
}