android插件化

利用插件化技术调用ShareSDK减小应用体积

拈花ヽ惹草 提交于 2019-12-05 06:26:35
一 引言: ShareSDK是非常棒的移动社会化分享和评论工具,相信我们在开发应用过程中都离不开它。但是当我们集成ShareSDK时候同样会遇到一些问题。 1. ShareSDK包比较大,组合国内多家分享平台以后其SDK包的大小应该在1M以上,这对应用来说还是不小的负荷。 2. 集成ShareSDK过程中我们不可避免的需要将它的资源文件复制到应用的res资源目录下,这对我们应用后期维护造成不小的干扰。 基于以上的两大情况,我想通过ApkPlug框架将ShareSDK整体做成组件,在用户需要的时候才动态的从服务端加载到本地,这样做很方便的就解决了以上两个问题。 项目源码可从这里 下载 二 项目所使用到的开发库 Apkplugv2.7.5版本 (必须是v2.7.5以上版本,否则无法运行) Apkplug插件托管服务 v1.8.0版本以上 ShareSDKv2.10.7 (使用的最新版本DEMO) 三 项目目录结构 ShareSDKMain ---主应用演示DEMO ShareSDKPlug ---ShareSDK 组件的具体实现 PlugShareSDK1.0.0.jar --组件调用库 四 使用步骤 将apkplug框架主库Bunde2.7.5.jar【200k】加入到主应用libs目录下 将apkplug插件托管服务SDK【200k】加入主应用libs目录下

android插件化-apkplug框架启动-02

左心房为你撑大大i 提交于 2019-12-04 06:21:24
本文章基于apkplug v1.6.7 版本编写,最新方式以官网最新消息为准 一 apkplug框架所需要的库文件(宿主) 可从 http://git.oschina.net/plug/apkplugSDK 获取最新库文件 同时可下载最新的apkplugdemo源码 http://git.oschina.net/plug/apkplugDemos libs-- --libndkfoo.so armeabi armeabi-v7a mips x86 --Bundle(版本号).jar 将以上的文件加入宿主应用的libs目录下 二 AndroidManifest.xml 权限配置 插件平台需要几个基础的权限配置,请将以下的几个权限加入到工程的AndroidManifest.xml中 <!-- 插件平台需要的权限! --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> <uses-permission android:name="android.permission.INTERNET"/>

android插件化-获取apkplug框架已安装插件-03

我们两清 提交于 2019-12-04 06:21:15
上一篇文章成功的将apkplug框架嵌入了应用中并且启动 链接 http://www.apkplug.com/blog/?post=10 这一篇文章实现如何获取所有已安装插件 一 获取框架的SystemBundle的上下文BundleContext apkplug框架启动会自动创建一个SystemBundle, 它是框架的第一个插件不可停止和卸载,通过它我们可以与apkplug和其他插件通信 FrameworkInstance.getSystemBundle() 便可以获取到SystemBundle但它没有太大意义,我们需要获取它的运行上下文BundleContext BundleContext context =frame.getSystemBundleContext(); 二 通过BundleContext获取已安装插件 for(int i=0;i<context.getBundles().length;i++) { //获取已安装插件 //打印插件信息 StringBuffer sb=new StringBuffer(); sb.append("\n插件名称:"+b.getName()); sb.append("\n插件应用名称:"+b.getSymbolicName()); sb.append("\n插件版本:"+b.getVersion()); sb.append("

android同时监听所有activity生命周期状态实现

橙三吉。 提交于 2019-12-03 03:39:52
在做应用统计时我们可能需要在获取activity的生命周期状态,以前的方式是我们需要重写每一个activity的onResume() 等函数然后埋点。现在可以利用apkplug框架的activitylifecycle将所有activity状态信息收集到一个类里面,进行统一的收集。 demo代码下载地址 http://git.oschina.net/plug/apkplugBundles/tree/master/ActivityLifecycle 你可以通过apkplugdemo 本地安装的方式导入这个插件进行体验 apkplugdemo.apk 下载地址 ActivityLifecycle.apk 下载地址 效果图: 插件开发: 1.按照apkplug插件开发的基本规则加入相应的osgi1.6.3.jar ,assets/plugin.xml配置文件 (activitylifecycle功能 需Bundle.1.6.3.jar以上 osgi1.6.3.jar才有) 2.编写Activity状态信息收集类 可以在这个类中将收集到的activity状态信息保持上或传递给统计工具 public class BundleActivityLifecycleCallbacksImp implements BundleActivityLifecycleCallbacks{ @Override

android模块化app开发-3远程动态更新插件

穿精又带淫゛_ 提交于 2019-12-03 03:39:39
前两章用apkplug框架实现了两个基本的功能,但它们都是在本地安装测试的,在实际开发过程中我们肯定是需要与服务器联网将更新的插件远程推送给用户手机客户端。今天利用apkplug提供的插件托管服务轻松实现插件的远程部署与客户端更新。 一,还是利用上一章所建的主应用,只是在主应用的assert文件夹中添加一个插件"BundleService0.0.2.apk",该插件是apkplug官网提供服务插件,它封装了与托管服务器通讯,文件下载,文件缓存等功能只留出了简单易用的接口给开发者,开发者通过接口可以任意设计自己的应用界面而不必关心通讯细节。 二,编写我们自己的应用更新插件 首先新建一个工程MyApkplugService 照例编写插件所必须的几个java类和plug.xml文档。工程结构如图 在这个插件中我们除了需要添加osgi.jar包以外还需要添加installService0.0.2.jar来与我们的BundleService0.0.2.apk插件通讯。 环境搭建好了现在我们可以在MyApkplugService通过与BundleService0.0.2.apk插件通讯更新下载插件了。 三 编写自己的应用管理插件 BundleService0.0.2.apk插件对插件管理的整个过程都封装的很好,提供给开发者一个灵活而方便的操作方式,其接口主要有 1.appSearch.java

android插件化-apkplug中OSGI服务基本原理-08

拈花ヽ惹草 提交于 2019-12-01 19:13:31
我们提供 apkplug 下OSGI使用demo 源码托管地址为 http://git.oschina.net/plug/OSGIService 一 OSGI与android Service 异同点 OSGI服务与android Service概念差不多也是Service ,Client 关系。 android Service接口 --service.AIDL OSGI接口 --java interface 所以android 进程间通信Service只能传递序列化过的数据 而OSGI服务可以传递任何java对象。 二 OSGI与android Service注册/查询方式对比 1.服务注册 android Service Intent intent=new Intent(Context,Service.class); Context.startService(intent); OSGI Service BundleContext context; //插件上下文 ServiceRegistration m_reg = context.registerService( sayHelloImp.class.getName(),//服务名称 一般为接口类名 my, //服务具体实现类 null); 2.服务查询 android Service Intent intent=new

android利用apkplug框架实现主应用与插件通讯(传递任意对象)实现UI替换

谁说胖子不能爱 提交于 2019-12-01 19:13:18
时光匆匆,乍一看已半年过去了,经过这半年的埋头苦干今天终于有满血复活了。 利用apkplug框架实现动态替换宿主Activity中的UI元素,以达到不用更新应用就可以更换UI样式的目的。 先看效果图: 首先理解OSGI服务的基本概念,如下图 1.首先定义一个java接口(interface)用于规范宿主与插件之间的通讯协议 interface com.apkplug.osgi.service.showView void showView(Bundle bundle,View v,int index) ; //添加View void removeView(Bundle bundle,View v); //删除View 2.决定osgi服务提供者和使用者 ,这里我们定义是 宿主应用为"OSGI 服务提供者" ,插件为"OSGI 服务使用者"。 注:OSGI服务提供者 注册服务 OSGI服务使用者 查询服务 3.宿主应用实现showView接口,相应类为 com.apkplug.osgi.serviceImp.showViewImp 具体代码如下: public class showViewImp implements showView{ private LinearLayout layout =null; /** * @param root 插件 View保存UI容器 */