Deploying shared resources

by Jargon » Thu, 25 Mar 2010 00:56:10 GMT

Sponsored Links

We are investigating the possibilities to package & deploy platform UI
extensions which can contain both Java code and resources - which then
can be (re-)used by applications using <uses-library> tag in the

One solution which has been discussed was to use the aapt -x option
together with the new --custom-package option introduced in November
to generate unique resource identifiers for the shared resource

Then, just as the <uses-library> information in the manifest file
would bootstrap the class loader with the listed  extension packages,
it would add these packages to the asset manager as well - allowing
the asset manager to locate and load the extension resources. (This
would require a platform extension.)

So, my question is really if this is a way forward - using the 8
package bits in the resource identifiers? This solution would probably
work initially for one vendor since the allocation of unique package
identifiers would be an internal issue, but if extension packages
where to be exchanged within the android community there would be a
high risk of packages using the same identifiers.

Jrgen Ekstrm
Software Engineer
Sony Ericsson


Deploying shared resources

by Mark Murphy » Thu, 25 Mar 2010 01:03:31 GMT


You and me both, though I'm not trying to use <uses-library>.

That's interesting -- I had not noticed --custom-package before. I will
need to do some experiments to see if this helps with the solution I'm
working on.

I'm trying to avoid anything that requires modifying the SDK, and I
agree that overloading <uses-library> this way would require such
modifications AFAIK.

What are the "8 package bits"?

The issue of identifier collisions is a well-understood one for those
who have done development before with reusable components or modular
operating systems. Everything from Linux's apt and yum to Ruby gems
requires unique identifiers. So long as there are a handful of popular
repositories, "first one in wins" should suffice there.

Hence, I am not that worried about that aspect of the problem too much.
Whoever comes up with a component packaging system just needs to also
run a repository.

Mark Murphy (a Commons Guy)  | 

_The Busy Coder's Guide to *Advanced* Android Development_
Version 1.4 Available!


Sponsored Links

Deploying shared resources

by Jargon » Wed, 31 Mar 2010 15:28:31 GMT

 n Mar 24, 7:03pm, Mark Murphy <> wrote:
Can you explain more of your strategy - and how to avoid platform
My initial plan is to do very small changes in the platform to enable
to build their own resource packages, just as framework-res.apk, since
of the stuff already seems to be there. Then looking into a more long-
term solution
which eliminates the "unique package identifier" issue which in
basically by replacing the top 8 package bits in the resource
identifier with a
namespace identifier, e.g. "". Such a solution would
introduction of third party packages just by adding them into the file
system since
their resources would not clash with existing ones.

This fix enabled us to use the aapt tool as is, without any patching.
Still we
are considering another option --custom-package-id which would enable
control of which package identifier is assigned to the generated

We were considering introducing a <uses-resources> tag but this would
require a lot more changes. To me, it feels natural to think that a
could hold both code and resources.

Each resource identifier consists of 32 bits were 8 top bits defines
package in which the resource belongs to. Platform resources are 0x01
and 0x7F are application resources. The idea is to use the remaining
253 values for extension packages.

With the introduction of namespace, e.g. "" such a
repository would
not be needed since they would eliminate resource clashing.


Other Threads

1. ScrollView with EditText - Scrolling in EditText Issue

Did you find a solution to this. I am having the same problem.
Debating overriding onInterceptTouchEvent in ScrollView and figuring
out how to get it to not steal the events from the EditText but hoping
I don't have to go there.


2. Updating a pre-installed application from Android Market

We will release an application that will be pre installed into ROM's
Today we wanted it to make a test to see how the upgrade will work.

We manually installed our application in system/app (because this is
were the preloaded apps are installed) and at the same time we
published the same application with same signing certificate and same
package name with version code incremented (so it will behave as

And to my surprise the Android Market didn't display my app with
"Update available" it displayed only "FREE", when I selected it it
replaced my app and download the new app in directory data/app.

However, Google Maps that is also preloaded present an update through
the Android

After I installed the new version app from the Android Market if I
removed both sames apps (one from system/app and the other from data/
app), if I install again the old version app in my system/app
directory, the android market behaves as expected displaying "Update
It looks like to be able to see the upgrade available the device needs
to install the app from the android market mandatory.

Is there a way we can avoid this, and just with a preloaded app to be
able to see "Upgrade available" from the android market???
Are we missing something in our manifest??


3. Bottom of one LinearLayout being hidden by other LinearLayout?

4. Offscreen drawing of a View

5. how to avoid data damage after power down

6. How to Read E-pub File in android from sd card and with formatted output

7. Background color of selected text