Hello,

In part of my development cycle I want to be able to compile and test the 
*dex2oat* utility relatively easy.

I am using android10-release 
<https://cs.android.com/android/platform/superproject/+/android10-release:art/> 
on 
*sailfish*, and I am having some issues since the apex introduction.
Previously just building and pushing dex2oat to /system/bin/ was enough.

*dex2oat* utility belongs to the runtime apex, which comes in two variants:
    - com.android.runtime.release, and 
    - com.android.runtime.debug

For example, *libart.so* and* libart-compiler.so* on a user-debug build are 
put on this directory:
*/system/apex/com.android.runtime.debug/*
So I can mount* /system*, push the above libraries, and on reboot my 
changes are on effect.
I know it is not supposed to be done like that, but for development 
purposes is fine and fast.

*dex2oat* however, for some reason on the user-debug build is put on: 
*/apex/com.android.runtime/*
Since it is not under* /system*, it cannot be mounted as r/w using 
instructions found here 
<https://android.googlesource.com/platform/system/core/+/master/fs_mgr/README.overlayfs.md#introduction>
.
I know */apex* it is already a mountpoint from an installed apex, but I 
wasn't able to generate just the runtime .apex file from aosp.


*Attempt1:* Put dex2oat out of runtime.release apex:
I've tried to remove it from release and put it in the debug by modifying 
art/build/apex/Android.bp 
<https://cs.android.com/android/platform/superproject/+/android10-release:art/build/apex/Android.bp>
.
The idea was to use the same workflow that I've used for* libart.so*, but 
the phone won't boot.
Specifically, I moved it from art_runtime_base_binaries_prefer32 
<https://cs.android.com/android/platform/superproject/+/android10-release:art/build/apex/Android.bp;l=10>
 
to art_runtime_debug_binaries_prefer32_device 
<https://cs.android.com/android/platform/superproject/+/android10-release:art/build/apex/Android.bp;l=67>.
 
f 
I've also exported this DISABLE_APEX_LIBS_ABSENCE_CHECK to true, so 
build/make wont complain.
But I am sure that I am missing something somewhere..

*Attempt2:* Generate a new apex
The proper way would be to generate a new apex, with some instructions here 
<https://android.googlesource.com/platform/system/apex/+/refs/heads/master/docs/README.md>,
 
and then install it to the device.
The instructions mention however that apex is under development, and it 
does not mention how to create the apex_payload.img for example.
Also here 
<https://source.android.com/devices/architecture/modular-system/runtime#android-runtime-art-changes>
 it 
says that the runtime apex is not update-able on android10. I assume on 
release builds with an OTA mechanism,
but still it is not clear whether it is possible without building each time 
the whole system.img and then flash it (which is quite inconvenient).

I've tried the following:
*1. m com.android.runtime.release.dex2oat_32*
This builds and puts dex2oat at:
<out/sailfish>/system/apex/com.android.runtime.release/bin/

I guess this is a quick way of updating the apex with the new version of 
*dex2oat*.

*2. m com.android.runtime.release*
This does take a lot of time, and it builds everything from the apex.
I should run this once, and then proceed update with step 1.

*Questions:*
*1. *What is the best way to modify and push dex2oat for quick develop/test 
cycle.
Is the attempt1 a viable approach? Or any other approach that does not 
require reflashing the
whole system.img?

*2.* If I have to generate a new runtime release apex: is there any make 
target that generates and signs it in the soong build system?
For my attempt2, what is the instruction to generate the apex_payload.img 
on a user-debug build? 


Thanks for your time,
Paschalis


-- 
-- 
You received this message because you are subscribed to the "Android Building" 
mailing list.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-building?hl=en

--- 
You received this message because you are subscribed to the Google Groups 
"Android Building" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/android-building/1b9e5e9e-3bfb-47e6-9a61-8425000cd2f8%40googlegroups.com.

Reply via email to