.apk 没有官方格式规范吗?
我见过一些将 .apk 文件反转为基本文件的应用程序。我想知道在哪里可以找到 .apk 文件的官方规范,但我一无所获!如果没有正式的规范,有人可以告诉我们在哪里可以找到有关该规范的最佳资源吗?
I have seen some applications that reverse .apk files into elementary files. I would like to know where can I find the official specification of .apk files, but I reached nowhere! Could someone enlighten us about where to look, and what are the best resources about the specification if there is not a formal specification?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我不知道是否有官方规范,但通过浏览我的应用程序的文件结构,我推断出以下内容:
- .apk 只是一个 zip 文件,可以在任何合适的应用程序(7zip、WinZip、WinRAR)中打开,任何操作系统的默认 .zip 工具)。
-它必须在根目录中包含一个 AndroidManifest.xml 文件(尽管这是一个已编译的 .xml 文件并且不可读)。
-它必须包含一个classes.dex文件,其中包含编译为Dalvik字节码的实际二进制代码。
- 它必须包含 resources.arsc 文件。我相信它是 /res 文件夹中所有内容的索引,但我并不肯定。
-它的根目录中必须包含 META-INF 文件夹,其中包含 CERT.RSA、CERT.SF 和 MANIFEST.MF。这些是应用程序的数字签名文件。
- 该应用程序可能包含文件夹 /assets、/res 和 /raw,其中包含图像和数据库等资源文件。
- 该应用程序可能包含一个 /lib 文件夹,其中包含所有本机代码目标(如armeabi)的文件夹,其中包含 .so 文件(本机代码)。
我可能错过了很多东西,但这应该给你一个好的开始。
I don't know if there's an official specification, but from browsing my app's file structure, I have deduced the following:
-The .apk is simply a zip file and can be opened as such in any suitable application (7zip, WinZip, WinRAR, any OS's default .zip tool).
-It must contain an AndroidManifest.xml file in the root directory (though this is a compiled .xml file and not human-readable).
-It must contain a classes.dex file containing the actual binary code compiled as Dalvik bytecode.
-It must contain a resources.arsc file. I believe it's an index of everything in the /res folder, but I'm not positive.
-It must contain a META-INF folder in the root containing CERT.RSA, CERT.SF, and MANIFEST.MF. These are the app's digital signature files.
-The app may contain the folders /assets, /res, and /raw that contain resource files like images and databases.
-The app may contain a /lib folder that contains folders for all the native code targets (like armeabi), which contain .so files (native code).
I probably missed a ton of things, but this should give you a good start.