26 Jul 2016
From small, at-home businesses to multi-billion dollar companies, modern technology is taking over. Your favorite coffee shop has you sign a tablet with your finger, and who even brings a pen and paper to meetings anymore? Whatever you do, whether you're a small business owner, or someone working for a corporate company, or even the […]
Come comment on this article: Best office apps
26 Jul 2016 6:35pm GMT
Phones are ditching the 3.5mm headphone jack, so if you haven't already moved to Bluetooth headphones, now's a great time to consider making the switch. If you are interested, we've got a solid deal that shave nearly half the price off of a pair of KOAR bone conduction wireless headphones. Bone conduction headphones aren't brand […]
Come comment on this article: [TA Deals] Save 48% on a bone conduction Bluetooth headset
26 Jul 2016 6:00pm GMT
When BlackBerry was flying high in its heyday, one of the benefits of the devices was how well they played with corporate IT environments, especially the heightened security requirements. Since then the company has tumbled, but recently has been trying to make a comeback on the back of Android powered devices. Today BlackBerry officially announced […]
Come comment on this article: BlackBerry DTEK50 Android phone launches as 'most secure'
26 Jul 2016 5:08pm GMT
22 Jul 2016
Posted by Anthony Morris, SWE Google Play
Google Play continues to grow rapidly, as Android users installed over 65 billion apps in the last year from the Google Play Store. We're also seeing developers move to update their apps more frequently to push great new content, patch security vulnerabilities, and iterate quickly on user feedback.
However, many users are sensitive to the amount of data they use, especially if they are not on Wi-Fi. Google Play is investing in improvements to reduce the data that needs to be transferred for app installs and updates, while making data cost more transparent to users.
Read on to understand the updates and learn some tips for ways to optimize the size of your APK.
New Delta algorithm to reduce the size of app updates
For approximately 98% of app updates from the Play Store, only changes (deltas) to APK files are downloaded and merged with the existing files, reducing the size of updates. Google Play has used delta algorithms since 2012, and we recently rolled out an additional delta algorithm, bsdiff (created by Colin Percival1), that our experimentation shows can reduce delta size by up to 50% or more compared to the previous algorithm for some APKs. Bsdiff is specifically targeted to produce more efficient deltas of native libraries by taking advantage of the specific ways in which compiled native code changes between versions. To be most effective, native libraries should be stored uncompressed (compression interferes with delta algorithms).
An example from Chrome:
|Patch Description||Previous patch size||Bsdiff Size|
|M46 to M47 major update||22.8 MB||12.9 MB|
|M47 minor update||15.3 MB||3.6 MB|
Apps that don't have uncompressed native libraries can see a 5% decrease in size on average, compared to the previous delta algorithm.
Applying the delta algorithm to APK Expansion Files to further reduce update size
APK Expansion Files allow you to include additional large files up to 2GB in size (e.g. high resolution graphics or media files) with your app, which is especially popular with games. We have recently expanded our delta and compression algorithms to apply to these APK Expansion Files in addition to APKs, reducing the download size of initial installs by 12%, and updates by 65% on average. APK Expansion file patches use the xdelta algorithm.
Clearer size information in the Play Store
Alongside the improvements to reduce download size, we also made information displayed about data used and download sizes in the Play Store clearer. You can now see actual download sizes, not the APK file size, in the Play Store. If you already have an app, you will only see the update size. These changes are rolling out now.
Colin Percival, Naive differences of executable code, http://www.daemonology.net/bsdiff/, 2003. ↩
Tips to reduce your download sizes
1. Optimize for the right size measurements: Users care about download size (i.e. how many bytes are transferred when installing/updating an app), and they care about disk size (i.e. how much space the app takes up on disk). It's important to note that neither of these are the same as the original APK file size nor necessarily correlated.
|Compressed Native Library||Uncompressed Native Library|
|APK Size||39MB||52MB (+25%)|
|Download size (install)||29MB||29MB (no change)|
|Download size (update)||29MB||21MB (-29%)|
|Disk size||71MB||52MB (-26%)|
Chrome found that initial download size remained the same by not compressing the native library in their APK, while the APK size increased, because Google Play already performs compression for downloads. They also found that the update size decreased, as deltas are more effective with uncompressed files, and disk size decreased as you no longer need an compressed copy of the native library. However, please note, native libraries should only be uncompressed when the minimum SDK version for an APK is 23 (Marshmallow) or later.
2. Reduce your APK size: Remove unnecessary data from the APK like unused resources and code.
3. Optimize parts of your APK to make them smaller: Using more efficient file formats, for example by using WebP instead of JPEG, or by using Proguard to remove unused code.
- Read more about reducing APK sizes and watch the I/O 2016 session 'Putting Your App on a Diet' to learn from Wojtek Kaliciński, about how to reduce the size of your APK.
22 Jul 2016 5:55pm GMT
20 Jul 2016
With the growth of the Internet of Things, connecting Android applications to Wi-Fi enabled devices is becoming more and more common. Whether you're building an app for a remote viewfinder, to set up a connected light bulb, or to control a quadcopter, if it's Wi-Fi based you will need to connect to a hotspot that may not have Internet connectivity.
From Lollipop onwards the OS became a little more intelligent, allowing multiple network connections and not routing data to networks that don't have Internet connectivity. That's very useful for users as they don't lose connectivity when they're near Wi-Fis with captive portals. Data routing APIs were added for developers, so you can ensure that only the appropriate app traffic is routed over the Wi-Fi connection to the external device.
To make the APIs easier to understand, it is good to know that there are 3 sets of networks available to developers:
- WiFiManager#startScan returns a list of available Wi-Fi networks. They are primarily identified by SSID.
- WiFiManager#getConfiguredNetworks returns a list of the Wi-Fi networks configured on the device, also indexed by SSID, but they are not necessarily currently available.
- ConnectivityManager#getAllNetworks returns a list of networks that are being interacted with by the phone. This is necessary as from Lollipop onwards a device may be connected to multiple networks at once, Wi-Fi, LTE, Bluetooth, etc… The current state of each is available by calling ConnectivityManager#getNetworkInfo and is identified by a network ID.
In all versions of Android you start by scanning for available Wi-Fi networks with WiFiManager#startScan, iterate through the ScanResults looking for the SSID of your external Wi-Fi device. Once you've found it you can check if it is already a configured network using WifiManager#getConfiguredNetworks and iterating through the WifiConfigurations returned, matching on SSID. It's worth noting that the SSIDs of the configured networks are enclosed in double quotes, whilst the SSIDs returned in ScanResults are not.
If your network is configured you can obtain the network ID from the WifiConfiguration object. Otherwise you can configure it using WifiManager#addNetwork and keep track of the network id that is returned.
To connect to the Wi-Fi network, register a BroadcastReceiver that listens for WifiManager.NETWORK_STATE_CHANGED_ACTION and then call WifiManager.enableNetwork (int netId, boolean disableOthers), passing in your network ID. The enableNetwork call disables all the other Wi-Fi access points for the next scan, locates the one you've requested and connects to it. When you receive the network broadcasts you can check with WifiManager#getConnectionInfo that you're successfully connected to the correct network. But, on Lollipop and above, if that network doesn't have internet connectivity network, requests will not be routed to it.
Routing network requests
To direct all the network requests from your app to an external Wi-Fi device, call ConnectivityManager#setProcessDefaultNetwork on Lollipop devices, and on Marshmallow call ConnectivityManager#bindProcessToNetwork instead, which is a direct API replacement. Note that these calls require android.permission.INTERNET; otherwise they will just return false.
Alternatively, if you'd like to route some of your app traffic to the Wi-Fi device and some to the Internet over the mobile network:
- For HTTP requests you can use Network#openConnection(java.net.URL), directly routing your request to this network.
- For low-level socket communication, open a socket and call Network#bindSocket(java.net.Socket), or alternatively use Network#getSocketFactory.
Now you can keep your users connected whilst they benefit from your innovative Wi-Fi enabled products.
20 Jul 2016 5:21pm GMT
Posted by Lily Sheringham, Google Play team
Based in Dublin, Ireland, StoryToys is a leading publisher of interactive books and games for children. Like most kids' app developers, they faced the challenges of engaging with the right audiences to get their content discovered. Since the launch of the Family section on Google Play, StoryToys has experienced an uplift of 270% in revenue and an increase of 1300% in downloads.
Hear Emmet O'Neill, Chief Product Officer, and Gavin Barrett, Commercial Director, discuss how the Family section creates a trusted and creative space for families to find new content. Also hear how beta testing, localized pricing and more, has allowed StoryToy's flagship app, My Very Hungry Caterpillar, to significantly increase engagement and revenue.
Learn more about Google Play for Families and get the Playbook for Developers app to stay up-to-date with more features and best practices that will help you grow a successful business on Google Play.
20 Jul 2016 4:21pm GMT
10 Nov 2011
From the developer of Meganoid and Stardash comes a new action arcade game: INC! http://www.youtube.com/watch?v=9j5OEG-3RyM Get it from the...
10 Nov 2011 9:31am GMT
More than 1000 broadcast cameras for you online - the most incendiary models in Russia. 1000 girls, 1000, the temptations, 1000, full of desire - all...
10 Nov 2011 7:48am GMT
Hi Friends I decided to work with a tab layout application. Program consist of 3 tabs and a button. I like to place the button below the tab. ...
10 Nov 2011 5:20am GMT