现在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减负的更多相关文章

  1. Android经典项目开发之天气APP实例分享

    原文:Android经典项目开发之天气APP实例分享 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/mzc186/article/details/5 ...

  2. 安卓app开发-02-安卓app快速开发

    安卓app开发-02-安卓app快速开发 上一篇介绍了安卓 app 开发的工具和环境配置,本篇不涉及编程技术,适合小团队快速高效开发 APP制作流程 当有一个APP创意,该如何实现呢?是花数十万找AP ...

  3. HBuilder mui 手机app开发 Android手机app开发 ios手机app开发

    经过一段时间的学习,做公司项目,对mui框架有了更加深入完整的了解,其实刚开始接触HBuilder中的mui框架只是简单的了解,并没有深入的研究,后来由于工作的需求,不得不深入研究,并运用的项目中去. ...

  4. APP开发:一个APP开发需要哪些技术人员?

          亿合科技小编了解到:国民老公王思聪曾经在一个访谈中谈到过,如果他是一个普通人,他会选择移动互联网去创业,因为做个网站或者App开发门槛较低,做大做强的机会也比较多.小编觉得创业就是投资,重 ...

  5. Native App开发 与Web App开发(原生与web开发优缺点)

    Native App开发 Native App开发即我们所称的传统APP开发模式(原生APP开发模式),该开发针对IOS.Android等不同的手机操作系统要采用不同的语言和框架进行开发,该模式通常是 ...

  6. HBuilder mui 手机app开发 Android手机app开发 ios手机app开发 打开新页面 预加载页面 关闭页面

    创建子页面 在mobile app开发过程中,经常遇到卡头卡尾的页面,此时若使用局部滚动,在android手机上会出现滚动不流畅的问题: mui的解决思路是:将需要滚动的区域通过单独的webview实 ...

  7. 一个小白App开发需要了解的基本技术

    本文针对小白用户对App做一个简单的介绍,首先要了解App都有哪些类型,不同的类型适用于哪些需求,用户可以根据自己的需求选择不同的App开发. 一 App有哪些形式 WebApp:简单来说,Web A ...

  8. 苹果版App开发心得

    这几个月中做的工作包括网站开发.安卓App开发和苹果App开发,前两者用的语言都是我熟悉的java,故苹果知识的学习,较安卓知识的学习,多出「语言基础」一块,其他方面差不多. 之前发过安卓那篇,如感兴 ...

  9. App开发需要了解的基本技术

    本文针对小白用户对App做一个简单的介绍,首先要了解App都有哪些类型,不同的类型适用于哪些需求,用户可以根据自己的需求选择不同的App开发. 一 App有哪些形式 WebApp:简单来说,Web A ...

随机推荐

  1. POJ 1930

    Dead Fraction Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 1762   Accepted: 568 Desc ...

  2. IOS 视图控制对象生命周期-init、viewDidLoad、viewWillAppear、viewDidAppear、viewWillDisappear等的区别及用途

    iOS视图控制对象生命周期-init.viewDidLoad.viewWillAppear.viewDidAppear.viewWillDisappear.viewDidDisappear的区别及用途 ...

  3. Java实现二维码QRCode的编码和解码

    涉及到的一些主要类库,方便大家下载: 编码lib:Qrcode_swetake.jar   (官网介绍-- http://www.swetake.com/qr/index-e.html) 解码lib: ...

  4. PKUSC 模拟赛 day2 上午总结

    今天上午考得不是很好,主要还是自己太弱QAQ 开场第一题给的图和题意不符,搞了半天才知道原来是走日字形的 然后BFS即可 #include<cstdio> #include<cstr ...

  5. python 类成员函数

    http://cowboy.1988.blog.163.com/blog/static/75105798201091141521583/ 这篇文章总结的非常好 主要注意的地方是 1,在类内调用成员函数 ...

  6. mybatis和hibernate区别和应用场景

    hibernate:是一个标准ORM框架(对象关系映射).入门门槛较高的,不需要程序写sql,sql语句自动生成了. 对sql语句进行优化.修改比较困难的. 应用场景: 适用与需求变化不多的中小型项目 ...

  7. Android handler真的是重新启动一个线程吗?

    我们说handler是开启了另外一个线程,而且看代码的话确实是这样,实现了runnable接口,这在java中就是开启了一个线程,但是情况中的是这样吗?我们不妨来做个试验,如下 import andr ...

  8. shell 编程基础(1)---初识shellscript

    shellscript 是linux下强大的系统管理工具,可以通过bash命令和管道命令直接在linux系统上进行编程,所写的脚本不需要编译就可以执行,对于系统管理而言十分方便. #!/bin/bas ...

  9. 修改linux命令行提示符路径显示

    命令显示行太长,影响观感,这样需要修改,具体方法: 1. 修改 ~/.bashrc,在最后一行添加: export PS1='[\u@\h\W]$' 其中\u是当前用户名,\h是当前主机名,\w显示当 ...

  10. Linux /bin、/sbin、/usr/bin、/usr/sbin目录的区别

    在linux下我们经常用到的四个应用程序的目录是/bin./sbin./usr/bin./usr/sbin .而四者存放的文件一般如下:     bin目录:  bin为binary的简写主要放置一些 ...