mirror of
https://github.com/topjohnwu/Magisk.git
synced 2025-05-09 02:44:25 +02:00
Workaround potential OOM when signing APKs
This commit is contained in:
parent
f5f9b285c0
commit
79af2787ae
@ -4,6 +4,7 @@ import java.io.ByteArrayInputStream;
|
|||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
import java.nio.ByteBuffer;
|
||||||
|
|
||||||
public class ByteArrayStream extends ByteArrayOutputStream {
|
public class ByteArrayStream extends ByteArrayOutputStream {
|
||||||
|
|
||||||
@ -27,4 +28,8 @@ public class ByteArrayStream extends ByteArrayOutputStream {
|
|||||||
public ByteArrayInputStream getInputStream() {
|
public ByteArrayInputStream getInputStream() {
|
||||||
return new ByteArrayInputStream(buf, 0, count);
|
return new ByteArrayInputStream(buf, 0, count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ByteBuffer toByteBuffer() {
|
||||||
|
return ByteBuffer.wrap(buf, 0, count);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -510,7 +510,7 @@ public class SignApk {
|
|||||||
privateKey[0] = key;
|
privateKey[0] = key;
|
||||||
|
|
||||||
// Generate, in memory, an APK signed using standard JAR Signature Scheme.
|
// Generate, in memory, an APK signed using standard JAR Signature Scheme.
|
||||||
ByteArrayOutputStream v1SignedApkBuf = new ByteArrayOutputStream();
|
ByteArrayStream v1SignedApkBuf = new ByteArrayStream();
|
||||||
JarOutputStream outputJar = new JarOutputStream(v1SignedApkBuf);
|
JarOutputStream outputJar = new JarOutputStream(v1SignedApkBuf);
|
||||||
// Use maximum compression for compressed entries because the APK lives forever on
|
// Use maximum compression for compressed entries because the APK lives forever on
|
||||||
// the system partition.
|
// the system partition.
|
||||||
@ -519,8 +519,7 @@ public class SignApk {
|
|||||||
copyFiles(manifest, inputJar, outputJar, timestamp, alignment);
|
copyFiles(manifest, inputJar, outputJar, timestamp, alignment);
|
||||||
signFile(manifest, publicKey, privateKey, timestamp, outputJar);
|
signFile(manifest, publicKey, privateKey, timestamp, outputJar);
|
||||||
outputJar.close();
|
outputJar.close();
|
||||||
ByteBuffer v1SignedApk = ByteBuffer.wrap(v1SignedApkBuf.toByteArray());
|
ByteBuffer v1SignedApk = v1SignedApkBuf.toByteBuffer();
|
||||||
v1SignedApkBuf.reset();
|
|
||||||
|
|
||||||
ByteBuffer[] outputChunks;
|
ByteBuffer[] outputChunks;
|
||||||
List<ApkSignerV2.SignerConfig> signerConfigs = createV2SignerConfigs(privateKey, publicKey,
|
List<ApkSignerV2.SignerConfig> signerConfigs = createV2SignerConfigs(privateKey, publicKey,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user