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

Commit d5066250 authored by Victor Hsieh's avatar Victor Hsieh
Browse files

Migrate to the new apksig API

Following the new API contract, this effectively add extra padding
before central dir to make it 4KB aligned.

Test: build succeeded
Bug: 30972906
Change-Id: I7cac9d2c4371b473c88df867b3b2ae906443db10
parent d7516813
Loading
Loading
Loading
Loading
+6 −3
Original line number Original line Diff line number Diff line
@@ -1082,14 +1082,15 @@ class SignApk {
                    ByteBuffer[] outputChunks = new ByteBuffer[] {v1SignedApk};
                    ByteBuffer[] outputChunks = new ByteBuffer[] {v1SignedApk};


                    ZipSections zipSections = findMainZipSections(v1SignedApk);
                    ZipSections zipSections = findMainZipSections(v1SignedApk);
                    ApkSignerEngine.OutputApkSigningBlockRequest addV2SignatureRequest =
                    ApkSignerEngine.OutputApkSigningBlockRequest2 addV2SignatureRequest =
                            apkSigner.outputZipSections(
                            apkSigner.outputZipSections2(
                                    DataSources.asDataSource(zipSections.beforeCentralDir),
                                    DataSources.asDataSource(zipSections.beforeCentralDir),
                                    DataSources.asDataSource(zipSections.centralDir),
                                    DataSources.asDataSource(zipSections.centralDir),
                                    DataSources.asDataSource(zipSections.eocd));
                                    DataSources.asDataSource(zipSections.eocd));
                    if (addV2SignatureRequest != null) {
                    if (addV2SignatureRequest != null) {
                        // Need to insert the returned APK Signing Block before ZIP Central
                        // Need to insert the returned APK Signing Block before ZIP Central
                        // Directory.
                        // Directory.
                        int padding = addV2SignatureRequest.getPaddingSizeBeforeApkSigningBlock();
                        byte[] apkSigningBlock = addV2SignatureRequest.getApkSigningBlock();
                        byte[] apkSigningBlock = addV2SignatureRequest.getApkSigningBlock();
                        // Because the APK Signing Block is inserted before the Central Directory,
                        // Because the APK Signing Block is inserted before the Central Directory,
                        // we need to adjust accordingly the offset of Central Directory inside the
                        // we need to adjust accordingly the offset of Central Directory inside the
@@ -1100,10 +1101,12 @@ class SignApk {
                        modifiedEocd.order(ByteOrder.LITTLE_ENDIAN);
                        modifiedEocd.order(ByteOrder.LITTLE_ENDIAN);
                        ApkUtils.setZipEocdCentralDirectoryOffset(
                        ApkUtils.setZipEocdCentralDirectoryOffset(
                                modifiedEocd,
                                modifiedEocd,
                                zipSections.beforeCentralDir.remaining() + apkSigningBlock.length);
                                zipSections.beforeCentralDir.remaining() + padding +
                                apkSigningBlock.length);
                        outputChunks =
                        outputChunks =
                                new ByteBuffer[] {
                                new ByteBuffer[] {
                                        zipSections.beforeCentralDir,
                                        zipSections.beforeCentralDir,
                                        ByteBuffer.allocate(padding),
                                        ByteBuffer.wrap(apkSigningBlock),
                                        ByteBuffer.wrap(apkSigningBlock),
                                        zipSections.centralDir,
                                        zipSections.centralDir,
                                        modifiedEocd};
                                        modifiedEocd};