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

Arc*_*rci 9 java compiler-construction android comments apk

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

wat*_*ios 13

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

对于XML文件,通常会保留注释.虽然编译的类文件只有1个目的(在虚拟机上运行),但XML文件可以用于多种用途.例如,您可以将XML文件加载到应用程序中并对其进行操作.根据应用程序中XML文件的使用情况,可能需要将注释保留在那里 - 实际上,您的应用程序可能会专门查找注释.由于XML文件可能具有广泛的用途,因此如果出于某些其他目的需要注释,则不会从XML文件中删除注释.

  • 如果您担心安全隐患,我肯定会建议您从XML中删除注释.如果你有很多注释,它也会导致应用程序运行稍慢,因为它在读取XML文件时必须跳过所有注释.值得记住的是,XML文件是故意设计为人类可读的:-) (2认同)

rit*_*t93 5

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

编译器以一种方式工作,它将所有高级语言代码转换为机器可理解的Code..all一次......不是像解释器一样逐行...在Android的情况下..编译器将.java源文件转换为它的字节码/ .class文件......然后是.dex文件(Dalvik可执行文件).. Android中的所有应用程序都在名为Dalvik虚拟机的虚拟机上运行,​​需要.dex文件.

尝试打开像zip一样的apk文件..使用任何归档器..你会在那里看到classes.dex文件..

就xml文件而言..只有当你在屏幕上显示某些内容时(即正在呈现的Activity),它们才被应用程序使用..所以在显示活动时..相应的xml文件用于构建UI ..这个过程叫做膨胀!

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

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

但是如果ROM被索引了..系统.apk的所有.dex文件都不在.apk中,而是作为/ system/app /目录中的单独文件..扩展名.odex

对于你和我开发的所有应用程序(非系统应用程序).​​.只是play store..sose的应用程序包含.apk中的.dex]

编辑:我知道它与工作或问题没有多大关系......但只是想提及sys和非sys应用程序的.dex文件的位置差异!:)

希望它有所帮助!:)