Maxim Menshikov

Static analysis reseacher and startup founder


Opera Mini for Windows Phone 7 port Windows Phone 7 Highlights

Unlock the ability to run the native Opera Mini on Windows Phone 7, which usually can't run unsigned native applications. That is implemented through API emulation layer.

Date: 2011

Languages: Assembler, C, C++

CPU: ARM

Platforms: Windows Phone 7

Devices: All unlocked

Project

Image

That’s Opera Mini 5.1 initially built for Windows Mobile. I’ve just added an extra layer that makes it running. The only limitation so far is no rotation support – but this limitation will be deleted in future.

Q&A

  • Why does it only work on fully unlocked ROMs (like DFT Freedom)? Isn’t developer/interop unlock enough to run it? Developer unlock will let you install XAP. Interop unlock will let builtin interop library work. Full unlock will let Opera native exe run. That means, nothing except Full unlock will help you run it.
  • Which ROMs should I use? All ROMs that use DFT-like unlock method. I say “like” because there are some other methods, I can’t list them all. I can’t tell you “Yes, it will work on this rom” or opposite, just test it and leave a note if you want.
  • Is Opera Mobile port possible in future? Yes
  • What’s countdown made for? It will allow to remove Opera and its cache.
  • When I press “Stop”, there is a “Delete internal opera folders” button. Why is it here? I can delete this app like any other WP application… The reason is that Opera launcher goes beyond the standard isolated store. For example, it creates \Program Files\Opera Mini folder. Also it adds some absent libraries to \Windows. If you delete Opera launcher “like any other WP application”, folders beyond the sandbox will still stay there. So, use “Delete internal Opera folders” button wisely.

Problems starting it up

  • If Opera launcher’s window doesn’t appear, it means the device is not interop unlocked.
  • If it throws an error with “Check your unlock state” in the end, it means the unlock isn’t enough for running native executables/copying files.

Changelog

v1.2

  • Application window gets recreated on the startup if Opera was already opened.
  • Got rid of WindowTreeUpdater, now using system functions directly.
  • Font smoothing.
  • Removed some unneeded system calls.
  • Now timeout is 3 seconds.
  • Rotation support wasn’t implemented in this version. Windows Phone 7 API doesn’t support it in fully native apps.