Elv*_*ira 8 java android google-api google-api-client
我正在开发一个使用GoogleAPIClient的应用程序(显然)在后台获取用户当前位置.
对于此任务,我将IntentService与WakefulBroadcastReceiver一起使用(每小时获取一次位置).一切都在开发环境中运行良好,但在Play商店中部署时,某些设备会收到此错误:
Fatal Exception: java.lang.NoClassDefFoundError: com/google/android/gms/internal/zzsa
at com.google.android.gms.common.api.GoogleApiClient$Builder.<init>(Unknown Source)
at tellerina.com.br.vivara.services.MyService.onHandleIntent(MyService.java:37)
at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:157)
at android.os.HandlerThread.run(HandlerThread.java:61)
Run Code Online (Sandbox Code Playgroud)
我在互联网上搜索了答案,但我没有找到任何答案.这是异常出现的点:
mGoogleApiClient = new GoogleApiClient.Builder(MyApplication.getContext())
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
Run Code Online (Sandbox Code Playgroud)
非常感谢!
编辑
app build.gradle
buildscript {
repositories {
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'io.fabric.tools:gradle:1.21.2'
}
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "app.package"
minSdkVersion 14
targetSdkVersion 22
versionCode 9
versionName "1.5.2"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
dexOptions {
javaMaxHeapSize "4g"
}
}
repositories {
mavenCentral()
maven { url 'https://maven.fabric.io/public' }
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile fileTree(dir: 'libs', include: ['*.so'])
compile(project(':volley')) {
exclude module: 'support-v4'
}
compile files('libs/commons-codec-1.9.jar')
compile('com.navercorp.volleyextensions:volley-views:2.0.+') {
exclude module: 'library'
}
compile('com.crashlytics.sdk.android:crashlytics:2.5.5@aar') {
transitive = true;
}
compile 'com.android.support:appcompat-v7:23+'
compile 'com.android.support:cardview-v7:23+'
compile 'com.android.support:recyclerview-v7:23+'
compile 'com.google.code.gson:gson:2.3.1'
compile 'io.card:android-sdk:5.1.1'
compile 'com.github.ksoichiro:androidpagecontrol:0.1.1'
compile 'me.relex:circleindicator:1.1.5@aar'
compile 'com.nineoldandroids:library:2.4.0'
compile 'com.daimajia.easing:library:1.0.1@aar'
compile 'com.daimajia.androidanimations:library:1.1.3@aar'
compile 'com.facebook.android:facebook-android-sdk:4.5.0'
compile 'br.com.jansenfelipe:androidmask:1.0.1'
compile 'com.google.android.gms:play-services:8.4.0'
compile 'com.android.support:multidex:1.0.0'
compile 'com.android.support:design:23+'
compile 'com.squareup.picasso:picasso:2.5.2'
}
apply plugin: 'com.google.gms.google-services'
Run Code Online (Sandbox Code Playgroud)
根项目build.gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.5.0'
classpath 'com.google.gms:google-services:+'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
Run Code Online (Sandbox Code Playgroud)
编辑2
使用Fabric,现在我可以看到受此问题影响的所有用户都在使用Android 4.x. 我不知道,Play服务的分发可能会被窃听.但它减少了具有此错误的设备数量.
你正在得到
致命异常:java.lang.NoClassDefFoundError:com/google/android/gms/internal/zzsa at com.google.android.gms.common.api.GoogleApiClient$Builder。(来源未知)
当 Java虚拟机在运行时无法找到编译时可用的特定类时,就会出现 Java 中的NoClassDefFoundError 错误。
老的
dependencies {
// classpath 'com.android.tools.build:gradle:1.5.0'
// classpath 'com.google.gms:google-services:+' //(Avoid Calling "+")
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
Run Code Online (Sandbox Code Playgroud)
GoogleApiClient 与多种静态方法一起使用。其中一些方法需要连接 GoogleApiClient,一些方法会在连接 GoogleApiClient 之前排队调用;
mGoogleApiClient = new GoogleApiClient.Builder(this)
Run Code Online (Sandbox Code Playgroud)
你应该尝试用你的build.gradle
顶级构建文件,您可以在其中添加所有子项目/模块通用的配置选项。
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.0.0-beta2'
classpath 'com.google.gms:google-services:2.0.0-beta2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
Run Code Online (Sandbox Code Playgroud)
可以打电话咨询
compile 'com.android.support:appcompat-v7:23.1.1'代替
v7:23+然后Clean-Rebuild-Restart-Sync Your Project。希望这有帮助。
编辑
Android 构建系统由 Gradle 的 Android 插件组成。Gradle 是一个高级构建工具包,可管理依赖项并允许您定义自定义构建逻辑。Android Studio 使用 Gradle 包装器来完全集成 Gradle 的 Android 插件。Gradle 的 Android 插件也独立于 Android Studio 运行。
插件就是任何实现 Plugin 接口的类。Gradle 提供了核心插件作为其发行版的一部分,因此您只需按上述方式应用插件即可。
使用 beta2 和 alpha-5 gradle 不会显示错误。但如果没有“应用插件:‘服务’”和‘类路径’,则不会为 GCM 生成 gcm_defaultSenderId
您可以检查获取实例 ID
您应该使用apply 插件。
| 归档时间: |
|
| 查看次数: |
2992 次 |
| 最近记录: |