Je reçois cette erreur lors de la création d'une application Android avec 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
mes dépendances:
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'
merci beaucoup pour votre aide
les anciennes activités héritées d'AppcompatActivity fonctionnent correctement. mais si j'en crée un nouveau, l'erreur se produit . voici mon 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')
}
Vous avez ce problème car vous essayez d'utiliser onCreate (Bundle savedInstanceState, PersistableBundle persistentState) , mais cette méthode n'est disponible qu'à partir du niveau 21 de l'API.
Je suis capable de reproduire le problème avec cet exemple de code sur 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);
}
}
Et le problème est résolu en supprimant chaque occurrence de PersistableBundle
:
public class TourActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
Vérifiez où vous utilisez PersistableBundle
dans votre TourActivity
et supprimez-le ou mettez à jour votre réponse avec le code de votre activité.
Mettez à jour votre bibliothèque de support avec 23
et votre compileSdkVersion
en 23
dans build.gradle.
compileSdkVersion 23
...
compile 'com.Android.support:support-v4:23.0.0'
compile 'com.Android.support:appcompat-v7:23.0.0'
Synchronisez ensuite votre projet avec les fichiers Gradle.
En outre, les services Google Play sont maintenant 7.8.0
Le problème est que votre TourActivity
utilise une classe disponible uniquement à partir de l'API de niveau 21 PersistableBundle . La question ici est pourquoi fait cela.
N'oubliez pas que votre nouvelle activité doit également hériter de AppCompatActivity
.
Question rapide, remplacez-vous public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState)
dans l'activité problématique? Si vous le faites, vous enregistrez probablement une référence à PersistableBundle
qui n'est pas disponible dans le périphérique/émulateur. Essayez de l'enlever si vous ne faites rien ici ou commentez-le pour essayer ...
Tout d'abord, mettez à jour vos bibliothèques avec les dernières versions ..__ Ensuite, nettoyez et reconstruisez votre projet.
De plus, s'il s'agit d'une liste complète des bibliothèques que vous incluez:
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'
alors vous n'avez pas besoin d'inclure celui-ci
compile 'com.Android.support:multidex:1.0.1'
Simplement , Goto the File -> Invalidate Caches and Restart.Merci
Voici une solution ringarde, mais elle a vraiment fonctionné pour moi! J'ai créé manuellement le chemin nécessaire vers la bibliothèque manquante:
C:\Users\spomerleau\AppData\Local\Android\Sdk\extras\Android\support\v7\appcompat\libs
et ajouté les deux fichiers .jar manquants de ici et ici . Le studio Android a finalement trouvé les dépendances nécessaires à l'exécution de Java.
1.Il suffit de changer vos dépendances pour présenter dans le 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.Ensuite, il indiquera de synchroniser gradation, puis de synchroniser build.gradle pour mettre à jour les modifications.