Thinking about the problems related to installing apps on the SD card,
one of the issues that always struck me as a trick one was to manage
the possibility that a user might install apps on multiple SD cards,
and swap those cards.
What if we don't try to resolve this problem? We could significantly
reduce the difficulty reduce the problem by only ever allowing apps on
a single SD card, i.e. by making the system track apps on no more than
one SD card at a time: if the system is already tracking one SD card
and another one is inserted, we could explicitly forget everything
about the first SD card if the user wants to install apps on the
second one. The package database could be purged of any record of any
apps on the first card, and forgetting the encryption key to the
filesystem on the first one guarantees that we won't ever access those
files by accident.
I think that this would still make "apps on SD" useful to our users
while reducing the amount of work that has to happen in a first phase.
We're not talking about a cupcake timeframe, of course, but this might
speed up the process to see apps on SD in a future release.
Thoughts?
--
Jean-Baptiste M. "JBQ" Queru
Android Engineer, Google.
Imho the following should happen;
1) When Android detects a new SD card has been inserted it should
perform some actions which obtain a list of apps installed on the SD card.
2) When Android detects the SD card has been removed it should forget
about *everything* on that SD card (apps, media, data, etc.).
Trying to track apps across multiple-sd cards is nigh on impossible
because if an SD card gets used in two separate android devices then
what happens when one of them uninstalls one of the apps on the SD card?
Al.
--
======
Funky Android Limited is registered in England & Wales with the
company number 6741909. The registered head office is Kemp House,
152-160 City Road, London, EC1V 2NX, UK.
The views expressed in this email are those of the author and not
necessarily those of Funky Android Limited, it's associates, or it's
subsidiaries.
If we talking about settings (e.g. permission grants, etc.), that could
be stored along with the crypto-signature of the app. This would allow
users to copy apps between SDs (e.g. when they buy a larger card) and
the device will treat the app on the new SD in the same way as it did on
the old SD. A settings manager could be provided which allows users to
delete the settings of any app which isn't used any more (similar to
most games consoles saved game data option).
As for system modifications, I'm against apps being allowed to modify
the system in any way that isn't localised to the apps environment
(mainly because you end up in bun-fights when two apps want a setting to
be different things).
Al.
I'd suggest the default is to store the apps data with the app (i.e. on
whatever source it was loaded from; internal memory, SD card, NAS,
etc.), this could be extended to allow apps to be loaded from a network
source and put their data back to that source (think about an office
suite where the apks can be downloaded from a web server and the data
documents are pushed back to the server for storage).
I'd suggest we generalise this concept out and think about larger
storage options (e.g. an external hard disk). We have an opportunity to
build now a framework which will scale up beyond the G1 to netbooks and
ever larger processing devices so I think we need to think carefully
about a solution that works will in larger environments as well as one
that works for 'phones (anyone for Google powered by a network of
Android servers :)).
Al.
> <j...@google.com <mailto:j...@google.com> <mailto:j...@google.com
I think it would be better for the OS to look for an apps data in
${app_source}/blah then /blah, then /sdcard1/blah, etc., etc., etc.
Al.
--
Romain Guy
Android framework engineer
roma...@android.com
Note: please don't send private questions to me, as I don't have time
to provide private support. All such questions should be posted on
public forums, where I and others can see and answer them
If end distributors want to add it, then that's fine. But lets not build
a crude form of DRM into an "Open" OS and not give an option to apps
outside the DRM mechanism.
An SD card is an SD card, putting users through any process beyond
inserting it and being able to use it as storage for apps, data, etc.
and letting them move that between devices is just going to really annoy
people.
Al.
Al.
> Overlay lets it be expanded without spinning a new platform. (n800
> right now can have sd1, sd2, usb-hdd 0-n and nfs mounts..)
>
> Plus it makes it transparent to the app - you still open
> /data/data/com.my.app/ just like before. (So no sdk change.)
>
> On Mon, Dec 22, 2008 at 12:02 PM, Al Sutton <a...@funkyandroid.com
> <mailto:a...@funkyandroid.com>> wrote:
>
>
> I'm not a fan of overlay mounts. What happens when the user runs
> the app without a card in, does wome work, and then inserts a
> card? Does all the data get hidden by the overlay mount?
>
> I think it would be better for the OS to look for an apps data in
> ${app_source}/blah then /blah, then /sdcard1/blah, etc., etc., etc.
>
> Al.
>
--
Please lest not go down the route device tied encryption for the SD card. It puts a total block on being able to move an SD card between devices without having to do a re-install (Where would U3 and portable PC apps be if USB did that?).
If apps need verify they have been purchased for that device or user
then that's something we need to provide a DRM API for, but free apps
should be freely (and easily) moveable between devices and we shouldn't
look to a solution which gives a poor user experience for free apps just
to accommodate pay-for ones.
The DRM API could be as simple as having a set of license keys which are
associated with the user and/or device which are downloaded when the
user makes a purchase. The keys are stored in a secure location in the
devices internal memory which can't be "adb pulled", include a digital
signature to verify they are authentic, and when an app wants to check
what rights have been purchased it calls an IP which checks the license
keys on the device, returns to the app the features which have been
purchased, and the can unlock functionality as necessary.
Everything in the last paragraph except the protected license key
storage mechanism is something I've already coded as an app, the keys
are <1K each, and this method allows SD cards to contain apps in an
unencrypted file system, and thus negates the need for a re-install
every time a new device is encountered.
Imho any mechanism which stops a user taking an SD card full of free
applications from one android device, putting it in another, and just
using it is just going to annoy users and so should be rejected. You
only need to look at things like the SecuROM saga with Spore to see the
kind of backlash that can be expected.
Al.
Thanks,
Al.
I have no problem with data privacy and data integrity where the
application wants them, what I'm against is forcing apps that don't need
(or want) these features into a system that blanket enforces them at the
cost of transportability of applications.
There seems to be a lot of "hacked" functionality. When Mike Jennings
gave his talk in London in September he was being quizzed of trust
mechanisms I offered an option by explaining how the Symbian system
works. His response gave me the impression it was something that hadn't
even been discussed inside the team to the extent he wanted to talk to
me about it afterwards. He got crowded, I gave him my card, I've not
heard anything since.
Hacked functionality may get a job done in the short term, but it
always comes back to bite you in the long term, and from I've seen I
think the big bite on this will be user reaction to not being able to
move around apps on a SD card stick the way they can move portable apps
on their desktops.
Al.
> <mailto:a...@funkyandroid.com <mailto:a...@funkyandroid.com>>>
> <mailto:j...@google.com <mailto:j...@google.com>>>
I'm not saying we remove functionality. I'm saying we offer the ability
not to be bound by it in a context where it may not make sense.
Al.
As for permissions on top of a FAT
filesystem...http://en.wikipedia.org/wiki/UMSDOS :)
Al.
> <http://code.google.com/android/reference/android/content/Context.html#MODE_WORLD_READABLE>
> and/or MODE_WORLD_WRITEABLE
> <http://code.google.com/android/reference/android/content/Context.html#MODE_WORLD_WRITEABLE>
> <mailto:j...@google.com <mailto:j...@google.com>>>>>
As for the UMSDOS, it works, and if it falls short in some places, well,
it's looking for a maintainer :).
Al.
Al.