android--APK引用在系统中打包的功能jar包验证

最近在做一个项目,第三方给出相应的porting API接口,要求我们按照功能封装成jar,为了项目的顺利推进及后续的更新方便,第三方要求将封装的api接口放在系统下面编译成系统jar包;

直接上图:

jar工程验证的文件结构;

以下是Android.mk文件内容

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := fmradioif——自己随便命名,最好是相应的包名
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-java-files-under, src) \
           src/java/com/ti/fm/IFmRadio.aidl


include $(BUILD_JAVA_LIBRARY)


include $(CLEAR_VARS)
LOCAL_MODULE := com.ti.fm.fmradioif.xml
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE_CLASS := ETC
LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/permissions
LOCAL_SRC_FILES := $(LOCAL_MODULE)


LOCAL_CERTIFICATE := platform
include $(BUILD_PREBUILT)

生成的系统jar包放在system\framework下面

文件存放在system\etc\permissions下面,注意name是所使用jar起的名字,唯一即可,在apk中会使用到保持一致即可。

然后file指明jar的路径及名称,注意与编译生成时的一致。

以下是com.ti.fm.fmradioif.xml内容

<?xml version="1.0" encoding="utf-8"?>


<permissions>
    <library name="fmradioif"
             file="/system/framework/fmradioif.jar"/>
</permissions>


apk如何引用,在所需要使用的AndroidManifest.xml中添加:

<uses-library android:name="android.user.library" />

经过验证可以达到在第三方升级更改他们应用的情况, 我们的jar不动;我们更新jar porting后第三方不用重新打包他们的APK;

不过这种方式必须有系统相应编译环境才行;个人的开发经验来看 推荐使用 

DexClassLoader类 或者 PathClassLoader类来实现动态更新加载——这种方式在我的另一个项目中使用很方便,可以放在网络服务器上随时更新,这就是目前大家使用比较多的android插件开发;











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值