Ошибка AppcompatActivity с Android-студией
Я получаю эту ошибку при создании приложения для Android в студии 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')
}
Ответы
Ответ 1
У вас есть эта проблема, потому что вы пытаетесь использовать 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
, и удалите его или обновите свой ответ кодом вашего действия.
Ответ 2
Обновите свою библиотеку поддержки до 23
и compileSdkVersion
до 23
в файле build.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
Ответ 3
Проблема в том, что ваш TourActivity
использует класс, доступный только с уровня API 21 PersistableBundle. Вопрос в том, почему это делается.
Помните, что новая активность должна также наследоваться от AppCompatActivity
.
Быстрый вопрос: вы переопределяете public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState)
в проблемной деятельности? Если вы это делаете, вы, вероятно, сохраняете ссылку на PersistableBundle
, которая недоступна в устройстве/эмуляторе. Попробуйте удалить его, если вы ничего не делаете и не комментируете его, чтобы попробовать...
Ответ 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'
Ответ 5
Здесь дрянное решение, но это действительно сработало для меня! Я вручную создал необходимый путь к отсутствующей библиотеке:
C:\Users\spomerleau\AppData\Local\Android\Sdk\extras\android\support\v7\appcompat\libs
и добавил два отсутствующих файла .jar из здесь и здесь. Студия Android наконец обнаружила зависимости, необходимые для выполнения Java.
Ответ 6
У меня была такая ошибка, и если вы хотите решить, вы должны изменить это как
compileSdkVersion 22
и
compile 'com.android.support:appcompat-v7:22.0.0'
Ответ 7
Вам нужно изменить приложение build.gradle
следующим образом:
compile 'com.android.support:appcompat-v7:22.1.0+'
к
compile 'com.android.support:appcompat-v7:20.0.0'