当前位置:操作系统 > 安卓/Android >>

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需要的类路径统统导出
 
view source
print?
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文件中)如图
 
 
第四步 在插件中调用广告
 
 
 
view source
print?
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 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,