Disable symlink optimizations in the Testing ART APEX.

Because the Testing ART APEX (`com.android.art.testing`) is
non-updatable, some of its native shared libraries (implicitly added
as dependencies) -- shared with the platform (currently,
`libbacktrace`, `libbase`, `libc++`, `libcrypto`, `liblz4`, `liblzma`,
`libmeminfo`, `libprocinfo`, `libunwindstack`, and `libziparchive`) --
are eligible to the symlink optimization (b/144533348).

As we want this APEX to be self-contained (for testing purposes), we
want to package these dependencies in this APEX (instead of symbolic
links to their counterparts on the `system` partition, which may not
even exist, as in the case of `libbacktrace`). Marking this APEX as
"future updatable" disables all symlink optimizations for it.

Note that the symlink optimization can currently create broken
symlinks), in the case where a dependency is no longer installed in
the `system` partition (b/233357459) -- this was recently the case of
`libbacktrace`.

Also add a check to script `build/apex/art_apex_test.py` to prevent
any regression.

Test: art/build/apex/runtests.sh
Test: atest ArtGtestsTargetChroot
Bug: 232790938
Change-Id: Ic2ebb133f597b7f3d4d0486d8ead5d9746dae776
diff --git a/build/apex/Android.bp b/build/apex/Android.bp
index 3c305b8..de42615 100644
--- a/build/apex/Android.bp
+++ b/build/apex/Android.bp
@@ -435,7 +435,21 @@
     certificate: ":com.android.art.certificate",
     tests: art_gtests,
     binaries: ["signal_dumper"], // Need signal_dumper for run-tests.
+    // Mark this test APEX as non-updatable, as its contains
+    // additional files (used only for testing) that would not pass
+    // dependency checks performed on updatable APEXes (see
+    // go/apex-allowed-deps-error).
     updatable: false,
+    // Because this APEX is non-updatable, some of its native shared
+    // libraries (implicitly added as dependencies) are eligible to
+    // the symlink optimization. As we want this APEX to be
+    // self-contained (for testing purposes), we want to package
+    // these dependencies in this APEX, instead of symbolic links to
+    // their counterparts on the `system` partition, which may not
+    // even exist, as in the case of `libbacktrace` (see b/232790938
+    // and b/233357459). Marking this APEX as "future updatable"
+    // disables all symlink optimizations for it.
+    future_updatable: true,
 }
 
 // TODO: Do this better. art_apex_test_host will disable host builds when
diff --git a/build/apex/art_apex_test.py b/build/apex/art_apex_test.py
index 43fa01c..5ead8da 100755
--- a/build/apex/art_apex_test.py
+++ b/build/apex/art_apex_test.py
@@ -217,6 +217,8 @@
       return False, 'Could not find %s'
     if fs_object.is_dir:
       return False, '%s is a directory'
+    if fs_object.is_symlink:
+      return False, '%s is a symlink'
     return True, ''
 
   def is_dir(self, path):