最近我看到有很多同學都在問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的代碼混淆的。
下載連結 http://www.preemptive.com/products/dotfuscator/compare-editions
歡迎大家在這裡和我溝通交流或者在新浪微博上 @王博_Nick