android模块化app开发-4为APP减负
现在android应用中一个趋势是应用越来越大,免去游戏不谈普通APP也是一个个的体积直线增长。这里面除了业务增长外各种接口jar包的对接也占了不少比重。像广告SDK,统计SDK,支付SDK等这些我们在平时开发应用过程中基本都会使用到,这些SDK小的几十K大的甚至几M的都有,如果全部打包到APP中不用我们自己写程序整个APP包可能就上M级别了。
今天我就举例说明使用apkplug框架怎样为APP减负,说直白一点就是将各种SDK放到插件apk包中,在需要的时候动态下载下来。
我以有米广告SDK接入来说明(300多K),最近用到这个就选择这个,当然还有其他好的广告SDK大家可以讨论哈。
首先我新建一个插件工程myBundleForYoumi这个工程中导入YoumiSdk_v4.04_2013-07-12.jar到lib文件夹按照插件创建方式添加对应的plugin.xml和java类,最终目录结构为

第二步 在plugin.xml文件夹将youmi需要的类路径统统导出
01 |
<plugin-features |
02 |
Bundle-Name="youmi" |
03 |
Bundle-SymbolicName="com.example.mybundleforyoumi" |
04 |
Bundle-Version="1.0.0" |
05 |
date="2013.10.223" |
06 |
provider-name="插件开发商的名称" |
07 |
provider-url="" |
08 |
Bundle-Activator="com.example.mybundleforyoumi.SimpleBundle" |
09 |
Export-Package="net.youmi.android,net.youmi.android.offers,net.youmi.android.banner" |
10 |
> |
11 |
</plugin-features> |
在这里我也没有全部导出来。
第三步 创建调用有米广告的另外一个插件项目
该项目中也导入YoumiSdk_v4.04_2013-07-12.jar但不编译(注意:上一个插件里面是加入到lib文件夹也就是编译进项目apk文件中)如图

第四步 在插件中调用广告
01 |
public class MainActivity extends BundleActivity { |
02 |
|
03 |
@Override |
04 |
protected void onCreate(Bundle savedInstanceState) { |
05 |
super.onCreate(savedInstanceState); |
06 |
setContentView(R.layout.activity_main); |
07 |
// 初始化接口,应用启动的时候调用 |
08 |
// 参数:appId, appSecret, 调试模式 |
09 |
AdManager.getInstance(this).init("73057fb81878f2ba", |
10 |
"f2707618edb7c2a4", false); |
11 |
// 如果使用积分广告,请务必调用积分广告的初始化接口: |
12 |
OffersManager.getInstance(this).onAppLaunch(); |
13 |
// 将广告条adView添加到需要展示的layout控件中 |
14 |
LinearLayout adLayout = (LinearLayout) findViewById(R.id.adLayout); |
15 |
AdView adView = new AdView(this, AdSize.SIZE_320x50); |
16 |
adLayout.addView(adView); |
17 |
} |
18 |
|
19 |
|
20 |
} |
最后将两个插件加入到主应用中运行结果

我们仅是在本地做的测试,也可以将插件放到云端在需要的时候才下载到手机客户端上,这样可以保证用户在下载时安装包更小,而在用到这个功能时再去云端更新插件。
这里仅是实践其中一种方案,你也可以将包调用封装为OSGI服务提供给其他插件使用而不用在plugin.xml导出包路径,当然如果SDK官方直接提供插件就更加方便了
最后奉上源码
android模块化app开发-4为APP减负的更多相关文章
- Android经典项目开发之天气APP实例分享
原文:Android经典项目开发之天气APP实例分享 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/mzc186/article/details/5 ...
- 安卓app开发-02-安卓app快速开发
安卓app开发-02-安卓app快速开发 上一篇介绍了安卓 app 开发的工具和环境配置,本篇不涉及编程技术,适合小团队快速高效开发 APP制作流程 当有一个APP创意,该如何实现呢?是花数十万找AP ...
- HBuilder mui 手机app开发 Android手机app开发 ios手机app开发
经过一段时间的学习,做公司项目,对mui框架有了更加深入完整的了解,其实刚开始接触HBuilder中的mui框架只是简单的了解,并没有深入的研究,后来由于工作的需求,不得不深入研究,并运用的项目中去. ...
- APP开发:一个APP开发需要哪些技术人员?
亿合科技小编了解到:国民老公王思聪曾经在一个访谈中谈到过,如果他是一个普通人,他会选择移动互联网去创业,因为做个网站或者App开发门槛较低,做大做强的机会也比较多.小编觉得创业就是投资,重 ...
- Native App开发 与Web App开发(原生与web开发优缺点)
Native App开发 Native App开发即我们所称的传统APP开发模式(原生APP开发模式),该开发针对IOS.Android等不同的手机操作系统要采用不同的语言和框架进行开发,该模式通常是 ...
- HBuilder mui 手机app开发 Android手机app开发 ios手机app开发 打开新页面 预加载页面 关闭页面
创建子页面 在mobile app开发过程中,经常遇到卡头卡尾的页面,此时若使用局部滚动,在android手机上会出现滚动不流畅的问题: mui的解决思路是:将需要滚动的区域通过单独的webview实 ...
- 一个小白App开发需要了解的基本技术
本文针对小白用户对App做一个简单的介绍,首先要了解App都有哪些类型,不同的类型适用于哪些需求,用户可以根据自己的需求选择不同的App开发. 一 App有哪些形式 WebApp:简单来说,Web A ...
- 苹果版App开发心得
这几个月中做的工作包括网站开发.安卓App开发和苹果App开发,前两者用的语言都是我熟悉的java,故苹果知识的学习,较安卓知识的学习,多出「语言基础」一块,其他方面差不多. 之前发过安卓那篇,如感兴 ...
- App开发需要了解的基本技术
本文针对小白用户对App做一个简单的介绍,首先要了解App都有哪些类型,不同的类型适用于哪些需求,用户可以根据自己的需求选择不同的App开发. 一 App有哪些形式 WebApp:简单来说,Web A ...
随机推荐
- POJ 1930
Dead Fraction Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 1762 Accepted: 568 Desc ...
- IOS 视图控制对象生命周期-init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear等的区别及用途
iOS视图控制对象生命周期-init.viewDidLoad.viewWillAppear.viewDidAppear.viewWillDisappear.viewDidDisappear的区别及用途 ...
- Java实现二维码QRCode的编码和解码
涉及到的一些主要类库,方便大家下载: 编码lib:Qrcode_swetake.jar (官网介绍-- http://www.swetake.com/qr/index-e.html) 解码lib: ...
- PKUSC 模拟赛 day2 上午总结
今天上午考得不是很好,主要还是自己太弱QAQ 开场第一题给的图和题意不符,搞了半天才知道原来是走日字形的 然后BFS即可 #include<cstdio> #include<cstr ...
- python 类成员函数
http://cowboy.1988.blog.163.com/blog/static/75105798201091141521583/ 这篇文章总结的非常好 主要注意的地方是 1,在类内调用成员函数 ...
- mybatis和hibernate区别和应用场景
hibernate:是一个标准ORM框架(对象关系映射).入门门槛较高的,不需要程序写sql,sql语句自动生成了. 对sql语句进行优化.修改比较困难的. 应用场景: 适用与需求变化不多的中小型项目 ...
- Android handler真的是重新启动一个线程吗?
我们说handler是开启了另外一个线程,而且看代码的话确实是这样,实现了runnable接口,这在java中就是开启了一个线程,但是情况中的是这样吗?我们不妨来做个试验,如下 import andr ...
- shell 编程基础(1)---初识shellscript
shellscript 是linux下强大的系统管理工具,可以通过bash命令和管道命令直接在linux系统上进行编程,所写的脚本不需要编译就可以执行,对于系统管理而言十分方便. #!/bin/bas ...
- 修改linux命令行提示符路径显示
命令显示行太长,影响观感,这样需要修改,具体方法: 1. 修改 ~/.bashrc,在最后一行添加: export PS1='[\u@\h\W]$' 其中\u是当前用户名,\h是当前主机名,\w显示当 ...
- Linux /bin、/sbin、/usr/bin、/usr/sbin目录的区别
在linux下我们经常用到的四个应用程序的目录是/bin./sbin./usr/bin./usr/sbin .而四者存放的文件一般如下: bin目录: bin为binary的简写主要放置一些 ...