Version 8.9 of the Play Store began rolling out earlier today, but as usual, you're probably not going to spot a lot of changes. However, I've been watching the last few updates and there have been clues for a few projects that are slowly coming together. Some truly cool things may be coming to us later this year, including what appears to be apps that can be downloaded in separate pieces. It also looks like users in data-constrained regions will soon be able to share updates with each other. Finally, we may soon be able to see a history of the edits users have made to their app reviews. If you want to skip the wait, hit the link at the bottom of the post!
The features discussed below are probably not live yet, or may only be live for a small percentage of users. Unless stated otherwise, don't expect to see these features if you install the apk.
We probably should have seen this one coming. Once Instant apps were announced and Google revealed people could have a partial version of an apk, then acquire the rest if they decided to install it permanently, it was only a matter of time before somebody suggested intentionally distributing apps that are meant to be missing pieces. At least this is what appears to be implied by some new text from the last few versions of the Play Store.
Google is referring to this as "split install" for now. The strings below are part of a basic interaction where an app asks the Play Store to install additional modules, at which point users are prompted to go forward with a download or refuse.
<string name="split_install_confirmation_title_text">Download new module for %1$s</string>
<string name="split_install_confirmation_body_text">%1$s is requesting to download an additional module. This might incur extra data usage charges.</string>
<string name="split_install_confirmation_details_text">Download size: %1$s</string>
<string name="split_install_splash_screen_progress_message_text">Updating %1$s</string>
<activity finsky:theme="@style/FinskyTheme" finsky:name="com.google.android.finsky.splitinstallservice.SplitInstallRestartSplashScreenActivity" finsky:taskAffinity=":splitinstallui" finsky:excludeFromRecents="true" finsky:launchMode="singleInstance" finsky:configChanges="keyboardHidden|orientation|screenSize" finsky:noHistory="true" />
<activity finsky:theme="@style/SplitInstallConfirmationDialogTheme" finsky:name="com.google.android.finsky.activities.SplitInstallConfirmationDialogActivity" finsky:taskAffinity="" finsky:excludeFromRecents="true" finsky:launchMode="singleInstance" finsky:noHistory="true">
<action finsky:name="android.intent.action.SPLIT_INSTALL_CONFIRMATION" />
<category finsky:name="android.intent.category.DEFAULT" />
Unfortunately, that's where the details end, and it leaves some questions. My first thought is that there's nothing to confirm the modules may contain executable code. By that I mean the Play Store already supports a pair of 2GB "expansion files" to go with the base APK, but they're only intended to contain raw data rather than executable code – not that there aren't workarounds.
What interests me even more is the possibility that this could allow extremely large games to be downloaded in chapters, as opposed to pulling down a full 4GB or so right from the start. You might need just a base portion of a game, then new stages could be downloaded as just 100MB parts as they are needed. It is worth noting, there's nothing yet to suggest individual modules can then be deleted once you're done with them.
Even moderately sized apps might be worth breaking into a few pieces to save space, especially if some parts are only important to users that have invested in the in-app purchases. There are several interesting possibilities here, but not enough data to make any firm assertions yet. I'm kinda hoping for an announcement in the next few months, around May 8th, perhaps.
Peer-to-peer app updates
Google has been working for years to find new ways to reduce data usage for markets where cellular connectivity is expensive and Wi-Fi is either slow or hard to find. Many of these efforts were focused on encouraging developers to use make their own apps smaller, but the Play Store also took a few important steps like supporting delta updates.
Based on clues in the last few versions of the Play Store, it looks like Google may also be working on a clever new feature that works a lot like peer-to-peer file sharing, but it will specifically trade updates with other nearby users. The basic idea seems to be that once one person gets an update, it can be shared with others. Compared to downloading over slow and costly networks, this can make the updates fast and free for everybody else.
One thing that's hard to explain is the presence of a pair of strings belonging to a permission. The label calls it "Google Play Peer To Peer App Install API," and it's described as allowing users to install "Play Verified P2P apps." This might indicate that my read of the clues is off, but I can also see it as meaning Google may be allowing first-time installation of apps from a peer, rather than just getting the updates.
<string name="mitosis_runtime_notification_title">Checking for app updates</string>
<string name="mitosis_runtime_notification_message">Exchanging app updates with nearby devices.</string>
<string name="perm_p2p_app_install_desc">Allows the user to install Play Verified P2P apps.</string>
<string name="perm_p2p_app_install_label">Google Play Peer To Peer App Install API</string>
<activity finsky:theme="@style/PeerAppSharingInstallDialog" finsky:label="@string/permissions_title" finsky:name="com.google.android.finsky.p2p.PeerAppSharingInstallActivity" finsky:exported="false" finsky:excludeFromRecents="true" finsky:launchMode="singleInstance" finsky:allowTaskReparenting="true" finsky:noHistory="true" />
<service finsky:name="com.google.android.finsky.p2p.PeerAppSharingService" finsky:permission="com.android.vending.p2p.APP_INSTALL_API" finsky:exported="true">
<action finsky:name="com.android.vending.p2p.IPeerAppSharingService.BIND" />
<permission finsky:label="@string/perm_p2p_app_install_label" finsky:name="com.android.vending.p2p.APP_INSTALL_API" finsky:protectionLevel="signature|signatureOrSystem" finsky:permissionGroup="android.permission-group.NETWORK" finsky:description="@string/perm_p2p_app_install_desc" />
<activity finsky:label="Mitosis Debug" finsky:name="com.google.android.gms.peerdownloadmanager.common.DebugChimeraActivity" finsky:exported="false" finsky:process=":peerdownloadmanager" />
I'm not yet sure which wireless technologies are going to be supported for exchanges – trading over the same Wi-Fi network, Wi-Fi Direct, or Bluetooth are all possibilities. However, it may be using the updated Nearby Connections API to find possible sources. A list of peers is displayed and it seems the update could be acquired from them. Beyond that, it's hard to discern much more.
There may be some degree of risk to privacy and security with a system like this, so Google will have to tread carefully. Regarding security, apks are signed with cryptographic keys that are used to verify updates before installing them on top of existing versions. Those keys theoretically can't be spoofed and should make the system fairly safe, but methods have been found before to compromise the system. As for security, there is a chance people will try to determine which apps are installed on the devices of those around them, and that could lead to potentially severe results.
Aside from those potential issues, this could massively improve the experience of rolling out updates to data-constrained areas of the world.
Edit history for reviews is going public
Most of us are probably more than a little leary of reading reviews on the Play Store. If you can overlook the bad grammar and filter out the lazily written fakes, you're still left with a lot of reviews with very little helpful commentary. Every once in a while, you'll even see one of those reviews that obviously started as a review, but after either some back-and-forth with the developer, or perhaps just a subsequent update, it has turned into something that reads more like the closing response of a support ticket.
Our opinions change over time, and the context of how they change can be just as telling as what was said in the first or final versions. The Play Store recently added a visual marker that reviews had been edited, and also began displaying a message that developers would be able to see the history of edits made in user reviews (both pictured above), but now it looks like Google is going to make those edit histories publicly visible to everybody.
<string name="public_reviews_edit_history_message">Edit history is public to anyone who can see this review.</string>
<string name="edited_review_tag">· Edited</string>
<string name="edit_history_label">Edit History</string>
<string name="review_edit_history_choice">View edit history</string>
<string name="review_edit_history_timestamp">%1$s at %2$s</string>
The text above explains that edit history will be visible to anybody that can see the review. Of course, the likely reason for that phrasing is that reviews in the beta channel or of private apps are visible only to a limited set of people. Histories appear to contain just the text of the edit and the timestamp for when it was posted.
Exposing prior edits may raise some serious privacy concerns. We've seen instances where users have left phone numbers, personal addresses (both physical and email), and even credit card details. Just as people have gone back to fix typos, others have gone back to remove personal details. Hopefully Google will either wipe away edit history predating a certain point or at least try to scrub these details from reviews.
It's worth noting, just like now, the entire edit history for a review can be wiped out by simply deleting the review. If you're not happy about the look of an old version, it's as easy as deleting the old version and pasting in a copy of the updated text.
The APK is signed by Google and upgrades your existing app. The cryptographic signature guarantees that the file is safe to install and was not tampered with in any way. Rather than wait for Google to push this download to your devices, which can take days, download and install it just like any other APK.