当前位置: 首页 > 工具软件 > Addon-sdk > 使用案例 >

Android编译自定义sdk,向Android SDK中添加自定义的库 (Addon)

宇文德明
2023-12-01

一般情况下, 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):

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:sdk="http://schemas.android.com/sdk/android/addon/1">

PlatformLibrary

15

PlatformLibrary Provider

1

Platform library

http://your.site.com/sdk/android/

111215893

4ae6e0fea6742a013ded16a33c31c56c205cfd02

platform_library-eng.liusq-linux-x86.zip

Your License....

将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的库。

赞过:

赞 正在加载……

相关

 类似资料: