Maps api v2を使用すると、4.4、5.0、5.1、5.1.1、6で完全に機能しますが、4.2.2を試してみるとアプリがクラッシュします。私はたくさんの研究をしてきましたが、何もうまくいかないようです。これが完全なログです。
FATAL EXCEPTION: main
Java.lang.NoClassDefFoundError: com.google.Android.gms.common.
at com.google.Android.gms.measurement.internal.zzk$zza.get(
at com.google.Android.gms.measurement.internal.zzc.zzkG(
at com.google.Android.gms.measurement.internal.zzr.<init>(
at com.google.Android.gms.measurement.internal.zzx.zzb(
at com.google.Android.gms.measurement.internal.zzt.<init>(
at com.google.Android.gms.measurement.internal.zzx.zzBQ(
at com.google.Android.gms.measurement.internal.zzt.zzaU(
at com.google.Android.gms.measurement.ource)
at Android.content.ContentProvider.attachInfo(ContentProvider
at Android.app.ActivityThread.installProvider(ActivityThread.
at Android.app.ActivityThread.installContentProviders(
at Android.app.ActivityThread.handleBindApplication(
at Android.app.ActivityThread.access$1300(ActivityThread.
at Android.app.ActivityThread$H.handleMessage(ActivityThread.
at Android.os.Handler.dispatchMessage(Handler.Java:99)
at Android.os.Looper.loop(Looper.Java:137)
at Android.app.ActivityThread.main(ActivityThread.Java:5041)
at Java.lang.reflect.Method.invokeNative(Native Method)
at Java.lang.reflect.Method.invoke(Method.Java:511)
at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run
at com.Android.internal.os.ZygoteInit.main(ZygoteInit.
at dalvik.system.NativeStart.main(Native Method)
何か案は?
これが私の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 {
mavenCentral()
maven {
url "http://dl.bintray.com/glomadrian/maven"
}
maven { url 'https://maven.fabric.io/public' }
}
Android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
applicationId "py.com.roshka.billeterabancard"
minSdkVersion 14
targetSdkVersion 23
versionCode 1
versionName "1.0"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.wang.avi:library:1.0.1'
compile 'com.nineoldandroids:library:2.4.0'
compile 'com.github.glomadrian:loadingballs:1.1@aar'
compile 'com.Android.support:appcompat-v7:23.1.0'
compile 'com.google.Android.gms:play-services:8.4.0'
compile 'com.Android.support:design:23.1.0'
compile 'com.Android.support:recyclerview-v7:23.1.0'
compile 'com.squareup.okio:okio:1.0.+'
compile 'com.squareup.okhttp:okhttp:1.5.4'
compile 'com.squareup.okhttp:okhttp-urlconnection:2.0.0'
compile 'com.squareup.retrofit:retrofit:1.8.0'
compile 'com.pnikosis:materialish-progress:1.7'
compile 'com.google.code.gson:gson:2.3'
compile 'me.dm7.barcodescanner:zxing:1.8.3'
compile 'me.dm7.barcodescanner:zbar:1.8.3'
compile('com.crashlytics.sdk.Android:crashlytics:2.5.5@aar') {
transitive = true;
}
}
いくつかの調査と数時間のテストの後、私はついにAndroidにはDEX64Kメソッド制限と呼ばれるものがあることに気付きました。簡単に言えば、プロジェクトに外部ライブラリを追加するときに到達できる制限があります。その制限により、multidexを使用する必要があるかもしれません。個人的には、ライブラリの一部が実際には使用されていないか、必要ないため、インポートするライブラリの量を減らすことにしました。multidexの詳細については、こちらをお読みください。
3つの簡単なステップ:
ステップ1:マルチデキシングは新機能であるため、ロリポップ以前のデバイスと互換性のあるサポートライブラリが必要です。 Gradleファイルの依存関係に以下を追加する必要があります。
compile 'com.Android.support:multidex:1.0.0'
ステップ2:gradleファイルでmultidex出力も有効にします。
Android {
compileSdkVersion 21
buildToolsVersion "21.1.0"
defaultConfig {
...
minSdkVersion 14
targetSdkVersion 21
...
// Enabling multidex support.
multiDexEnabled true
}
}
ステップ3:次に、multidexサポートアプリケーションをマニフェストに追加します。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="com.example.Android.multidex.myapplication">
<application
...
Android:name="Android.support.multidex.MultiDexApplication">
...
</application>
注:アプリがすでにApplicationクラスを使用(拡張)している場合は、attachBaseContext()メソッドをオーバーライドし、MultiDex.install(this)を呼び出して有効にすることができますmultidex。詳細については、MultiDexApplicationリファレンスドキュメントを参照してください。
@Override
protected void attachBaseContext(Context context) {
super.attachBaseContext(context);
MultiDex.install(this);
}
参照用の同じ手順は次のとおりです。 https://developer.Android.com/tools/building/multidex.html
Gradleファイルの依存関係に以下を追加する必要があります。
compile 'com.applozic.communication.uiwidget:mobicomkitui:5.8.4'
Gradleファイルの依存関係に以下を追加する必要があります。
compile 'com.applozic.communication.uiwidget:mobicomkitui:5.8.4'
プロジェクトを同期します
この問題に直面しましたが、gradleのバージョンを変更するだけで解決しました。この問題は、Googleの更新が原因で発生します。gradleファイルに変更すると、以下に説明するように正常に実行されます。
compile 'com.google.Android.gms:play-services-auth:10.0.1'
compile 'com.google.Android.gms:play-services-gcm:10.0.1'
compile 'com.google.Android.gms:play-services:10.0.1'
compile 'com.Android.support:support-v4:25.1.0'
compile 'com.Android.support:appcompat-v7:25.1.0'
compile 'com.Android.support:support-annotations:25.1.0'
Change the Gradle files to
compile 'com.google.Android.gms:play-services-auth:**11.0.4**'
compile 'com.google.Android.gms:play-services-gcm:**11.0.4**'
compile 'com.google.Android.gms:play-services:**11.0.4**'
compile 'com.Android.support:support-annotations:**25.3.1**'
compile 'com.Android.support:support-v4:**25.3.1**'
compile 'com.Android.support:appcompat-v7:**25.3.1**'