Android 互換パッケージについて学ぶために、単純な Hello World アプリを作成しています。アプリを 3.2 エミュレーターで実行することはできますが、2.3.3 エミュレーターで実行すると、
10-12 11:36:14.474: WARN/dalvikvm(469): Unable to resolve superclass of Lcom/example/MyActivity; (11)
10-12 11:36:14.564: WARN/dalvikvm(469): Link of class 'Lcom/example/MyActivity;' failed
10-12 11:36:14.564: DEBUG/AndroidRuntime(469): Shutting down VM
10-12 11:36:14.584: WARN/dalvikvm(469): threadid=1: thread exiting with uncaught exception (group=0x40015560)
10-12 11:36:14.624: ERROR/AndroidRuntime(469): FATAL EXCEPTION: main java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example/com.example.MyActivity}: java.lang.ClassNotFoundException: com.example.MyActivity in loader dalvik.system.PathClassLoader[/data/app/com.example-1.apk]
したがって、明らかに FragmentActivity (com.example.MyActivity のスーパー) を見つけることができません。理由はわかりません。
注意すべき点:
1) http://mobile.tutsplus.com/tutorials/android/android-compatibility-working-with-fragments/のチュートリアルに従っていますが、これはあまり完全ではありません。
2) maven を使用して、互換性パッケージを APK に正しくビルドしていると確信しています。jar をローカルの Maven リポジトリにインストールし、コンパイルで依存しています。正しくビルドしていなければ、3.2 エミュレーターでは動作しないと思います。
3) IntelliJ と maven-compiler-plugin でビルドしてみました。同じ結果です。
どんな助けでも大歓迎です。ありがとう。
編集...これがマニフェストです
<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="11" />
<uses-permission android:name="android.permission.INTERNET" />
<application android:label="@string/app_name" android:icon="@drawable/icon">
<activity android:name=".MyActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".TutViewerActivity"
android:label="@string/app_name" >
</activity>
</application>
<uses-sdk android:minSdkVersion="7" />
および MyActivity 定義
public class MyActivity extends FragmentActivity implements TutListFragment.OnTutSelectedListener