最近我看到有很多同學都在問windows phone 8 代碼混淆的問題,其實針對WP8做代碼混淆大可不必因為 WP8 的應用都是經過 Compiler in the Cloud 的 MDIL 編譯的。
升級到WP8必需知道的13個特性 系列文章目錄地址:http://www.linuxidc.com/Linux/2013-08/89003.htm
什麼是 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的代碼混淆的。
下載鏈接 http://www.preemptive.com/products/dotfuscator/compare-editions
從 Windows Phone7 到 Windows Phone 8 更新 如何設配兩個版本
Windows Phone & Windows 8 Push Notification from Windows Azure
在Windows Phone Store 商店中提交你的 Windows Phone 8 應用
Windows Phone 8 語音 - Speech for Windows Phone 8
Windows Phone 8 鏡頭應用 - Lenses for Windows Phone 8