私はEclipseでAndroidアプリケーションを数か月開発しています。最近、ソースに変更を加えてからCtrl + F11を押して物理デバイスでアプリケーションを実行するという問題が発生しましたが、最近の変更は反映されていません。私の知る限り、コードはコンパイルされていますが、APKに再パッケージ化されていません。
私はlibGDXを使用しているので、私のAndroidアプリは、実際にはAndroidプロジェクトとプラットフォームに依存しないビット(およびlibGDXライブラリ)の2つのプロジェクトで構成されています。Androidプロジェクトには、(Javaビルドパス設定の)「プロジェクト」として一般的なプロジェクトが含まれています。
Android固有ではない一般的なコードの一部に変更を加えると、「コンソール」ログに示されているように、Androidプロジェクトのビルダーが変更を「認識」していると思います(Window -> Preferences -> Android -> Build: Build Output
設定でVerboseビルドを有効にしたため)。
[2012-07-23 13:42:04 - Project - Android] Starting incremental Package build: Checking resource changes.
[2012-07-23 13:42:04 - Project - Android] Skipping over Post Compiler.
(「プロジェクト-Android」は、プロジェクトのAndroid固有の部分の名前です。)
変更を加えた後にAndroidビルドを実行しようとすると、「変更を加えていません」という警告が表示されます(したがって、既存のインスタンスを強制終了して新しいコードを起動するのではなく、デバイス上で転送します)。
[2012-07-23 13:46:44 - Project - Android] Application already deployed. No need to reinstall.
ビルド()を明示的にクリーンアップするProject -> Clean
と、行った変更がすべて組み込まれ、結果のAndroidプロジェクトがそれらの変更とともにデプロイされます。したがって、基本的なパスとビルドインフラストラクチャは正しく機能していると思います。それは、増分更新で何かが正しくないということだけです。Project -> Build Automatically
私がチェックしたことに注意してください。
「デスクトップ」バージョン(Androidバージョンと同様ですが、共通コードを含む3番目のプロジェクト)をビルドすると、共通コードへの変更後にインクリメンタルビルドが機能します。したがって、問題はビルドシステムのAndroid固有の部分にあるようです(多分?)。
ビルドシステムが何を再ビルドする必要があるかを決定する方法についての詳細を取得するために見ることができるログはありますか?
私はEclipseIndigoを使用しています:
Eclipse IDE for Java Developers
Version: Indigo Service Release 2
Build id: 20120216-1857
最新のAndroidSDK(SDKツールrev 20、SDK 16に対してコンパイル)を使用しています。
アップデート
他のlibGDXユーザーはこれをSDKv20に絞り込みました:http ://www.badlogicgames.com/forum/viewtopic.php?f = 11&t = 4627&hilit = build + project +linked
そして、libGDXフォーラムの人々のおかげで、グーグルにバグが提出されました:http://code.google.com/p/android/issues/detail?id= 34305(重複:
http:// code .google.com / p / android / issues / detail?id = 36174)