最近我看到有很多同学都在问windows phone 8 代码混淆的问题,其实针对WP8做代码混淆大可不必因为 WP8 的应用都是经过 Compiler in the Cloud 的 MDIL 编译的。
什么是 Compiler in the Cloud?
以上是MSDN的一段原话 讲述的是Windows phone 8 虽然使用visual studio编译出来的xap中是 machine independent common intermediate lanuage(CIL)类型的文件 也就是等同于 MSIL,当然你在 Dev Center上提交的也就是这个文件,但是Dev center在把你上传的 CIL 发布到应用商店之前会进行一次从新编译(Compile in the cloud)会把 machine independent common intermediate lanuage(CIL)编译成 machine dependent intermediate language (MDIL) 当然MDIL是安全的 首先MDIL编译不会影响应用程序自身的功能和稳定性,其次这次编译是native code(本地代码编译 同样也在不用担心反编译的风险了)还会让你的程序在windows phone 8上启动和运行速度得到优化。
MDIL 带来的好处?
首先MDIL的编译是在云端进行的,看上去好像没做什么 其实这一切都是自动执行的,你不用担心 windows phone 7.x 的应用受到影响,也就是说当windows phone 7用户下载应用的时候仍然提供一个和从前一样的 JIT 编译包,只有windows phone 8 的用户得到是一个经优化 MDIL 编译的程序包。
另外 相比较经过 MDIL 编译过后的应用程序(在Windows phone 8 和 windows phone 7 设备比较)无论是启动速度和运行效果上 综合统计都会有50%或更多的提升。
下图可以清晰的看出整个流程:
当然我们也可以本地模拟调试 optimized native image
首先 我们不能再 windows phone Emulator 上直接测试 native code 要依赖真实设备 ,以需要在 Standard 上选择部署设备为 Device
并且 使用 Alt+F5 运行测试 或 Alt+F5 进行性能分析
调试 optimized native image
在visual studio 选择 Tools - Options
去掉 Suppress JIT optimization on module load 和 Enable Just My Code 选项
当然有些同学或是项目执意要进行代码混淆,据我所知目前Dotfuscator Professional 版是支持WP8的代码混淆的。