Updating Apps in Android 2.2 Froyo leads to Deleted App Data

Our app, Frost, uses the Android/data/<package name>/ folder on the device’s external storage (SD card), to store app information. One benefit of doing this is that when the user uninstalls the app, any files on the SD card are deleted as well, leaving no clutter or orphaned files behind. At the same time, when the user updates their app, through Google Play or otherwise, the data is preserved.

At least, that’s what Google’s documentation leads you to believe:

If the user’s device is running API Level 8 or greater (Android 2.2+) and they uninstall your application, this directory and all its contents will be deleted.

The above statement is true, but in addition to that, whenever an app is updated in Android 2.2, it will delete all the contents of the Android/data/<package name>/ folder. This is the reason why some users of Frost complain their app data has disappeared after updating the app.

Google became aware of the issue quite quickly and fixed it, however it was too late as several devices were already running the flawed code. Some manufacturers released patches that included Google’s fix, but there are still a lot of devices out there that haven’t been patched.

The only real solution to this issue is to upgrade your device to Android 2.3 or higher, where this bug has been fixed. Until then, if you’re running Android 2.2, be sure to backup the contents of your external storage before updating an app. Then after the update is complete, restore your files using your backup. If you’re using Frost, you can visit the FAQ for instructions on how to backup and restore your app data.

Backing Up & Restoring a Remote SVN Repository

If you’re hosting your Subversion repository remotely, either through a web host or through one of many Subversion hosting services, you probably won’t have direct access to the server to be able to run shell commands on it. This can create a challenge when it comes to backing up and restoring your SVN repositories remotely.

Trying to achieve this using the svnadmin command will not work:

svnadmin load http://project.hosting/svn/repo < dump
svnadmin: 'http://project.hosting/svn/repo' is an URL when it should be a path

There is however a way of doing this remotely.

What You Need

You’re going to need a a tool called svnrdump. As described by Apache, “svnrdump replicates the functionality of svnadmin dump and svnadmin load, but works on remote repositories, instead of needing administrator (local filesystem) access to the source or target repository.”

The easiest way to get svnrdump is by downloading and installing the SVN client utility, TortoiseSVN and making sure to install the “Command Line Client Tools” in the installer options. You can then find svnrdump inside the bin folder where TortoiseSVN was installed.

Backing Up Your Repository Remotely

We’re now going to generate a .dump file which contains the entire history of revisions for our repository. To make a complete backup run the following command:

svnrdump dump [SOURCE_URL] > [DUMP_DESTINATION]

For example:

svnrdump dump svn://myrepohost.com:port/repos/myproject > C:\myrepobackup.dump

Note that this command requires your target server to be running SVN 1.4 or newer. For more information about the dump command as well as additional parameters please see the documentation.

Restoring Your Repository Remotely

Now that we have our .dump file, we can use it to restore our repository. To restore your repository run the following command:

svnrdump load [DESTINATION_URL] < [SOURCE_DUMP]

For example:

svnrdump load svn://myrepohost.com:port/repos/newproject < C:\myrepobackup.dump

Note that this command requires your target server to be running SVN 1.7 or newer. For more information about the load command as well as additional parameters please see the documentation.

Here’s a windows batch file that I use to make one click backups, it creates a file called SVN_YYMMDD.dmp in the same directory as the batch file:

for /F "tokens=2,3,4 delims=/ " %%i in ('date/t') do set y=%%k
for /F "tokens=2,3,4 delims=/ " %%i in ('date/t') do set d=%%k%%i%%j
for /F "tokens=5-8 delims=:. " %%i in ('echo.^| time ^| find "current" ') do set t=%%i%%j
set "outFilename=%~dp0SVN_%d%.dmp"

cd "C:\Program Files\TortoiseSVN\bin"
svnrdump dump svn://yoursvnserver:port > %outFilename%
PAUSE

Android Projects in SVN – What Files to Ignore?

Setting up your svn:ignore property when you first open a new repository is a good way of making sure you keep unnecessary files from being revisioned. There are basically two entries that you need to make to your svn:ignore list:

  • bin
  • gen

The /gen folder contains files generated by the Android framework, such as the R.java file, and the /bin folder contains files generated when compiling and running the application from within Eclipse.

The .classpath and .project files, as well as the .settings folder are generated by Eclipse, and are best kept in your repository as it makes importing your project into Eclipse much easier, not to mention these files rarely change.

Theme.Holo Causes Horizontally Scrolling TabWidget to Get Cutoff

If your Android app uses tabs that are implemented using the TabHost and TabWidget wrapped in a HorizontalScrollView you may have noticed that the last tab may get cut off at the end. This happens when the activity containing the tabs is using the Holo theme introduced in Honeycomb. Interestingly this bug only occurs in Jellybean.

The reason is because the HorizontalScrollView doesn’t take the width of the tab dividers into account.

To fix this, make sure you don’t call setDividerDrawable anywhere:

// This line should be removed as we don't want to set a tab divider
getTabHost().getTabWidget().setDividerDrawable(R.drawable.tab_divider);

Secondly, you want to add the attribute android:divider=”@android:color/transparent” to your TabWidget layout element. Your layout XML should look something like this:

<HorizontalScrollView android:id="@+id/tabscroller"
 android:scrollbars="none"
 android:layout_width="0dip"
 android:layout_height="fill_parent"
 android:fillViewport="false" >
 	<TabWidget android:id="@android:id/tabs"
			android:layout_width="0dip"
			android:layout_height="fill_parent"
			android:divider="@android:color/transparent" />
</HorizontalScrollView>

Frost 2.41 – The 1 Means it’s Better

Apparently the last patch broke hardware acceleration support on some devices, which in turn broke flash support, and reduced overall performance. Oopsy. I’m releasing a quick patch today that fixes that as well as a few bugs.

I again want to remind users that Android 4.1.1 Jellybean does not support flash. This is entirely out of our control, so please direct your rage at Adobe.

An awesome user named Lamar reported a crash bug with the import from SD feature which I’ve fixed.

One last note, there is a known bug with the interface in this version. If you’re using a device with Android 4.0+ (Ice Cream Sandwich or newer), creating a lot of tabs will cause the right-most portion of the last tab to become cutoff by a couple pixels. While this is purely an aesthetic issue, I just want you to be aware that I’m aware of it, and am looking at ways of fixing it.

I think I’ll be focusing on the overall browser UI in the future. I would like to move some buttons out of the options menu since I feel it’s starting to get cluttered. Perhaps add a drop down menu next to the tab bar, kind of like the organize feature in the gallery, we’ll see.

Introducing Frost 2.4

Today we uploaded the latest release of our private browser, making this v2.4. One of the biggest changes is an entire re-branding of the application. From this day forward “Frost” is the new name of our private browser. Before we get to the change-log we first want to talk about the latest version of Android, named “Jellybean” and its impact on the app.

If you’ve been reading up on Android news, you may already know that Adobe, the makers of the Flash Plugin for Android, have stopped supporting the plugin entirely. This means that Android devices running Jellybean (4.1.1+) will no longer be able to view flash content, this includes things such as flash video and flash games. Because of this, we ask users running Jellybean to disable plugin support in Frost due to the unpredictable behavior it may cause. Until Google or Adobe come up with a solution or alternative, there is nothing we can do. Until then, many websites provide mobile video in 3GP and MP4 format which Frost supports.

  • Renamed the application to “Frost”
  • Updated icon
  • Added Jellybean support. Big thanks to our Jellybean users for their feedback and patience! This has been quite a challenge due to the significant changes made to the Android framework. Since our only method of testing until now has been through emulators (which don’t always give perfectly representative results), we had to wait until Google released their OTA updates to our test hardware.
  • Slideshow shuffle fixed – will not repeat an image until all other images have been shown
  • Folders with pictures can now be imported from the SD card – folders will be created automatically for them in your stash
  • Relocated navigation bar. Open the navigation bar by pressing the globe button to the left of the tabs
  • Deprecated support for Android 2.1
  • Bug fixes – thanks for all the bug reports!

A Tour of What’s New in Frost 2.3

Version 2.3 has been released today. It’s been a few months since Frost was last updated, but a lot has happened since then. Probably one of the biggest things was the release of Android Ice Cream Sandwich, which changes many fundamentals aspects of how Android apps are used. Since then we have put in extra effort to make sure we support the new version of Android, and look forward to updating Frost as time goes on.

Now, let’s go through the change log that was posted on the Android Market for version 2.3:

Added bookmark sorting

We realized many of our users may have large collections of bookmarks, so we introduced a new button in the bookmarks screen that allows you to sort your bookmarks by their description, or by when you added them.

Added option to mute sound on startup

This was suggested by our users in our suggestions forum and was added as a new option in the settings menu under “Privacy & Security”. When you select this option you will see the volume slider appear momentarily when Frost is first opened. This way you can be sure the sound has been muted. Note that you can turn your sound back up at any time.

Added additional privacy options

The ability to choose how and if cookies, passwords, and form data are stored is now available in the settings menu. Note that the default settings provide the most security and won’t store any information until they are changed.

Clear Cookies on Exit: Cookies are a temporary pass that a website gives you when you login. Normally Frost clears all these cookies when you exit the app, however we added the option to keep these cookies so you don’t have to re-login the next time you visit the site.

Remember Passwords: Turning this option on will cause Frost to auto fill any username and password fields that you have recently used. By default, Frost will not save your passwords unless you check this option. You also have the option to manually clear any existing saved password.

Remember Form Data: This works very similar to the “Remember Passwords” option, but applies to any other fields you might find in a form. By default, Frost will not save your form data unless you check this option. You also have the option to manually clear any existing form data.

Added HTTP Authentication support

Some users mentioned they weren’t able to access some websites due to this missing feature, and we quickly implemented it, only a few days before the release of this update!

Performance & security improvements

We’re constantly trying to squeeze every bit of speed we can from our browser. These changes may be noticeable to some more than others.

Updated user agent strings

Thanks to one users suggestion, some mobile carriers block device tethering base on certain user agent strings, so we updated them and added a “Linux Desktop” option to help circumvent this.

Fixed image decoding issues (Android 3.0+)

Many users saving images to their stash, particularly using the newer versions of Android, experienced this issue and we’re happy to say we have fixed it.

Fixed zoom button hiding (Android 3.0+)

Thanks to some updates to the Android platform we have been able to hide that zoom button once and for all!

Reorganized settings menu

Due to all the new options available we have had to split up the settings menu into categories to simplify navigation.

Importing images from SD is now done in alphabetical order

When importing images from your SD card, images will be imported into your stash in alphabetical order. So for example, if you import 2 images, 1.jpg and 2.jpg, 1.jpg will appear before 2.jpg in your image stash after being imported.

Improved support for 3.0+ devices including ICS

As we said before, we keep working towards supporting any new versions of Android as they are released.

Once again we want to thank all our users for their feedback in the last few months and ask that you keep it coming!

 

Frost v2.2 Now Available

As of August 21st, Frost is one month old, and we’re working hard on making it better as it ages. Version 2.2 is currently available on the Android Market. You can expect to find a few more new features, and several very important security fixes as well as significant compatibility changes to the browser. Most of these features and changes are all thanks to the feedback we’ve received from our users. As always, you can contact us using the “Need help?” option in the browser preferences. If you have any problems or bugs that you can reliably reproduce we’d love to hear about them.

New Features:

  • We’ve added the option to permanently rotate images to the image viewer.
  • The browser now supports text selection, copy and paste.
  • HTML5 video support.
  • Improved popup blocker with the option of prompting you on how to handle popups.

Changes & Fixes:

  • Significant upgrades to application security and privacy.
  • Big improvements in browser compatibility with many websites.
  • The shuffle slideshow option is now truly randomized.
  • Fixed flash video playback on certain Honeycomb devices. (Thanks RJL!)
  • Improved support for Android 3.0+ devices as well as enabling hardware accelerated video.
  • An innumerable amount of tweaks, improvements and bug fixes.

With the introduction of this new version it will also become easier to backup and restore your stash in the event you change or update your device. Please see the updated FAQ in the help section of the app for more details.

Update 2.1 for Frost Released

Update 2.1 is now available on the market for both full and lite versions of Frost. For those of you without market access, the .APK for Frost Lite is available for download on the product page.

In this update we focused on improving the address bar in two ways. First, the address bar will recognize when a non-URL has been entered and will redirect you to a Google search automatically. Second, any URLs that were entered will be displayed as suggestions in the address bar. Note that recent URLs are only saved and displayed when you have unlocked your stashes using your password.

We also included support for mobile video playback. So anytime you open a link to a .MP4 or .3GP video, it should bring up the default movie app on your device to play it.

We have also introduced a new option in the browser preferences. The “Image link behavior” option allows you to specify how to handle opening links to images. You can specify images to be opened in a new tab, a new background tab, or to use the default behavior set by the webpage. Currently, this feature only works with links directing you to a .JPG or .PNG image, however we will likely be expanding this functionality to include popular image hosts in the future. If you have specific request for image hosts to be added, please let me know in the comments below.

Finally, we have done of bit of housekeeping in the code base, killing some crash bugs and tweaking more performance into the browser.

If you enjoy using Frost we would really appreciate your positive rating in the Android Market!

Frost 2.0 Released!

As per our previous post, Frost 2.0 has left the QA phase of development and is now available on the Android Market. The following is a list of changes:

» Added folder support. We got a lot of demand for this. You will now be able to organize your image stash into folders. Have full control over folder creation, naming, and which folder your images will be saved into.

» Added stash management and image export. With the addition of folders, we’ve given you more power over organizing your images. By selecting the “Organize” menu option in the image stash gallery, you will be able to multiselect images and then delete them, move them to other folders, or export them as JPG files to your device.

» Added feature “Save Link to Image Stash”. If you wish to save a full resolution image without having to open its thumbnail/link, selecting this option will quickly save the full size image to your stash.

» Added visual feedback for closing a tab.

» Several minor improvements and bug fixes.

If you want to learn how to use the new folder and organization features, please look at the tutorial as it has been updated. You can access the tutorial using the “Help” button in Frost’s preferences.

As always, if you find any problems or have a suggestion for the next version, please contact us through our contact page above.

3 of 5
12345