在java中以编程方式签署Apk文件

时间:2012-05-17 06:19:53

标签: android code-signing android-source

我需要修改/data/app文件夹中存在的预先存在的.apk文件。修改后,签名在Meta-INF文件夹中更改。因此,为了确保apk正常工作,我需要使用正确的md5sum重新签名。

是否可以通过java以编程方式重新签名apks,仅通过代码生成私钥和证书?

1 个答案:

答案 0 :(得分:2)

我正在使用Bouncy Castle和class。重新签名示例:

SignedJar bcApk = new SignedJar(
    new FileOutputStream("out.apk"), signChain, signCert, signKey);
JarFile jsApk = new JarFile(new File("in.apk"));
Enumeration<JarEntry> entries = jsApk.entries();
while (entries.hasMoreElements()) {
    JarEntry entry = entries.nextElement();
    String name = entry.getName();
    if (!entry.isDirectory() && !name.startsWith("META-INF/")) {
        InputStream eis = jsApk.getInputStream(entry);
        bcApk.addFileContents(name, IOUtils.toByteArray(eis));
        eis.close();
    }
}
jsApk.close();
bcApk.close();