私の論文では、アンドロイドフレームワークを修正し、ソース(4.1.1 Jelly Bean)を作成しています。 私は完全なビルドを行うことができますが、これは非常に時間がかかるため(私はubuntu 12.04 64bit仮想マシンで開発しています)、私は別々のモジュールを作りたいと思います。例えばdexpreoptを無効にして別のAndroidモジュールを構築する
:
mmm frameworks/base
make snod
しかし、これは動作しません:場所モジュールへの変更を行う場合 、それだけで変更されたモジュールを構築し、新しいシステムイメージを作成することが可能です。私は起動しようとするたびに、新しいシステムイメージが原因で起動しません。いくつかの研究の後
I/dalvikvm(1696): DexOpt: mismatch dep signature for '/system/framework/framework.odex'
、私は的環境変数
export $WITH_DEXPREOPT=false
と
export $DISABLE_DEXPREOPT=true
でdexpreoptを無効にしてみました
'make installclean'で完全再構築してください。完全な再構築が機能し、フレームワークの変更がビルドに存在します。しかし、新しい変更を行った後でも、まだ 'mmm frameworks/base'と 'snod'がdexpreoptの不一致を引き起こします。 「警告::dexpreoptを有効にして、あなたは完全な再構築が必要な場合があります。」、メイクファイルに次の行から来ている:
ifeq (true,$(WITH_DEXPREOPT))
$(warning Warning: with dexpreopt enabled, you may need a full rebuild.)
endif
は「snodを作る」からビルド/コア/メイクも警告を与えます
これは、$ WITH_DEXPREOPT変数が正しく設定または読み取られていないと考えていますか? これまでのところ、完全な再構築を行わずに起動可能なシステムイメージを取得することはできませんでした。 dexpreoptを無効にする手順は正しいですか、フレームワークを変更して新しいシステムイメージを取得した後に別のモジュールをビルドする方法はありますか?
ビルドターゲットは 'full-eng'です。
make showcommands WITH_DEXPREOPT=false
:どうやらWITH_DEXPREOPT環境変数がこれをfalseに変更するか、Googleグループの人々によると、でメイクを開始
build/target/board/generic/BoardConfig.mk
に内部WITH_DEXPREOPT変数によって上書きされ
ありがとう!何らかの理由で、クリーンな再構築後でも、ソースコードの変更がエミュレータに反映されていませんでした。 make clean後に変数を設定し、インストールを修正しました。しかし、コードをもう一度変更してmmm framework/baseを使ってsnodを作った時、エミュレータは起動しませんでした。(これは "アンドロイド"画面で止まっていました)。 make showcommands WITH_DEXPREOPT = falseを使用してビルドするか、変更を加えるたびにWITH_DEXPREOPT = falseを使用しましたか? –
make showcommands WITH_DEXPREOPT = falseコマンドを使用してテストしませんでした。 mkを行い、きれいにして完全に再構築しました。この点から、例えば、Locationモジュールは、 'mmm frameworks/base'と 'make snod'の後にビルドで永続化されました。エミュレータが起動しない場合は、 'adb logcat'を使って問題を特定してください。 – b74ckb1rd