在Android中编译java文件后,注释会发生什么变化?

在Android中编译java文件后,注释会发生什么变化?,java,android,compiler-construction,comments,apk,Java,Android,Compiler Construction,Comments,Apk,Android编译器是如何工作的?编译时是否删除Java代码和Android XML文件中的注释?文件的字节码/.class版本中不存在注释。编译时编译器会忽略注释 编译器的工作方式是将所有高级语言代码同时转换为机器可理解的代码,而不是像解释器那样逐行转换。。 在Android的情况下。。编译器将.java源文件转换为字节码/.class文件,然后再转换为.dex文件(Dalvik可执行文件)。。Android中的所有应用程序都运行在一个名为Dalvik Virtual Machine的虚拟机上

Android编译器是如何工作的?编译时是否删除Java代码和Android XML文件中的注释?

文件的字节码/.class版本中不存在注释。编译时编译器会忽略注释

编译器的工作方式是将所有高级语言代码同时转换为机器可理解的代码,而不是像解释器那样逐行转换。。 在Android的情况下。。编译器将.java源文件转换为字节码/.class文件,然后再转换为.dex文件(Dalvik可执行文件)。。Android中的所有应用程序都运行在一个名为Dalvik Virtual Machine的虚拟机上,该虚拟机需要.dex文件

尝试打开一个像zip一样的apk文件。。使用任何archiver..您都会在其中看到classes.dex文件

至于xml文件。。只有当您在屏幕上显示某些内容(即呈现的活动)时,应用程序才会使用它们。因此,在显示活动时,其相应的xml文件用于构建UI。。这个过程叫做充气

编辑:[但关于这一点,我现在记得的一点是..Android手机中存在的系统应用程序..例如所有谷歌提供的应用程序(Gmail、地图等)…联系人、Phone.apk等..所有这些都是系统apk..存在于/system/app/目录中..它们可能包含也可能不包含.dex文件

如果它们在apk文件中包含.dex(就像我们开发的任何普通应用程序一样)…那么ROM被称为Deodexed ROM(Android操作系统的固件)..但这反过来会导致在第一次安装ROM时启动速度变慢,因为所有.dex文件都从system.apk文件复制到dalvik缓存中..因为系统启动/引导时需要系统apk的所有.dex文件

但是如果ROM是odex..system.apk的所有.dex文件都不在.apk中,而是作为一个单独的文件存在于/system/app/directory..中,扩展名为.odex

对于您和我开发的所有应用程序(非系统应用程序)…只有play store的应用程序..它们在.apk中包含.dex]

编辑:我知道这与工作或问题关系不大。。但是,我只想提到sys和非sys应用程序的.dex文件的位置的差异!:)


希望有帮助!:)

Java文件中的注释在编译成类文件时会被删除或忽略。类文件不是供人读取的-它们经过优化以在虚拟机上高效运行。如果保留注释,它们只会导致类文件比所需文件大,并且没有额外的好处(即编译器和虚拟机不理解注释,为什么要包含它们)


对于XML文件,注释通常被保留。编译的类文件只有一个用途(在虚拟机上运行),而XML文件可以用于多种用途。例如,您可以将XML文件加载到应用程序中并对其进行操作。根据应用程序中XML文件的使用情况,可能需要将注释保留在其中——事实上,应用程序可能会专门查找注释。由于XML文件可能有广泛的用途,因此注释不会从XML文件中删除,以防它们用于其他目的。

编译器会忽略注释,并且注释不会出现在生成的字节码或机器代码中谢谢,RiASH!关于XML的注释如何?它们在编译时也会被删除吗?xml文件中的注释通常会被保留!谢谢明白了。:)出于安全目的,在导出应用程序之前,可能需要删除一些关于XML的注释。如果您担心安全问题,我绝对建议您删除XML中的注释。如果您有很多注释,这也会导致应用程序运行稍慢,因为它在读取XML文件时必须跳过所有注释。请记住,XML文件是特意设计为人类可读的:-)实际上,如果您在R中引用XML布局,那么它们也会被删除注释并编译为高度优化的视图对象。因此,您甚至不需要从XML中删除注释。@Ancantus视图对象到底进行了哪些优化?@dacongy我不知道执行了哪些优化。它被映射到一个binary.xml文件,如果您解压缩APK文件,就可以查看该文件。更多信息可在此处找到: