参照されたライブラリを Android-Eclipse で動作させる方法に関する無数の投稿を読んだ後、提供されたサンプル tic-tac-toe の実行に失敗したことを宣言する必要があります。 )
- まず、作成した TicTacToeLib を Eclipse に
インポートしました (File->New->Other->Android->Android sample project->TicTacToeLib)。 - 次に、作成した TicTacToeMain を Eclipse に
インポートします ([ファイル] -> [新規] -> [その他] -> [Android] -> [Android サンプル プロジェクト] -> [TicTacToeMain])。 - ライブラリ プロジェクトをセットアップして参照する方法については、 Android デベロッパー サイトの手順に従ってください。
ここで最初の障害に遭遇します。これは、一方ではサイトが使用する必要があると述べているためですが、 TicTacToeMain<user-library>
の例のマニフェストには要素が含まれていません。
いずれにせよ、例は実行されません。 <uses-library>
要素がない<user-library>
と、プロジェクトはコンパイルさえしません:
tictactoelib.jar をビルド パスに手動で追加すると ( Add JARs...
)、これはAndroid 開発者ページの指示された手順の一部ではありませんが、エラーは消え、警告のみが残ります。アプリの実行は失敗して終了します ("残念ながら Tic Tac Toe サンプルは停止しました"):
04-08 16:05:24.762: E/dalvikvm(3741): Could not find class 'com.example.android.tictactoe.library.GameActivity', referenced from method com.example.android.tictactoe.MainActivity.startGame
04-08 16:05:24.762: W/dalvikvm(3741): VFY: unable to resolve const-class 17 (Lcom/example/android/tictactoe/library/GameActivity;) in Lcom/example/android/tictactoe/MainActivity;
04-08 16:05:24.767: D/dalvikvm(3741): VFY: replacing opcode 0x1c at 0x0002
04-08 16:05:24.877: V/PhoneStatusBar(166): setLightsOn(true)
04-08 16:05:24.937: D/gralloc_goldfish(3741): Emulator without GPU emulation detected.
04-08 16:05:25.017: I/Process(89): Sending signal. PID: 3741 SIG: 3
04-08 16:05:25.027: I/dalvikvm(3741): threadid=3: reacting to signal 3
04-08 16:05:25.037: I/dalvikvm(3741): Wrote stack traces to '/data/anr/traces.txt'
04-08 16:05:25.058: I/ActivityManager(89): Displayed com.example.android.tictactoe/.MainActivity: +1s368ms
04-08 16:05:25.317: W/NetworkManagementSocketTagger(89): setKernelCountSet(10013, 0) failed with errno -2
04-08 16:05:27.857: D/AndroidRuntime(3741): Shutting down VM
04-08 16:05:27.857: W/dalvikvm(3741): threadid=1: thread exiting with uncaught exception (group=0x409c01f8)
04-08 16:05:27.918: E/AndroidRuntime(3741): FATAL EXCEPTION: main
04-08 16:05:27.918: E/AndroidRuntime(3741): java.lang.NoClassDefFoundError: com.example.android.tictactoe.library.GameActivity
04-08 16:05:27.918: E/AndroidRuntime(3741): at com.example.android.tictactoe.MainActivity.startGame(MainActivity.java:51)
04-08 16:05:27.918: E/AndroidRuntime(3741): at com.example.android.tictactoe.MainActivity.access$0(MainActivity.java:50)
04-08 16:05:27.918: E/AndroidRuntime(3741): at com.example.android.tictactoe.MainActivity$1.onClick(MainActivity.java:38)
04-08 16:05:27.918: E/AndroidRuntime(3741): at android.view.View.performClick(View.java:3511)
04-08 16:05:27.918: E/AndroidRuntime(3741): at android.view.View$PerformClick.run(View.java:14105)
次の行を TicTacToeMain マニフェストに追加します。
<uses-library android:name="com.example.android.tictactoe.library"/>
アプリを起動しません:
[2013-04-08 19:13:03 - TicTacToeMain] Android Launch!
[2013-04-08 19:13:03 - TicTacToeMain] adb is running normally.
[2013-04-08 19:13:03 - TicTacToeMain] Performing com.example.android.tictactoe.MainActivity activity launch
[2013-04-08 19:13:03 - TicTacToeMain] Automatic Target Mode: using existing emulator 'emulator-5554' running compatible AVD 'Smartphone_ics'
[2013-04-08 19:13:03 - TicTacToeMain] Uploading TicTacToeMain.apk onto device 'emulator-5554'
[2013-04-08 19:13:03 - TicTacToeMain] Installing TicTacToeMain.apk...
[2013-04-08 19:13:06 - TicTacToeMain] Installation error: INSTALL_FAILED_MISSING_SHARED_LIBRARY
[2013-04-08 19:13:06 - TicTacToeMain] Please check logcat output for more details.
[2013-04-08 19:13:06 - TicTacToeMain] Launch canceled!
私は他のことを試しましたが、どれも問題を解決しませんでした:
- ターゲットの TicTacToeMain バージョンを 15 から 10 に変更しました
- TicTacToeLib をユーザー ライブラリとしてビルド パスに追加しました
- TicTacToeMain 用の libs フォルダーを作成し、tictactoelib.jar をコピーしましたが、解決せず、Import を使用して tictactoelib.jar をインポートしました...、シュガーなし
このサンプルを機能させたい理由は、参照ライブラリの仕組みを理解することに加えて、多くの参照ライブラリを使用して複雑なアプリを作成したいからです。このばかげたサンプルを機能させることができなければ、に。
もう 1 点、参照ライブラリ プロジェクトを TicTacToeMain に追加します。
くっつかないので、Apply
指示通りに押してからOK
. しかし、プロジェクトのプロパティを再度開くと (実行もコンパイルもせず、再度開くだけです):
これが本当の症状かもしれませんが、他に何を試すべきかわかりません。私は Eclipse 4.2.1、Android SDK 21.1、Java IDE 1.5.1 を使用しています。
ターゲット Java 準拠レベルは 1.6
です。いくつかの AVD エミュレーターを試しましたが、すべて同じ問題を示しています。