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 ...
随机推荐
- php获取数组长度的方法(有实例)
php获取数组长度的方法,php为我们提供了两个函数可以计算一维数组长度,如count,sizeof都可以直接统计数组长度,还有获取二维数组的方法. 在php中获取数组长度方法很简单,php为我们提供 ...
- Linux查看随机启动服务
Liunx操作系统跟Windos XP一样,有一批系统服务随机而启动:略懂电脑的Windows XP用户会禁止那些不必要的服务,以提高开机速度:如今安装了Ubuntu操作系统,咱们也有必要了解Ubun ...
- lintcode : find peak element 寻找峰值
题目 寻找峰值 你给出一个整数数组(size为n),其具有以下特点: 相邻位置的数字是不同的 A[0] < A[1] 并且 A[n - 2] > A[n - 1] 假定P是峰值的位置则满足 ...
- spring的两种属性注入方式setter注入和构造器注入或者自动注入
1.这里的属性自动注入,与注解配置bean是两回事.这里的自动注入,指的是bean属性的自动注入. bean属性自动注入,包括byNAme和ByType两码事. 2.所有的applicationCon ...
- 2014--9=17 软工二班 MyEclipse blue==4
package cn.rwkj.test; import java.io.IOException; import java.io.InputStream; import java.io.OutputS ...
- 转 Android的消息处理机制
来自:http://blog.csdn.net/andyhuabing/article/details/7368217 Windows编程的朋友可能知道Windows程序是消息驱动的,并且有全局的消息 ...
- apache&nginx资料汇总
http://liudaoru.iteye.com/blog/336338 aquid:http://os.51cto.com/art/201009/225813.htm 数据库各种讲座:http:/ ...
- 简单的SocketExample
客户端//---------------VerySimpleClient.java package SocketExample; // Tue Nov 2 18:34:53 EST 2004 // / ...
- css3 去掉点击高光(移动端)
在我们用手机浏览网页时,当点击某个链接或者点击事件时 会出现一层蓝色半透明的高光显示, 但在开发webapp时,由于网页是被native load去的,在app里面点击的时候如果出现高光则显得很不和谐 ...
- Qt之进程间通信(共享内存)
简述 上一节中,我们分享下如何利用Windows消息机制来进行不同进程间的通信.但是有很多局限性,比如:不能跨平台,而且必须两个进程同时存在才可以,要么进程A发了消息谁接收呢? 下面我们来分享另外一种 ...