ich nur auf ProGuard auf meinem Build gedreht und jetzt bin ich immer einWarum erhalte ich bei Verwendung von Proguard eine ClassNotFoundException von Play Services lib?
java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.chimera.GmsModuleInitializer" on path: DexPathList[[zip file "/system/app/PlayGames.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
Die docs sagen, dass alles, was ich brauche Proguard mit Play-Dienste zu verwenden, sollte von der Android Gradle Plugin aufgenommen werden:
Hinweis: ProGuard-Anweisungen sind in den Play Services-Clientbibliotheken enthalten, um die erforderlichen Klassen beizubehalten. Das Android Plugin für Gradle hängt automatisch ProGuard Konfigurationsdateien in einem AAR (Android ARchive) Paket an und hängt dieses Paket an Ihre ProGuard Konfiguration an. Während der Projekterstellung erstellt Android Studio automatisch die ProGuard-Konfigurationsdateien und die Build.gradle-Eigenschaften für ProGuard. Um ProGuard mit Android Studio verwenden zu können, müssen Sie in Ihren build.gradle buildTypes die Einstellung "ProGuard" auf setzen. Weitere Informationen finden Sie im ProGuard-Handbuch.
Dies ist der wichtige Teil meiner App-Modul build.gradle Datei:
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
...
}
...
buildTypes {
...{
applicationIdSuffix ".debug"
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
}
dependencies {
...
//google play services
compile 'com.google.android.gms:play-services-gcm:8.4.0'
compile 'com.google.android.gms:play-services-analytics:8.4.0'
compile 'com.google.android.gms:play-services-location:8.4.0'
}
Das ist meine Top-Level-build.gradle Datei:
buildscript {
repositories {
jcenter()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.2'
}
}
allprojects {
repositories {
jcenter()
mavenCentral()
}
}
Was bin ich?
Danke. Ich hatte die keep/dontwarn Flags hinzugefügt. Freut mich zu wissen, dass sie "nicht" gebraucht werden sollten, wie ich dachte. Ich werde die Ausgabezuordnungen untersuchen. – tir38