私の論文では、Androidフレームワークを変更し、ソース(4.1.1 Jelly Bean)を構築しています。フルビルドはできますが、これには非常に時間がかかるため(ubuntu 12.04 64ビット仮想マシンで開発しています)、個別のモジュールをビルドしたいと思います。
例:ロケーションモジュールに変更を加える場合、変更されたモジュールをビルドするだけで、新しいシステムイメージを作成できるはずです。
mmm frameworks/base
make snod
しかし、これは機能しません。起動しようとするたびに、次の理由で新しいシステムイメージが起動しません。
I/dalvikvm( 1696): DexOpt: mismatch dep signature for '/system/framework/framework.odex'
いくつかの調査の後、私は環境変数を使用してdexpreoptを無効にしようとしました
export $WITH_DEXPREOPT=false
と
export $DISABLE_DEXPREOPT=true
'makeinstallclean'を使用して完全な再構築を実行します。完全な再構築が機能し、フレームワークへの変更がビルドに存在します。しかし、新しい変更を行った後でも、「mmmフレームワーク/ベース」と「makesnod」はdexpreoptの不一致をもたらします。
'makesnod'のbuild/core / makefileにも警告が表示されます:'警告:dexpreoptが有効になっていると、完全な再構築が必要になる場合があります。'これはmakefileの次の行から取得されます。
ifeq (true,$(WITH_DEXPREOPT))
$(warning Warning: with dexpreopt enabled, you may need a full rebuild.)
endif
これにより、$ WITH_DEXPREOPT変数が正しく設定または読み取られていないと思いますか?これまでのところ、クリーンな完全再構築を行わずに起動可能なシステムイメージを取得することはできませんでした。dexpreoptを無効にするための正しい手順に従いますか、それともフレームワークに変更を加えて新しいシステムイメージを取得した後、個別のモジュールを構築する他の方法はありますか?
ビルドターゲットは「full-eng」です。