爲什麼我在standard Android Level 10 API上收到此錯誤?我創建了最簡單,最短的測試案例,所以我可以粘貼如下整個 Android項目:針對java.lang.Package.getDeclaredAnnotations的UnsatisfiedLinkError的極簡化測試案例
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)
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 /佈局/ 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 /值/ strings.xml中
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="empty">-</string>
</resources>
謝謝。鑑於最近修復返回一個空數組(根據您的鏈接),這會不會發生在Android 4.x上?請注意,我不希望使用包註釋,如果Android返回空數組,我很高興。這只是爆炸是問題,我不知道Android 4.x會不會爆炸? – necromancer 2011-12-23 01:42:49
@agksmehx - 我無法回答有關Android 4.x的問題。但如果你實際上不想使用該方法,也許你應該改變代碼來刪除調用... – 2011-12-23 01:45:39
這是一個庫,所以很難刪除調用 – necromancer 2011-12-23 02:16:53