Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit be649a4b authored by Jeff Hao's avatar Jeff Hao
Browse files

When updating a split app, copy compiled files from base.apk only.

This fixes issues with some splits failing to be recompiled if they
haven't changed, but the dex files they depend on have.

The real fix will be for frameworks to generate the new expected
classpath and check in DexFile.getDexOptNeeded. Then we can undo
this change and copy over all the compiled split files again.

Bug: 62269291
Test: cts-tradefed run singleCommand cts -d --module
CtsAppSecurityHostTestCases -t android.appsecurity.cts.SplitTests

(cherry-picked from commit d1235f54)

Change-Id: I6e640a966ef3b43054d163326878adebe2329693
parent ef055443
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -856,8 +856,15 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {

                        mResolvedInstructionSets.add(archSubDir.getName());
                        List<File> oatFiles = Arrays.asList(archSubDir.listFiles());
                        if (!oatFiles.isEmpty()) {
                            mResolvedInheritedFiles.addAll(oatFiles);

                        // Only add compiled files associated with the base.
                        // Once b/62269291 is resolved, we can add all compiled files again.
                        for (File oatFile : oatFiles) {
                            if (oatFile.getName().equals("base.art")
                                    || oatFile.getName().equals("base.odex")
                                    || oatFile.getName().equals("base.vdex")) {
                                mResolvedInheritedFiles.add(oatFile);
                            }
                        }
                    }
                }