You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
3.2 KiB
75 lines
3.2 KiB
Platform Library Example
|
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
This directory contains a full example of writing your own Android platform
|
|
shared library, without changing the Android framework. It also shows how to
|
|
write JNI code for incorporating native code into the library, and a client
|
|
application that uses the library.
|
|
|
|
This example is ONLY for people working with the open source platform to
|
|
create a system image that will be delivered on a device which will include
|
|
a custom library as shown here. It can not be used to create a third party
|
|
shared library, which is not currently supported in Android.
|
|
|
|
To declare your library to the framework, you must place a file with a .xml
|
|
extension in the /system/etc/permissions directory with the following contents:
|
|
|
|
<?xml version="1.0" encoding="utf-8"?>
|
|
<permissions>
|
|
<library name="com.example.android.platform_library"
|
|
file="/system/framework/com.example.android.platform_library.jar"/>
|
|
</permissions>
|
|
|
|
There are three major parts of this example, supplying three distinct
|
|
build targets and corresponding build outputs:
|
|
|
|
|
|
com.example.android.platform_library
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
The top-level Android.mk defines the rules to build the shared library itself,
|
|
whose target is "com.example.android.platform_library". The code for this
|
|
library lives under java/.
|
|
|
|
Note that the product for this library is a raw .jar file, NOT a .apk, which
|
|
means there is no manifest or resources associated with the library.
|
|
Unfortunately this means that if you need any resources for the library, such
|
|
as drawables or layout files, you will need to add these to the core framework
|
|
resources under frameworks/base/res. Please make sure when doing this that
|
|
you do not make any of these resources public, they should not become part of
|
|
the Android API. In the future we will allow shared libraries to have their
|
|
own resources.
|
|
|
|
Other than that, the library is very straight-forward, and you can write
|
|
basically whatever code you want. You can also put code in other Java
|
|
namespaces -- the namespace given in the <library> tag above is just the
|
|
public unique name by which clients will link to your library, but once this
|
|
link happens all of the Java namespaces in that library will be available
|
|
to the client.
|
|
|
|
|
|
libplatform_library_jni
|
|
~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
This is an optional example of how to write JNI code associated with a
|
|
shared library. This code lives under jni/. The jni/Android.mk file defines
|
|
the rules for building the final .so in which the code lives. This example
|
|
provides everything needed to hook up the native code with the Java library
|
|
and call through to it, plus a very simple JNI call.
|
|
|
|
|
|
PlatformLibraryClient
|
|
~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
This shows an example of how you can write client applications for your new
|
|
shared library. This code lives under client/. Note that the example is
|
|
simply a regular Android .apk, like all of the other .apks created by the
|
|
build system. The only two special things needed to use your library are:
|
|
|
|
- A LOCAL_JAVA_LIBRARIES line in the Android.mk to have the build system link
|
|
against your shared library.
|
|
|
|
- A <uses-library> line in the AndroidManifest.xml to have the runtime load
|
|
your library into the application.
|