java插件开发模式_DL插件开发笔记

DL的插件和宿主有三种开发模式,我们这里讨论的是DL插件和宿主程序完全独立的开发模式,至于其余两种,可以到官网了解。

CodeBox客户端就是一个宿主程序,开发插件的同学可以完全不去管宿主是如何开发的。这篇文章也是专门讨论插件的开发。

DL插件开发其实非常简单,只需要修改三个地方。

主题

dl的插件必须每个activity都单独设置主题(插件的作者说的是也可以在application上设置主题),但我实际测试,即使application设置了主题也必须每个activity都单独设置主题。

也就是说这样是不行的:

android:allowBackup="true"

android:theme="@android:style/Theme.Holo.Light"

android:icon="@drawable/ic_launcher"

android:label="@string/app_name" >

android:name=".SampleActivity"

android:label="@string/app_name" >

必须这样:

android:allowBackup="true"

android:icon="@drawable/ic_launcher"

android:label="@string/app_name" >

android:name=".SampleActivity"

android:theme="@android:style/Theme.Holo.Light.DarkActionBar"

android:label="@string/app_name" >

注意的是 插件只能用系统主题 不能直接定义主题

不能这样android:theme="@style/AppTheme"

只能这样android:theme="@android:style/Theme.Light"

虽然在某些插件上可能不按照此规则也可以正确运行 ,但是我试过绝大多数多需要满足此条件。

引入DL库

先下载DL库

将下载的源码导入eclipse,找到lib 目录下的工程,如果eclipse是自动编译的,应该在lib的bin里面就有了dl-lib.jar,我们需要的就是这个。

因为DL插件需要用到DL库的类(),所以需要引入DL库,但是插件是最终要加载到宿主程序中的,宿主程序中也是引入了DL库的,如果常规办法导入DL库,则会有两份DL的拷贝,为了解决这个问题,我们让插件中的DL只是编译的时候用,但是不打包进apk。如何让它参与编译却不被打包进apk呢?在Eclipse中可以这样做:

只需要在插件工程中创建一个目录,比如external-jars,然后把dl-lib.jar和放进去,同时在.classpath中追加如下代码即可:

同样的如果宿主程序中用了support-v4.jar,那么插件中原有的support-v4.jar也不能被打包进去,也需要将support-v4.jar放到external-jars同时追加

CodeBox宿主是用了support-v4.jar的。

插件的java代码修改

插件中的所有Activity 必须是继承自DLBasePluginActivity或者是DLBasePluginFragmentActivity。如果原有的为Activity,这里需要改为继承DLBasePluginActivity,如果原来为FragmentActivity,那么需要继承DLBasePluginFragmentActivity。

继承DLBasePluginActivitypublic class MainActivity extends DLBasePluginActivity

继承DLBasePluginFragmentActivityTestFragmentActivity extends DLBasePluginFragmentActivity

另外原有activity中所有代表context引用的this都必须改写为that

如果要调用另外一个activity,不能使用startActivity(),而是使用startPluginActivity,并且intent也要变为DLIntent:DLIntent intent = new DLIntent(getPackageName(), ListActivity.class);

intent.putExtra(TYPE, item.getNavigationInfo());

startPluginActivity(intent);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值