16

使用 Android Studio 构建 android 应用程序时出现此错误:

24192-24192/com.mkapp.apps.demo1 W/dalvikvm﹕ VFY: unable to find class referenced in signature (Landroid/os/PersistableBundle;)
08-20 10:53:23.605  24192-24192/com.mkapp.apps.demo1 I/dalvikvm﹕ Could not find method android.support.v7.app.AppCompatActivity.onCreate, referenced from method com.mkapp.apps.demo1.TourActivity.onCreate
08-20 10:53:23.605  24192-24192/com.mkapp.apps.demo1 W/dalvikvm﹕ VFY: unable to resolve virtual method 8393: Landroid/support/v7/app/AppCompatActivity;.onCreate (Landroid/os/Bundle;Landroid/os/PersistableBundle;)V
08-20 10:53:23.605  24192-24192/com.mkapp.apps.demo1 D/dalvikvm﹕ VFY: replacing opcode 0x6f at 0x0000

我的依赖:

    compile 'com.android.support:support-v4:22.2.1'
    compile 'com.google.android.gms:play-services:7.3.0'
    compile 'com.android.support:appcompat-v7:22.1.0+'
    compile 'com.android.support:multidex:1.0.1'

非常感谢您的帮助

从 AppcompatActivity 继承的旧活动工作正常。但如果我创建一个新的,它会得到错误。这是我的 gradle.build :

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.0"

    defaultConfig {
        applicationId "com.mkapp.apps.demo1"
        minSdkVersion 10
        targetSdkVersion 22
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_7
            targetCompatibility JavaVersion.VERSION_1_7
        }
        multiDexEnabled true
    }
    dexOptions {
        incremental true
        javaMaxHeapSize "4g"
    }
    packagingOptions {
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
    }
    lintOptions {
        checkReleaseBuilds false
        // Or, if you prefer, you can continue to check for errors in release builds,
        // but continue the build even when errors are found:
        abortOnError false
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile project(':photocollage')
    compile project(':gWFacebookSDK')
//    compile project(':listViewAnimation')
    compile 'com.google.android.gms:play-services:7.3.0'
    compile 'com.android.support:appcompat-v7:22.1.0'

    compile 'com.android.support:multidex:1.0.1'
    compile files('libs/aws-android-sdk-2.1.0-core.jar')
    compile files('libs/aws-android-sdk-2.1.0-sns.jar')
    compile files('libs/dexmaker-1.1.jar')
    compile files('libs/dexmaker-mockito-1.1-custom.jar')
//    compile files('libs/listviewanimations_lib-core_3.1.0.jar')
    compile files('libs/signpost-commonshttp4-1.2.1.1.jar')
    compile files('libs/signpost-core-1.2.1.1.jar')
    compile files('libs/signpost-jetty6-1.2.1.1.jar')
    compile files('libs/twitter4j-core-4.0.1.jar')
    compile files('libs/universal-image-loader-1.9.3.jar')
}
4

8 回答 8

16

您遇到此问题是因为您尝试使用onCreate (Bundle savedInstanceState, PersistableBundle persistentState),但此方法仅适用于 API 级别 21。

我可以在 Android 4.4 上使用此示例代码重现该问题:

public class TourActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState, new PersistableBundle());
    }

    @Override
    public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
        super.onCreate(savedInstanceState, persistentState);
    }
}

并且问题得到解决,消除了每次出现PersistableBundle

public class TourActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}

PersistableBundle检查您在哪里使用TourActivity并删除它或使用您的活动代码更新您的答案。

于 2015-08-27T16:25:55.300 回答
13

23将您的支持库更新compileSdkVersion23build.gradle 中。

compileSdkVersion 23

...

compile 'com.android.support:support-v4:23.0.0'
compile 'com.android.support:appcompat-v7:23.0.0'

然后将您的项目与 gradle 文件同步。

此外,Google Play 服务现已推出7.8.0

于 2015-08-23T08:51:21.647 回答
5

问题是您TourActivity使用的类只能从 API 级别 21 PersistableBundle获得。这里的问题是为什么要这样做。

请记住,您也必须继承新活动AppCompatActivity

快速提问,您是否在有问题的活动中压倒一切public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState)?如果您这样做,您可能正在保存PersistableBundle设备/模拟器中不可用的引用。如果您在那里什么都不做,请尝试删除它或评论它以尝试...

于 2015-08-27T14:03:40.030 回答
4

首先,将您的库更新到最新版本。接下来,清理并重建您的项目。

此外,如果这是您包含的库的完整列表:

    compile 'com.android.support:support-v4:22.2.1'
    compile 'com.google.android.gms:play-services:7.3.0'
    compile 'com.android.support:appcompat-v7:22.1.0+'
    compile 'com.android.support:multidex:1.0.1'

那么你实际上不需要包括这个

    compile 'com.android.support:multidex:1.0.1'
于 2015-08-23T08:21:05.440 回答
3

简单地说,转到文件->使缓存无效并重新启动。 谢谢

于 2018-06-15T12:06:09.033 回答
0

这是一个俗气的解决方案,但它实际上对我有用!我手动创建了缺少库的所需路径:

 C:\Users\spomerleau\AppData\Local\Android\Sdk\extras\android\support\v7\appcompat\libs

并从这里这里添加了两个丢失的 .jar 文件。Android studio 终于找到了执行 Java 所需的依赖。

于 2017-11-28T19:18:38.167 回答
0

1.只需更改您的依赖项以显示在 build.gradle--

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    testImplementation 'junit:junit:4.12'
    implementation 'com.android.support:support-v4:23.4.0'
    implementation 'com.android.support:appcompat-v7:23.4.0'
    implementation 'com.android.support:support-annotations:27.1.1'
}

2.然后它会显示同步gradle,然后同步build.gradle以更新更改。

于 2018-06-15T08:08:44.423 回答
-1

您需要 build.gradle像这样更改您的应用程序:

compile 'com.android.support:appcompat-v7:22.1.0+' 

compile 'com.android.support:appcompat-v7:20.0.0'
于 2015-08-29T07:55:43.000 回答