在 KitKat 上接收此错误,并在Lollipop及以上版本上完美运行
我在gradle和Firebase json文件中包含了所有必需的jar以接收GCM。
我的app gradle
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
android {
compileSdkVersion 23
buildToolsVersion "24.0.0"
defaultConfig {
applicationId ""
minSdkVersion 13
targetSdkVersion 23
versionCode 6
versionName "1.6"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
defaultConfig {
multiDexEnabled true
}
useLibrary 'org.apache.http.legacy'
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile project(':httpmime-4.2.5')
compile project(':universal-image-loader-1.9.3')
compile project(':universal-image-loader-1.9.3')
compile group: 'org.apache.httpcomponents', name: 'httpclient-android', version: '4.3.3'
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.loopj.android:android-async-http:1.4.9'
compile 'com.readystatesoftware.sqliteasset:sqliteassethelper:+'
compile 'com.android.support:design:23.4.0'
compile 'com.google.android.gms:play-services:9.0.0'
testCompile 'junit:junit:4.12'
}
答案 0 :(得分:5)
此相关性包括Google Play服务API 所有的代码:
compile 'com.google.android.gms:play-services:9.0.0'
这很可能导致您的应用超过65K方法参考限制,要求您使用Multidex在Lollipop之前的设备上运行。
你有两个选择。您只能包含实际需要的Play服务API。标题为选择性地将API编译为可执行文件的部分中的list is here。或者您可以在instructions here之后启用Multidex。虽然build.gradle文件中有multiDexEnabled true
,但这只是配置Multidex所需的三个步骤之一。您还需要将库包含为依赖项并更新清单。
如果您使用的是Android Studio 2.2.2,则可以使用APK Analyzer查看应用中有多少方法引用。从菜单栏中选择 Build>分析APK 。 APK位于文件夹.../app/build/outputs/apk
中。选择APK文件,然后在结果窗口中单击classes.dex
以查看方法和方法参考的数量。
答案 1 :(得分:0)
请更新firebase依赖项
dependencies {
...
compile 'com.google.firebase:firebase-messaging:9.6.0'
...
}
apply plugin: 'com.google.gms.google-services'
希望有所帮助......