06-05-2012 07:15 AM
Recently I have uploaded a new bundle version 1.0.3 (previously its 1.0.2) for my app in vendor portal,whenever I try to upgrade app on devices using app world , it shows install error with a popup " An error occurred during installation".And also on some devices appworld sometimes shows 1.0.2 is available for download and sometmes it shows 1.0.3 is available but with release date of version 1.0.0.
Changes done in version 1.0.3 are
--Added bbm support using separate cods files for bbm implementaion
--Added one field and its getter/setter in AppSetting.java which is persistable
checked logs during upgradation and found this error
"[ 599.359] VM:c_compat onf=2, nnf=3CMM: transaction 4752 error: old persistent class incompatible across new siblings (AppSetting)
06-05-2012 07:57 AM - edited 06-05-2012 07:58 AM
"Added one field and its getter/setter in AppSetting.java which is persistable"
This is what is causing:
popup " An error occurred during installation".
You will have to ask your users to delete the 1.0.2 version if they want to install the 1.0.3. You can't change the "signature" of a persistent object - because that makes the older persistent object unreadable, so the app won't load. This is why the log says "old persistent class incompatible". You either make it the same, or delete the app, which then deletes the persistent store.
You need to think about this when you designing your persisted objects, I generally use collections, (like IntHashtable), so that I can easily add new variables.
Regarding why some users see 1.0.2, some see 1.0.3 and so on, these I suspect are partially due to the vagaries of App World, which means changes can take ages to populate across the globe. But the biggest thing you should check is the devices that your app supports as defined to App World. Make sure you have these set correctly.
Sorry should have said - Welcome to the forums!