Apps Incompatible on the U8651

[ Follow up post fixing problem ]

I rooted my Huawei U8651 using ClockworkMod and then applied the Cyanogen 7 mod to bring it up to Android 2.3.7.  What I found was that certain apps that I had been using successfully on the phone were no longer available in the Android market (aka Google Play).  When you access Google Play after upgrading the phone, you may see this message when you attempt to reinstall an app:

This item is not compatible with your device

It seemed strange until I did a bit more digging.  The issue is that the mod is now sending different hardware information to Google Play, and it is interpreting it in a different way from before.

Your Old Phone, pre-Mod

This is why you should make a backup of your Android ROM prior to replacing it with another one.  I used ClockworkMod’s backup tool to create an image of my original ROM.  They were saved as .img files, which you can then use to restore the old phone in case anything goes sideways in your upgrade.

Inside one of these files, the system.img, is a file known as build.prop.  It is a configuration file that is part of the power of the new ROM – it enables a variety of new functionality in your system.  It’s like the startup files on Windows, win.ini and system.ini.  This is the file that you will want to look at and compare to the build.prop file on your phone.

Compare Your Build.prop Config Files

I extracted the old build.prop file to compare it to the one on my phone, using Unyaffs.  This was the only extractor I could find that would handle this particular kind of .img file.  Once you have extracted it, navigate to the folder containing the system.img files, go into the /System folder, and you can open build.prop in a text editor.

Now you can use Root Explorer or a similar file manager on your phone to access your current build.prop. Root Explorer will open in the root folder, and you need to navigate to the /System folder to locate build.prop.  There is a toggle at the top of the Root Explorer screen to enable the filesystem to be read/write, so you can edit.  If at first you can’t edit your phone’s build.prop file, this may be why: the filesystem needs to be mounted as read/write.

A note of caution.  If you have ever made a setting change on a computer or device, you have probably also made a change that caused that device not to restart again.  Same deal here.  This is why you should never randomly take someone else’s build.prop file and just use it whole cloth.  There are going to be differences between them and using a hardware reference, etc., that doesn’t work on your phone may stop it from coming back.  My understanding is that, if this happens, you can just reflash the ROM to reset the build.prop file but who wants to do that?  Proceed with caution.

My Edits to Build.prop

The changes I wanted to make would pull original settings from my Windmobile build.prop and replace settings on my CyanogenMod 7 build.prop.  One thing I noticed was that some settings were called more than once in the latter.  For example, the line

ro.com.google.clientidbase=android-google

appears at the bottom of the file but there is a conflicting, phone-specific one earlier in the file.  I commented out this lower one on the assumption that it might be overriding the earlier one.  You can comment out a line by placing a hash (#) in front of it.

I made a number of changes but did not add any lines.  The changes tended to be like those in ro.build.display.id where the build.prop ID was quite different.  One change that may or may not have had a difference was to comment  out the line:

ro.product.cpu.abi2=armeabi

because the previous line, ro.product.cpu.abi was correctly calling the ARM v6 reference, and to reset the other lines to the Huawei original settings.   It sounds like changing any of the abi lines to a different ARM chip from your phone (armeabi-v7a for example) may make your phone not restart.

In particular, the following lines fixed my problem but I made a number of the changes at once, so there may be some interplay (or not) between what worked:

ro.build.display.id=
ro.build.user=
ro.build.host=
ro.build.tags=
ro.product.model=
ro.product.brand=
ro.product.name=
ro.cm.device=
ro.product.board=

There are some postings online that suggest that you can change the model and manufacturer settings and the incompatibility error will go away.  Essentially, the idea is that you fake out Google Play to look like a different phone.  This did not work for me.  I also edited the

ro.config.hw_appsbootversion=
ro.config.hw_appversion=
ro.config.hw_appfsverfsion=

to reflect the older build.prop file.

It doesn’t really matter what I put in my build.prop.  The magic answer is in your own build.prop file, not mine.

Once I had finished editing the build.prop I saved it (it will make a backup copy of your original file) and left Root Explorer.  I went over to Settings > Applications > Google Play and cleared the application cache.  Then I rebooted and connected to Google Play.  Many – but not all – of the apps that were not compatible could now be installed.  I am going to continue making tweaks until I can get back to all compatible apps!