天天看點

Linux: 時間戳

開發中會存在如下情況,為了防止可能的改動錯誤,先将要改動的源碼備份,新代碼有問題時,再還原回原先OK的代碼。

如果此時選擇僅僅重新build而沒有clean,則實際上并沒有build原先的代碼。

而此時誤以為已經還原到原先的代碼,就會範很多很傻的錯誤 ...

這裡就是時間戳的問題:隻要目标檔案比依賴檔案(源檔案)新,那麼就不會重新編譯。

比如換回原先的代碼,然後執行mmm:

r[email protected]:~/Android/Source$ mmm packages/apps/Settings

============================================

PLATFORM_VERSION_CODENAME=REL

PLATFORM_VERSION=4.0.1

TARGET_PRODUCT=full

TARGET_BUILD_VARIANT=eng

TARGET_BUILD_TYPE=release

TARGET_BUILD_APPS=

TARGET_ARCH=arm

TARGET_ARCH_VARIANT=armv7-a

HOST_ARCH=x86

HOST_OS=linux

HOST_BUILD_TYPE=release

BUILD_ID=ITL41D

============================================

make: Entering directory `/home/rzzhang/Android/Source'

make: Nothing to be done for `all_modules'.

make: Leaving directory `/home/rzzhang/Android/Source'

咋辦?

要編譯的源碼裡随便找個源檔案,改一下,儲存,再改回去,OK,重新編譯:

r[email protected]:~/Android/Source$ mmm packages/apps/Settings

============================================

PLATFORM_VERSION_CODENAME=REL

PLATFORM_VERSION=4.0.1

TARGET_PRODUCT=full

TARGET_BUILD_VARIANT=eng

TARGET_BUILD_TYPE=release

TARGET_BUILD_APPS=

TARGET_ARCH=arm

TARGET_ARCH_VARIANT=armv7-a

HOST_ARCH=x86

HOST_OS=linux

HOST_BUILD_TYPE=release

BUILD_ID=ITL41D

============================================

make: Entering directory `/home/rzzhang/Android/Source'

target Java: Settings (out/target/common/obj/APPS/Settings_intermediates/classes)

Note: Some input files use or override a deprecated API.

Note: Recompile with -Xlint:deprecation for details.

Note: Some input files use unchecked or unsafe operations.

Note: Recompile with -Xlint:unchecked for details.

Copying: out/target/common/obj/APPS/Settings_intermediates/classes-jarjar.jar

Copying: out/target/common/obj/APPS/Settings_intermediates/emma_out/lib/classes-jarjar.jar

Copying: out/target/common/obj/APPS/Settings_intermediates/classes.jar

Copying: out/target/common/obj/APPS/Settings_intermediates/noproguard.classes.jar

target Dex: Settings

Copying: out/target/common/obj/APPS/Settings_intermediates/noproguard.classes.dex

target Package: Settings (out/target/product/generic/obj/APPS/Settings_intermediates/package.apk)

    (skipping backup file 'packages/apps/Settings/res/values/strings.xml~')

    (skipping backup file 'packages/apps/Settings/res/xml/sound_settings.xml~')

 'out/target/common/obj/APPS/Settings_intermediates//classes.dex' as 'classes.dex'...

Processing target/product/generic/obj/APPS/Settings_intermediates/package.apk

Done!

Install: out/target/product/generic/system/app/Settings.odex

Install: out/target/product/generic/system/app/Settings.apk

target Java: SettingsTests (out/target/common/obj/APPS/SettingsTests_intermediates/classes)

Note: Some input files use or override a deprecated API.

Note: Recompile with -Xlint:deprecation for details.

Copying: out/target/common/obj/APPS/SettingsTests_intermediates/classes-jarjar.jar

Copying: out/target/common/obj/APPS/SettingsTests_intermediates/emma_out/lib/classes-jarjar.jar

Copying: out/target/common/obj/APPS/SettingsTests_intermediates/classes.jar

Copying: out/target/common/obj/APPS/SettingsTests_intermediates/noproguard.classes.jar

target Dex: SettingsTests

Copying: out/target/common/obj/APPS/SettingsTests_intermediates/noproguard.classes.dex

target Package: SettingsTests (out/target/product/generic/obj/APPS/SettingsTests_intermediates/package.apk)

 'out/target/common/obj/APPS/SettingsTests_intermediates//classes.dex' as 'classes.dex'...

Processing target/product/generic/obj/APPS/SettingsTests_intermediates/package.apk

Done!

Install: out/target/product/generic/data/app/SettingsTests.odex

Install: out/target/product/generic/data/app/SettingsTests.apk

make: Leaving directory `/home/rzzhang/Android/Source'

(待繼續求證于驗證 ...)

繼續閱讀