diff options
Diffstat (limited to 'frameworks/PlatformLibrary/README.txt')
-rw-r--r-- | frameworks/PlatformLibrary/README.txt | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/frameworks/PlatformLibrary/README.txt b/frameworks/PlatformLibrary/README.txt new file mode 100644 index 0000000..5ce9d2f --- /dev/null +++ b/frameworks/PlatformLibrary/README.txt @@ -0,0 +1,74 @@ +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. |