Pourquoi j'obtiens cette erreur sur un standard Android Level 10 API? J'ai créé le plus simple, cas de test le plus court possible, je peux coller l'ensemble projet Android ci-dessous:Cas de test extrêmement simplifié pour UnsatisfiedLinkError sur java.lang.Package.getDeclaredAnnotations
E/AndroidRuntime( 406): java.lang.UnsatisfiedLinkError: getDeclaredAnnotations
E/AndroidRuntime( 406): at java.lang.Package.getDeclaredAnnotations(Native Method)
E/AndroidRuntime( 406): at java.lang.Package.getDeclaredAnnotations(Package.java:107)
E/AndroidRuntime( 406): at com.foobar.android.heartbeat.CustomAppWidgetProvider.onEnabled(CustomAppWidgetProvider.java:15)
E/AndroidRuntime( 406): at android.appwidget.AppWidgetProvider.onReceive(AppWidgetProvider.java:73)
1. AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.foobar.android.cannotate"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="10" />
<application>
<receiver android:name="com.foobar.android.cannotate.CustomAppWidgetProvider">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/custom_app_widget_provider_info" />
</receiver>
</application>
</manifest>
2. src/com/foobar/android/cannotate/CustomAppWidgetProvider.java`
package com.foobar.android.heartbeat;
import java.lang.annotation.Annotation;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.util.Log;
public class CustomAppWidgetProvider extends AppWidgetProvider {
@Override
public void onEnabled (Context context) {
super.onEnabled(context);
Log.d(getClass().getCanonicalName(), "about to get annotations");
Annotation [] annotations = CustomAppWidgetProvider.class.getPackage().getDeclaredAnnotations();
Log.d(getClass().getCanonicalName(), "annotations.length = " + annotations.length);
}
}
3. res/xml/custom_app_widget_provider_info.xml
<?xml version="1.0" encoding="utf-8"?>
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:initialLayout="@layout/custom_app_widget"
>
</appwidget-provider>
4. res/layout/custom_app_widget.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<TextView
android:id="@+id/value"
android:text="@string/empty"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</FrameLayout>
5. res/valeurs/strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="empty">-</string>
</resources>
Merci. Cela n'arrivera-t-il pas sur Android 4.x compte tenu de la récente correction pour retourner un tableau vide (par votre lien)? S'il vous plaît noter que je ne souhaite pas utiliser les annotations de paquet et je suis heureux si Android retourne un tableau vide. C'est juste le gonflement qui est le problème et je me demande si Android 4.x ne va pas exploser? – necromancer
@agksmehx - Je ne peux pas répondre à la question sur Android 4.x. Mais si vous ne voulez pas vraiment utiliser la méthode, vous devriez peut-être changer le code pour supprimer les appels ... –
c'est une bibliothèque donc il est difficile de supprimer les appels – necromancer