【问题标题】:Android Studio Gradle Error after using @org.parceler.Parcel使用@org.parceler.Parcel 后的 Android Studio Gradle 错误
【发布时间】:2017-01-04 09:41:11
【问题描述】:

在我的两个应用程序类中使用以下行后:@org.parceler.Parcel,我得到了这个 Gradle 构建错误:

警告:忽略匿名内部类的 InnerClasses 属性 (org.parceler.apache.commons.collections.BeanMap$1) 没有出现 具有关联的 EnclosureMethod 属性。这堂课大概是 由不针对现代 .class 文件的编译器生成 格式。推荐的解决方案是从 源,使用最新的编译器并且不指定任何 “-target”类型选项。忽略此警告的后果是 此类上的反射操作将错误地指示 它不是一个内部类。

尽管如此,应用程序还是成功编译并运行。但是这个错误让我很恼火,因为我不知道它是否会导致应用崩溃。

我的 build.graddle(应用程序):

apply plugin: 'com.android.application'

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.1"

    defaultConfig {
        applicationId "com.my.app"
        minSdkVersion 9
        targetSdkVersion 24
        versionCode 26
        versionName "2.0.18"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    signingConfigs {
        release {
            storeFile file("omitted")
            storePassword "omitted"
            keyAlias "omitted"
            keyPassword "omitted"

        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'

    compile 'com.android.support:appcompat-v7:24.2.0'
    compile 'com.android.support:design:24.2.0'
    compile 'com.android.support:support-v4:24.2.0'
    compile 'com.readystatesoftware.sqliteasset:sqliteassethelper:2.0.1'
    compile 'com.android.support:preference-v7:24.2.0'
    // [START gms_compile]
    compile 'com.google.android.gms:play-services-analytics:9.4.0'
    // [END gms_compile]
    compile 'com.squareup.picasso:picasso:2.5.2'
    compile 'org.parceler:parceler:1.0.3'
    compile 'org.parceler:parceler-api:1.0.3'
    compile 'com.google.code.gson:gson:2.4'
    compile 'com.android.support:cardview-v7:24.2.0'
    compile 'com.android.support:recyclerview-v7:24.2.0'

}

apply plugin: 'com.google.gms.google-services'

【问题讨论】:

    标签: android android-studio gradle android-gradle-plugin build.gradle


    【解决方案1】:

    删除这一行

    compile 'org.parceler:parceler-api:1.0.3'
    

    【讨论】:

    • 谢谢,我删除了,但我得到了完全相同的错误消息。
    • 好的,你能恢复到旧的 api 级别 23,abd 一旦检查错误 id 是否仍然出现
    • 我刚开始恢复,但它变得非常混乱,因为我在源代码中调用了很多新 API。
    • 首先你恢复所有然后同步 n 哪个类丢失或错误来告诉我
    【解决方案2】:

    根据这个问题:https://github.com/johncarl81/parceler/issues/19

    答案是:

    您遇到了 dex 方法限制。与此库无关。

    您似乎应该在您的应用中启用multidex 以隐藏此警告。

    这可能会有所帮助:How to enable multidexing with the new Android Multidex support library

    【讨论】:

    • 我已经通过向 build.gradle 添加“multiDexEnabled true”来启用 multidex,但是 Gradle 错误仍然出现。你认为这样的构建错误会导致我的应用程序对最终用户崩溃吗?到目前为止,我的测试还可以。
    • 您确定已正确启用 Multidexing。您是否可能在初始化 Parceler 的课程中​​忘记了 MultiDex.install(getTargetContext());。如果我是你,我会在 Parceler 网站上打开新问题并检查答案。不,我认为它不会在用户手机上崩溃。
    • 类似问题:stackoverflow.com/questions/36592864/… - 答案是这种问题是安全的,可以忽略。您可以尝试更新您的支持库以隐藏此问题
    猜你喜欢
    • 2014-10-02
    • 1970-01-01
    • 2017-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    相关资源
    最近更新 更多