Ошибка AppcompatActivity с Android studio

Я получаю эту ошибку при создании приложения android с Android studio:

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')
}

9 ответов


у вас есть эта проблема, потому что вы пытаетесь использовать 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 и удалите его или обновите свой ответ с помощью код вашей деятельности.


обновите библиотеку поддержки до 23 и свой compileSdkVersion to 23 в build.градля.

compileSdkVersion 23

...

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

затем синхронизируйте проект с файлами gradle.

кроме того, Google Play Services теперь 7.8.0


проблема в том, что ваш TourActivity использует класс, доступный только с уровня API 21 PersistableBundle. Вопрос в том, почему это происходит.

помните, что новая деятельность должна наследовать от AppCompatActivity Как хорошо.

быстрый вопрос, вы переопределение public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) в проблемной деятельности? Если вы это делаете, вы, вероятно, сохраняете ссылку на PersistableBundle который недоступен в устройстве / эмуляторе. Попробуйте удалить его, если вы не делаете ничего нет или прокомментировать его попробовать...


во-первых, обновите библиотеки до последних версий. Затем очистите и перестройте свой проект.

кроме того, если это полный список библиотек, которые вы включаете:

    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'

вот дрянное решение, но оно действительно сработало для меня ! Я вручную создал необходимый путь к отсутствующей библиотеке:

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

и добавил два недостающих .файлы jar из здесь и здесь. Android studio наконец-то нашла зависимости, необходимые для выполнения Java.


просто , перейти на ->аннулировать кэш и перезапустить. Спасибо


1.Просто измените свои зависимости, чтобы представить их в сборке.градля--

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, а затем синхронизировать сборку.gradle для обновления изменений.


у меня была такая ошибка, и если вы хотите решить, вы должны изменить вот так

compileSdkVersion 22 

и

compile 'com.android.support:appcompat-v7:22.0.0'

вам нужно изменить свое приложение build.gradle такой:

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

to

compile 'com.android.support:appcompat-v7:20.0.0'