Hi,
I am trying to build the Android Lollipop images for Freescale imx6 sabre-sd board. The build gets successfully completed as mentioned in the Freescale documentation.
Now, I want to compile the user build with "make WITH_DEXPREOPT=true" so as to enable pre-optimization of system apps. Enabling this option builds the odex/oat files in /system/app folder , rather than the using the /data/dalvik-cache on first boot.
However, I am getting build errors after enabling the WITH_DEXPREOPT option.
The build gets completed successfully for a Lollipop Nexus device with the same option enabled.
Following is a snippet of the error logs on imx6 sabresd board:
===============================================================================
Copy: out/target/product/sabresd_6dq/root/fstab.freescale
dex2oatd I 9111 9111 art/dex2oat/dex2oat.cc:1239] out/host/linux-x86/bin/dex2oatd --runtime-arg -Xms64m --runtime-arg -Xmx512m --boot-image=out/target/product/sabresd_6dq/dex_bootjars/system/framework/boot.art --dex-file=out/target/product/sabresd_6dq/obj/APPS/A2dpSinkApp_intermediates/arm/package.odex.input --dex-location=/system/app/A2dpSinkApp/A2dpSinkApp.apk --oat-file=out/target/product/sabresd_6dq/obj/APPS/A2dpSinkApp_intermediates/arm/package.odex --android-root=out/target/product/sabresd_6dq/system --instruction-set=arm --instruction-set-features=default --include-patch-information --runtime-arg -Xnorelocate --no-include-debug-symbols
dex2oatd E 9111 9111 art/runtime/gc/heap.cc:421] 0x5742a778
dex2oatd F 9111 9111 art/runtime/gc/heap.cc:422] There's a gap between the image space and the main space
dex2oatd F 9111 9111 art/runtime/runtime.cc:284] Runtime aborting...
dex2oatd F 9111 9111 art/runtime/runtime.cc:284] (Aborting thread was not attached to runtime!)
dex2oatd F 9111 9111 art/runtime/runtime.cc:284] native: #00 pc 00006a22 /home/hscuser/Lollipop/out/host/linux-x86/lib/libbacktrace_libc++.so (UnwindCurrent::Unwind(unsigned int, ucontext*)+82)
dex2oatd F 9111 9111 art/runtime/runtime.cc:284] native: #01 pc 00004141 /home/hscuser/Lollipop/out/host/linux-x86/lib/libbacktrace_libc++.so (Backtrace::Unwind(unsigned int, ucontext*)+33)
dex2oatd F 9111 9111 art/runtime/runtime.cc:284] native: #02 pc 0036f699 /home/hscuser/Lollipop/out/host/linux-x86/lib/libartd.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, int, char const*, art::mirror::ArtMethod*)+121)
dex2oatd F 9111 9111 art/runtime/runtime.cc:284] native: #03 pc 0033a9ad /home/hscuser/Lollipop/out/host/linux-x86/lib/libartd.so (art::AbortState::Dump(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)+301)
dex2oatd F 9111 9111 art/runtime/runtime.cc:284] native: #04 pc 0033a879 /home/hscuser/Lollipop/out/host/linux-x86/lib/libartd.so (art::Dumpable<art::AbortState>::Dump(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) const+41)
dex2oatd F 9111 9111 art/runtime/runtime.cc:284] native: #05 pc 003394f8 /home/hscuser/Lollipop/out/host/linux-x86/lib/libartd.so (std::__1::basic_ostream<char, std::__1::char_traits<char> >& art::operator<<<art::AbortState>(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, art::Dumpable<art::AbortState> const&)+40)
dex2oatd F 9111 9111 art/runtime/runtime.cc:284] native: #06 pc 003329e8 /home/hscuser/Lollipop/out/host/linux-x86/lib/libartd.so (art::Runtime::Abort()+168)
dex2oatd F 9111 9111 art/runtime/runtime.cc:284] native: #07 pc 000f6209 /home/hscuser/Lollipop/out/host/linux-x86/lib/libartd.so (art::LogMessage::~LogMessage()+393)
dex2oatd F 9111 9111 art/runtime/runtime.cc:284] native: #08 pc 001eb8bb /home/hscuser/Lollipop/out/host/linux-x86/lib/libartd.so (art::gc::Heap::Heap(unsigned int, unsigned int, unsigned int, unsigned int, double, double, unsigned int, unsigned int, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, art::InstructionSet, art::gc::CollectorType, art::gc::CollectorType, unsigned int, unsigned int, bool, unsigned int, unsigned int, bool, bool, bool, bool, bool, bool, bool, bool, bool, unsigned long long)+5707)
dex2oatd F 9111 9111 art/runtime/runtime.cc:284] native: #09 pc 00333202 /home/hscuser/Lollipop/out/host/linux-x86/lib/libartd.so (art::Runtime::Init(std::__1::vector<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void const*>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void const*> > > const&, bool)+1298)
dex2oatd F 9111 9111 art/runtime/runtime.cc:284] native: #10 pc 00332cbd /home/hscuser/Lollipop/out/host/linux-x86/lib/libartd.so (art::Runtime::Create(std::__1::vector<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void const*>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void const*> > > const&, bool)+93)
dex2oatd F 9111 9111 art/runtime/runtime.cc:284] native: #11 pc 0001ea1a /home/hscuser/Lollipop/out/host/linux-x86/bin/dex2oatd (art::Dex2Oat::CreateRuntime(std::__1::vector<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void const*>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void const*> > > const&, art::InstructionSet)+42)
dex2oatd F 9111 9111 art/runtime/runtime.cc:284] native: #12 pc 0001655f /home/hscuser/Lollipop/out/host/linux-x86/bin/dex2oatd (art::Dex2Oat::Create(art::Dex2Oat**, std::__1::vector<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void const*>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void const*> > > const&, art::CompilerOptions const&, art::Compiler::Kind, art::InstructionSet, art::InstructionSetFeatures, art::VerificationResults*, art::DexFileToMethodInlinerMap*, unsigned int)+143)
dex2oatd F 9111 9111 art/runtime/runtime.cc:284] native: #13 pc 00010290 /home/hscuser/Lollipop/out/host/linux-x86/bin/dex2oatd (art::dex2oat(int, char**)+11296)
dex2oatd F 9111 9111 art/runtime/runtime.cc:284] native: #14 pc 0000d660 /home/hscuser/Lollipop/out/host/linux-x86/bin/dex2oatd (main+32)
dex2oatd F 9111 9111 art/runtime/runtime.cc:284] native: #15 pc 000194d2 /lib/i386-linux-gnu/libc-2.15.so (__libc_start_main+242)
dex2oatd F 9111 9111 art/runtime/runtime.cc:284] native: #16 pc 0000ccc0 /home/hscuser/Lollipop/out/host/linux-x86/bin/dex2oatd (???)
dex2oatd F 9111 9111 art/runtime/runtime.cc:284] Dumping all threads without appropriate locks held: thread list lock mutator lock
dex2oatd F 9111 9111 art/runtime/runtime.cc:284] All threads:
dex2oatd F 9111 9111 art/runtime/runtime.cc:284] DALVIK THREADS (0):
dex2oatd F 9111 9111 art/runtime/runtime.cc:284]
make: *** [out/target/product/sabresd_6dq/obj/APPS/A2dpSinkApp_intermediates/arm/package.odex] Aborted (core dumped)
make: *** Deleting file `out/target/product/sabresd_6dq/obj/APPS/A2dpSinkApp_intermediates/arm/package.odex'
#### make failed to build some targets (02:24 (mm:ss)) ####
======================================================================================
Please suggest on how we can enable the WITH_DEXPREOPT option in Freescale imx sabresd board Lollipop release.
Thanks in advance!!
Deepika
Dear All:
I can successfully compile Android 5.1.1 with WITH_DEXPREOPT define by following changes.
1. build/core/dex_preopt_libart.mk
# start of image reserved address space
LIBART_IMG_HOST_BASE_ADDRESS := 0x60000000
-LIBART_IMG_TARGET_BASE_ADDRESS := 0x50000000
+LIBART_IMG_TARGET_BASE_ADDRESS := 0x70000000
2. device/fsl/sabresd_6dq/BoardConfig.mk
PRODUCT_MODEL := SABRESD-MX6DQ
+WITH_DEXPREOPT := true
TARGET_RELEASETOOLS_EXTENSIONS := device/fsl/imx6
3. device/fsl/imx6/BoardConfigCommon.mk
-BOARD_SYSTEMIMAGE_PARTITION_SIZE := 377487360
+BOARD_SYSTEMIMAGE_PARTITION_SIZE := 524288000
Since there is no any virtual memory conflict, I wanna know if we can rollback this patch.
Otherwise, could anyone tell us when or how the virtual memory conflict would happen if the WITH_DEXPREOPT is set.
Regards,
Jerry
Hi Deepika,
You can try below patches.
build.git
diff --git a/core/dex_preopt_libart.mk b/core/dex_preopt_libart.mk
index f8589ba..cfbf221 100644
--- a/core/dex_preopt_libart.mk
+++ b/core/dex_preopt_libart.mk
@@ -26,7 +26,7 @@ COMPILED_CLASSES := $(call word-colon,1,$(firstword \
# start of image reserved address space
LIBART_IMG_HOST_BASE_ADDRESS := 0x60000000
-LIBART_IMG_TARGET_BASE_ADDRESS := 0x50000000
+LIBART_IMG_TARGET_BASE_ADDRESS := 0x70000000
device/fsl.git
diff --git a/imx6/BoardConfigCommon.mk b/imx6/BoardConfigCommon.mk
index 835a4dc..3d0a900 100644
--- a/imx6/BoardConfigCommon.mk
+++ b/imx6/BoardConfigCommon.mk
@@ -60,7 +60,7 @@ ARCH_ARM_USE_NON_NEON_MEMCPY := true
BOARD_BOOTIMAGE_PARTITION_SIZE := 16777216
BOARD_RECOVERYIMAGE_PARTITION_SIZE := 16777216
-BOARD_SYSTEMIMAGE_PARTITION_SIZE := 377487360
+BOARD_SYSTEMIMAGE_PARTITION_SIZE := 471859200
BOARD_FLASH_BLOCK_SIZE := 4096
TARGET_RECOVERY_UI_LIB := librecovery_ui_imx
Dear All,
it's still the same with last android 5.1.1...
Does anybody have solved this issue?
Regards.
Hello Deepika,
I am facing the same issue , If u resolved above problem please share me the solution.
Regards,
Kishore P
I have the same issue, but don't think I need DEX_PREOPT. While looking into this, I haven't found a complete fix other than to disable it. But I did find that you can disable DEX_PREOPT for selected modules. Maybe this helps someone. Reference:
Configuring ART | Android Open Source Project
Example in device.mk
$(call add-product-dex-preopt-module-config,Calculator,disable)
Deepika, can you let us know if you were able to make it work with Guoyin's recommendations?
Could you check whether it helps by enlarge settingBOARD_SYSTEMIMAGE_PARTITION_SIZE?
myandroid//device/fsl
./imx6/BoardConfigCommon.mk:63:BOARD_SYSTEMIMAGE_PARTITION_SIZE := 377487360
Hi Guoyin,
The suggested option to increase the BOARD_SYSTEMIMAGE_PARTITION_SIZE didn't work.
Also, if I checkout the original android-5.0.2_r1 src code for build.git (to discard the freescale changes), boot.img is not getting compiled.
I request you to please take a look and provide a viable alternative.
It has been a long time and the query is not answered appropriately on the forum.
Thanks
Deepika