首页 > Android > 向Android SDK中添加自定义的库 (Addon)

向Android SDK中添加自定义的库 (Addon)

一般情况下, Android中的第三方应用程序SDK都由开发者直接打包发布,在使用SDK的时候,将所需要的文件(jar、native共享库)加入到项目中 ,这是最通用的方式。不过对于每个应用程序而言,都需要引入包含独立的SDK的库文件,这使得应用程序的大小难以控制,尽管如此,这是对于不能修改Android ROM的前提下发布SDK的唯一可行方式。

如果可以自定义Andoid ROM或者独立控制ROM的发布(通常对于Android手机厂商而言),则可以将这些SDK库放到Android ROM的system下面,使得应用程序可以共享SDK库。在Android的源代码(AOSP)中,包含了PlatformLibrary这样一个例子
($ANDROID_SRC/device/sample/frameworks/)。

1. 编译PlatformLibrary并将其集成进Android ROM

在编译完成Android的Source Code之后, 删除生成的system.img,然后编译PlatformLibrary并将之集成进新的system.img中。

编译PlatformLibrary的方法参考$ANDROID_SRC/device/sample/frameworks/PlatformLibrary/README.txt

#lunch full-eng && make -j8
#rm $ANDROID_SRC/out/target/product/generic/obj/PACKAGING/systemimage_intermediates/system.img
#make com.example.android.platform_library
#make libplatform_library_jni
#make PlatformLibraryClient
#cp $ANDROID_SRC/device/sample/frameworks/PlatformLibrary/com.example.android.platform_library.xml $ANDROID_SRC/out/target/product/generic/system

这样生成的Android ROM就包含了PlatformLibrary。 可以在emulator里面直接运行PlatformLibraryClient。但是PlatformLibraryClient是集成进system的应用,对于第三方开发者来说,仍然不能够方便的时候PlatformLibrary作为共享库,这需要创建其SDK Add-on。

2. 创建PlatformLibrary的SDK Add-on
2.1 编译SDK Add-on
make -j8 PRODUCT-sample_addon-sdk_addon

在host下面生成对应的add-on的压缩包:out/host/linux-x86/sdk_addon/platform_library-eng.host-linux-x86.zip.
这里存在的一个问题是zip包中的platform_library.jar的大小为0,需要修改Makefile并重新编译得到正确的jar包。
首先,在device/sample/products/sample_addon.mk中添加如一行:PRODUCT_SDK_ADDON_STUB_DEFS := device/sample/products/xyz.defs 【1

# List of apps and optional libraries (Java and native) to put in the add-on system image.
 
PRODUCT_SDK_ADDON_STUB_DEFS := device/sample/products/xyz.defs

然后,再创建device/sample/products/xyz.defs:

+com.example.android.platform_library.*

最后,重新编译目标 PRODUCT-sample_addon-sdk_addon,得到正确的add-on压缩包。

2.2 发布SDK Add-on

为是开发者能够使用到add-on,需要将其发布到SDK Manager可以访问到的地方并安装。 假定我们提供HTTP的方式发布, 首先需要提供对这个Add-on描述的xml文件(repository.xml):

<?xml version="1.0" encoding="UTF-8"?>
<sdk:sdk-addon
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:sdk="http://schemas.android.com/sdk/android/addon/1">

    <sdk:add-on>
        <sdk:name>PlatformLibrary</sdk:name>
        <sdk:api-level>15</sdk:api-level>
        <sdk:vendor>PlatformLibrary Provider</sdk:vendor>
        <sdk:revision>1</sdk:revision>
        <sdk:description>Platform library</sdk:description>
        <sdk:desc-url>http://your.site.com/sdk/android/</sdk:desc-url>
        <sdk:uses-license ref="your-android-addon-license" />
        <sdk:archives>
            <sdk:archive arch="any" os="any">
                <sdk:size>111215893</sdk:size>
                <sdk:checksum type="sha1">4ae6e0fea6742a013ded16a33c31c56c205cfd02</sdk:checksum>
                <sdk:url>platform_library-eng.liusq-linux-x86.zip</sdk:url>
            </sdk:archive>
        </sdk:archives>
        <sdk:libs>
        </sdk:libs>
    </sdk:add-on>

 <sdk:license type="text" id="your-android-addon-license">
    Your License....
    </sdk:license>
</sdk:sdk-addon>

将repository.xml和add-on的压缩包放到你的服务器上(http://your.site.com/sdk/repostory.xml )。

3. 使用Add-on
3.1 在Android SDK Manager中添加Add-on

首先,在Android SDK Manager中:”Tools” -> “Manager Add-On Sites” -> “User Defined Sites” -> “New”添加repository.xml的URL。
然后,在SDK Manager中的Packages列表中安装相应的Add-on(PlatformLibrary).

3.2 在Eclipse中使用Add-on的Library

在Eclipse中创建新的Android项目,在“New Android Application”的Wizard中,“Compile with”选择你所创建并安装的Android SDK Add-on的名字(Sample Add-on)。随后,在你的项目中可以使用PlatformLibrary的库。

分类:Android
  1. 还没有评论。
  1. No trackbacks yet.

留下评论