android模块化app开发-4为APP减负

  如今android应用中一个趋势是应用愈来愈大,免去游戏不谈普通APP也是一个个的体积直线增加。这里面除了业务增加外各类接口jar包的对接也占了很多比重。像广告SDK,统计SDK,支付SDK等这些咱们在平时开发应用过程当中基本都会使用到,这些SDK小的几十K大的甚至几M的都有,若是所有打包到APP中不用咱们本身写程序整个APP包可能就上M级别了。 java

  今天我就举例说明使用apkplug框架怎样为APP减负,说直白一点就是将各类SDK放到插件apk包中,在须要的时候动态下载下来。 android

我以有米广告SDK接入来讲明(300多K),最近用到这个就选择这个,固然还有其余好的广告SDK你们能够讨论哈。 app

   首先我新建一个插件工程myBundleForYoumi这个工程中导入YoumiSdk_v4.04_2013-07-12.jar到lib文件夹按照插件建立方式添加对应的plugin.xml和java类,最终目录结构为 框架

第二步 在plugin.xml文件夹将youmi须要的类路径通通导出 ide

<plugin-features  
	Bundle-Name="youmi" 
	Bundle-SymbolicName="com.example.mybundleforyoumi"	
	Bundle-Version="1.0.0"
	date="2013.10.223"
	provider-name="插件开发商的名称" 
	provider-url="" 
	Bundle-Activator="com.example.mybundleforyoumi.SimpleBundle"
	Export-Package="net.youmi.android,net.youmi.android.offers,net.youmi.android.banner"   
	>
</plugin-features>


在这里我也没有所有导出来。 测试

第三步 建立调用有米广告的另一个插件项目 this

该项目中也导入YoumiSdk_v4.04_2013-07-12.jar但不编译(注意:上一个插件里面是加入到lib文件夹也就是编译进项目apk文件中)如图 url

第四步 在插件中调用广告 spa

 

public class MainActivity extends BundleActivity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		  // 初始化接口,应用启动的时候调用
 		// 参数:appId, appSecret, 调试模式
 		AdManager.getInstance(this).init("73057fb81878f2ba",
				"f2707618edb7c2a4", false);
 		// 若是使用积分广告,请务必调用积分广告的初始化接口:
 		OffersManager.getInstance(this).onAppLaunch();
 		  // 将广告条adView添加到须要展现的layout控件中
        LinearLayout adLayout = (LinearLayout) findViewById(R.id.adLayout);
        AdView adView = new AdView(this, AdSize.SIZE_320x50);
        adLayout.addView(adView);
	}


}
最后将两个插件加入到主应用中运行结果

 

咱们仅是在本地作的测试,也能够将插件放到云端在须要的时候才下载到手机客户端上,这样能够保证用户在下载时安装包更小,而在用到这个功能时再去云端更新插件。 插件

这里仅是实践其中一种方案,你也能够将包调用封装为OSGI服务提供给其余插件使用而不用在plugin.xml导出包路径,固然若是SDK官方直接提供插件就更加方便了

最后奉上源码

相关文章
相关标签/搜索