一般情况下, 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的库。
赞过:
赞 正在加载……
相关