在AAR中找不到类

恶魔

调用GoogleApiAvailability时,我的Android库(aar)中出现类未找到异常的情况。

    Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.common.GoogleApiAvailability" on path: DexPathList[[zip file "/data/app/com.myunityplugin.PushNotifications-1/base.apk"],nativeLibraryDirectories=[/data/app/com.myunityplugin.PushNotifications-1/lib/arm, /vendor/lib, /system/lib]]

该错误是不言自明的,但是我不确定自己在做什么错。我对gradle和AndroidStudio很陌生。

我的gradle.build中有以下依赖项:

    compile 'com.google.android.gms:play-services:8.4.0'
    compile 'com.google.android.gms:play-services-gcm:8.4.0'

我认为问题在于play-services库需要包含在aar中,而compile不能做到这一点。我尝试使用“运行时”,但出现“找不到渐变dsl运行时”。

问题:

  1. 这是我需要在我的aar中包含play-services库的问题吗,我该如何实现?(如果没有,我该如何解决这个问题)
  2. 我需要指定play-services还是play-services-gcm就足够了?

错误信息/设置

导致错误的行

GoogleApiAvailability ServiceAvailability = GoogleApiAvailability.getInstance();

例外:

05-23 05:38:48.221 28055-28055/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.myunityplugin.PushNotifications, PID: 28055
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/common/GoogleApiAvailability;
   at com.myplugin.unitynotification.GCM.GCM.checkPlayServices(GCM.java:33)
   at com.myplugin.unitynotification.GCM.MainActivity.onCreate(MainActivity.java:80)
   at android.app.Activity.performCreate(Activity.java:6550)
   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1120)
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3108)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3263)
   at android.app.ActivityThread.access$1000(ActivityThread.java:197)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1687)
   at android.os.Handler.dispatchMessage(Handler.java:102)
   at android.os.Looper.loop(Looper.java:145)
   at android.app.ActivityThread.main(ActivityThread.java:6897)
   at java.lang.reflect.Method.invoke(Native Method)
   at java.lang.reflect.Method.invoke(Method.java:372)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.common.GoogleApiAvailability" on path: DexPathList[[zip file "/data/app/com.myunityplugin.PushNotifications-1/base.apk"],nativeLibraryDirectories=[/data/app/com.myunityplugin.PushNotifications-1/lib/arm, /vendor/lib, /system/lib]]
   at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
   at com.myplugin.unitynotification.GCM.GCM.checkPlayServices(GCM.java:33) 
   at com.myplugin.unitynotification.GCM.MainActivity.onCreate(MainActivity.java:80) 
   at android.app.Activity.performCreate(Activity.java:6550) 
   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1120) 
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3108) 
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3263) 
   at android.app.ActivityThread.access$1000(ActivityThread.java:197) 
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1687) 
   at android.os.Handler.dispatchMessage(Handler.java:102) 
   at android.os.Looper.loop(Looper.java:145) 
   at android.app.ActivityThread.main(ActivityThread.java:6897) 
   at java.lang.reflect.Method.invoke(Native Method) 
   at java.lang.reflect.Method.invoke(Method.java:372) 
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404) 
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199) 
    Suppressed: java.lang.ClassNotFoundException: com.google.android.gms.common.GoogleApiAvailability
   at java.lang.Class.classForName(Native Method)
   at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
   at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
        ... 16 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available

应用程序级别build.gradle

apply plugin: 'com.android.library'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        minSdkVersion 19
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.2.1'
    compile 'com.google.android.gms:play-services:8.4.0'
    compile 'com.google.android.gms:play-services-gcm:8.4.0'
    provided files('lib-not-include/classes.jar')
}

项目级gradle.build

// 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'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
加布里埃·马里奥蒂

AAR文件不包含嵌套(或传递)的依赖关系,并且不具有其描述库所使用的依赖关系的POM文件。

这意味着,如果要使用存储库导入aar文件,则flatDir还必须在项目中指定依赖项。

您应该使用Maven存储库(您必须在私有或公共Maven存储库中发布库),不会遇到相同的问题。
在这种情况下,gradle使用pom文件下载依赖项,该文件将包含依赖项列表。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Laravel中找不到类

来自分类Dev

在类路径中找不到类:(ClassName)

来自分类Dev

在类ObjectRepository中找不到方法“ QueryBuilder”

来自分类Dev

Junit(JAVA)中找不到类异常

来自分类Dev

在Laravel中找不到'Memcached'类

来自分类Dev

在我的Async类中找不到方法

来自分类Dev

在laravel中找不到html类

来自分类Dev

在类库中找不到ConfigurationManager

来自分类Dev

在Java中找不到主类?

来自分类Dev

Laravel中找不到表单类

来自分类Dev

在类库中找不到ConfigurationManager

来自分类Dev

在Spark流中找不到KafkaUtils类

来自分类Dev

在NetBeans中找不到主类

来自分类Dev

在JUnit 4.11中找不到类

来自分类Dev

在Android Studio中找不到符号类

来自分类Dev

在WildFly中找不到Nashorn类

来自分类Dev

在PHP 5.5.11中找不到类'COM'

来自分类Dev

Rails在模块中找不到类

来自分类Dev

在类中找不到Codeigniter方法

来自分类Dev

在PHP 7.0.1中找不到Finfo类

来自分类Dev

在ForkJoinPool Java中找不到JAXB类

来自分类Dev

在关系查询中找不到xx类

来自分类Dev

在Laravel中找不到验证请求类

来自分类Dev

在类路径中找不到功能:/ cucumberOptions

来自分类Dev

在ForkJoinPool Java中找不到JAXB类

来自分类Dev

android中找不到类异常

来自分类Dev

在代理中找不到类“实体\用户”

来自分类Dev

在joomla中找不到TCPDF类

来自分类Dev

致命错误:在中找不到类“ 2”