Android Apps Over the 50MB Barrier

 

Android applications have historically been limited to a maximum size of 50MB. This works for most apps, and smaller is usually better — every megabyte you add makes it harder for your users to download and get started. However, some types of apps, like high-quality 3D interactive games, require more local resources.

So today, we’re expanding the Android app size limit to 4GB.

The size of your APK file will still be limited to 50MB to ensure secure on-device storage, but you can now attach expansion files to your APK.

  • Each app can have two expansion files, each one up to 2GB, in whatever format you choose.
  • Android Market will host the files to save you the hassle and cost of file serving.
  • Users will see the total size of your app and all of the downloads before they install/purchase.

On most newer devices, when users download your app from Android Market, the expansion files will be downloaded automatically, and the refund period won’t start until the expansion files are downloaded. On older devices, your app will download the expansion files the first time it runs, via a downloader library which we’ve provided below.

While you can use the two expansion files any way you wish, we recommend that one serve as the initial download and be rarely if ever updated; the second can be smaller and serve as a “patch carrier,” getting versioned with each major release.

Helpful Resources

In order to make expansion file downloading as easy as possible for developers, we’re providing sample code and libraries in the Android SDK Manager.

  • In the Google Market Licensing package, an updated License Verification Library (LVL). This minor update mostly adds the ability to obtain expansion file details from the licensing server.
  • From the Google Market APK Expansion package, the downloader service example. The library makes it relatively simple to implement a downloader service in your application that follows many of our best practices, including resuming downloads and displaying a progress notification.

Because many developers may not be used to working with one or two large files for all of their secondary content, the example code also includes support for using a Zip file as the secondary file. The Zip example implements a reasonable patching strategy that allows for the main expansion file to “patch” the APK and the patch file to “patch” both the APK and the main expansion file by searching for asset files in all three places, in the order patch->main->APK.

Expansion File Basics

Expansion files have a specific naming convention and are located in a specific place for each app. As expansion files are uploaded to the publisher site, they are assigned a version code based upon the version of the APK that they are associated with. The naming convention and location are as follows:

Location: /Android/obb//
Filename: [main|patch]...obb
Example: /sdcard/Android/obb/com.example.myapp/main.5.com.example.myapp.obb

Expansion files are stored in shared storage. Unlike APK files, they can be read by any application.

Downloading and Using the Expansion Files

When the primary activity for the app is created, it should check to make sure the expansion files are available. The downloader library provides helper functions (for example the “Helpers” class in the code below) to make this easy.

boolean expansionFilesDelivered() {
    // get filename where main == true and version == 3
    String fileName = Helpers.getExpansionAPKFileName(this, true, 3);
    // does the file exist with FILE_SIZE?
    if (!Helpers.doesFileExist(this, fileName, FILE_SIZE, false)) {
        return false;
    }
    return true;
}

If the file does not exist, fire up the downloader service with DownloaderClientMarshaller.startDownloadServiceIfRequired(). The downloader will perform an LVL check against the server. This check will deliver the names of the files, file sizes, and the file URLs.

Once that check has been completed, it will begin downloading the files. You don’t have to use our download solution, but you might want to because we:

  • Include a notification UI that provides progress and estimated completion time in layouts customized for ICS and pre-ICS devices
  • Resume large files safely
  • Handle redirection with appropriate limits
  • Run in the background as a service
  • Pause and resume downloads when WiFi is not available

Enjoy! We can’t wait to see what kinds of things developers do with this! For more information about how to use expansion files with your app, read the APK Expansion Files developer guide.

Android Design V2

 

When we initially released Android Design, by far the number one request we received was for us to release stencils as well. The fine folks on the Android User Experience team are pleased today to release some official Android Design stencils for your mockup-creating pleasure.

With these stencils you can now drag and drop your way to beautifully designed Ice Cream Sandwich (Android 4.0) applications, with grace and ease. The stencils feature the rich typography, colors, interactive controls, and icons found throughout Ice Cream Sandwich, along with some phone and tablet outlines to frame your meticulously crafted creations.

Currently we have stencils available for those venerable interactive design powerhouses Adobe® Fireworks®, and Omni® OmniGraffle® and we may expand to other applications® in the future. The source files for the various icons and controls are also available, created in Adobe® Photoshop®, and Adobe® Illustrator®. Here are the downloads.

We’ll be updating these stencils over time so, as always, please send in your feedback!

Happy mockup making,
— Your friendly Android Design Droids

SketchUp: NHS Western Isles Hospital

 

GreenspaceLive is a software and consultancy shop based on the Isle of Lewis in Scotland. The company was founded in 2008 as a spin-out from the Greenspace Research, a low-carbon building and renewable energy research program at Lews Castle College, University of the Highlands and Islands. This case study about gModeller, the company’s SketchUp energy analysis plugin based on gbXML, comes to us from Donald Macaskill, Technical Manager and Energy Engineer at GreenspaceLive.

Making hospitals more energy efficient

Hospitals have unique energy consumption demands. Not only do a hospitals require lighting and heating 24 hours a day, but they also require ventilation, sterilization, laundry, food preparation and important medical equipment to be powered as well. Therefore, any improvements made to the building could drastically reduce the bills, freeing up money to be spent elsewhere.

The NHS Western Isles Trust are very proactive in trying to reduce their energy costs and carbon footprint. To determine their baseline energy consumption and carbon emissions and then to simulate a number of fabric and technology improvements to their largest building, they turned to GreenspaceLive. A hospital model and energy analysis workflow was created in Google SketchUp Pro with GreenspaceLive’s gTools suite.

 

Completed model for gModeller 

 

Project Methodology

To start, existing 2D CAD models and scanned paper drawings were shared via gWorkspace. These floor plans were then imported into Google SketchUp Pro. Once the floor plans had been imported, each floor was extruded to the correct height and dimensions. A detailed model is not required for the gModeller plugin, so the model could be simplified to single faces for walls, floors and roofs.

Once completed, attributes were added to the model using the gModeller’s customised materials, located within the Paint Bucket tool in SketchUp. Next, spaces were identified using the manual Space tool, which allowed the model to have zone specific information, such as heating, lighting and ventilation for different areas.

 

The completed gbXmL model 

 

The gbXML building information model generated by gModeller was now ready to be exported to an energy analysis engine. In this case, gEnergy was used, however, exported models can also be imported into Green Building Studio, Ecotect, Trace, DesignBuilder and others. gEnergy was initially run using the Hospital’s existing fabric and technologies to establish a baseline Energy Performance rating, subsequent analysis runs were then carried out with simulated improvements to the building, including proposed refurbishment changes, to determine the impact they would have on performance of the building.

Once gEnergy runs were completed, the model was exported to Google Earth and presented to the clients, showing gDashboard energy results on screen while touring their model.

 

The model in Google Earth with energy data 

 

Using the gWorkspace cloud platform, the modeling team was able to share and collaborate with the client throughout the process. Team members and client representatives were able to view, download and share files from the project, as well as view all energy runs that were undertaken.

The Results

Armed with the tools and the data, NHS Western Isles Hospital were able to model different scenarios and view the impact these changes would have. The results were dramatic – making a number of changes to the heating system, the team was able to demonstrate that the most effective change would result in over 50% energy savings, while reducing the CO2 emissions by almost 80%.

Dave Tierney, part of the Energy Team at NHS Western Isles Hospital said, “Using gTools, senior executives and staff received an overview of our carbon emissions, energy consumption and the impact changes in technology and fabric will have on our building. We can clearly see the differences in low carbon technology investment options. The results will help shape our plans for tackling carbon emissions and energy consumption in the future.”