我有一个 Android APK 文件,我需要解压该文件,替换一个文件,使用
jarsigner
重新签名,然后 zipalign
生成有效的 APK。
应用程序安装时没有错误,但运行时无法在
/assets/
文件夹中找到它要查找的第一个内容。所需的文件肯定在APK中、在正确的位置等
“sub:main_activity_create(Jave line:375) java.io.FileNotFoundException:control.bal 中发生错误”
我看到的差异是原始
Manifest.MF
文件具有 正斜杠 (U+002F),但是当我在服务器上运行 jarsigner
时,它会创建一个带有 反斜杠的新
manifest.mf
( U+005C)。有没有办法让 jarsigner 使用正斜杠?
代码是在 Azure 服务器上运行的 C# .NET。
原始
Manifest.MF
格式:
Manifest-Version: 1.0
Created-By: 1.8.0_112 (Oracle Corporation)
Name: assets/longblackbar.png
SHA1-Digest: 1Fq7U1Y/dLAVflFmTzLcC0tvKu4=
重新签名
Manifest.MF
格式
Manifest-Version: 1.0
Created-By: 1.7.0_51 (Oracle Corporation)
Name: assets\longblackbar.png
SHA1-Digest: vaky9S8cGhJIvh7a4LmmtWOpqAg=
事实证明,C# ZipFileExtensions 方法是导致问题的原因,它创建了反斜杠。如果我将其替换为运行 7za.exe 作为进程,则使用正斜杠,此后一切正常。