ionic使用cordova插件使用

30933人阅读
DL插件化开发框架
如有转载,请声明出处: 时之沙:&&&& (来自时之沙的csdn博客)概述: &&&&&&& 随着应用的不断迭代,应用的体积不断增大,项目越来越臃肿,冗余增加.项目新功能的添加,无法确定与用户匹配性,发生严重异常往往牵一发而动全身,只能紧急发布补丁版本,强制用户进行更新.结果频繁的更新,反而容易降低用户使用黏性.或者是公司业务的不断发展,同系的应用越来越多,传统方式需要通过用户量最大的主项目进行引导下载并安装.&&&&&& 怎么办?参考浏览器-插件开发模式:&&& & && 一. 来可以将自己的应用分拆,某些功能可以在插件中实现,用到时再进行下载,而且不用安装.& 如果有新功能的添加,不需要更新应用,只要预留插件管理,我们就可以通过添加插件的方式,动态更新自己的应用,该功能需要改进或扩展,更新插件即可,无需频繁安装或卸载(容易造成用户反感). &&&&&&& 二. 对应同系应用,正常的引流方式只能引导用户进行新应用的下载和安装,如果使用插件化开发,则无需安装应用,关闭插件功能也十分方便,省去应用安装和卸载的过程,可以实现无缝引流.&&& 这里要向大家推荐一个开源的动态加载框架, 该项目由发起,目前一共有三个人开发,我有幸成为了其中的contributor.&&&& 如果你对DL动态加载框架还不熟悉,建议先看一下这篇文章:&&& APK动态加载框架DL解析如果你看过之后还会不太清晰,请看下DL插件化框架的全景图,如下这里我主要向大家介绍一下利用DL框架进行开发的具体步骤:1. 首先我们需要从github上获取项目代码:&& && 这里我们可以看到下载后的目录如下& && & & & lib目录就是我们的公共插件库&&&&&&& sample目录是对应的demo,& 具体的工程可以参照上面的DL全景图中的三种模式:&&&&&&& 由于一般项目中,代码管理和开发团队相对独立,& 一般插件工程的团队是很难接触主项目团队的代码.因此,这里主要以第一种,也是我们最为推荐的方式进行, 采用插件不依赖宿主的方式进行开发. 不需要两个团队过多的交互,开发效率相对较高.2 导入lib工程,如下所示:& 可以看到bin目录下的dl-lib.jar, 如果我们需要对lib工程进行修改,重新build获取对应的dl-lib.jar即可3. 插件工程的开发, 导入demo中的main-plugin工程&& & & 首先还是要强调插件开发的注意事项,以免出现不必要的错误&&& 插件也需要引用DL的jar包,但是不能放入到插件工程的libs目录下面,换句话说,就是插件编译的时候依赖jar包但是打包成apk的时候不要把jar包打进去,这是因为,dl-lib.jar已经在宿主工程中存在了,如果插件中也有这个jar包,就会发生类链接错误,原因很简单,内存中有两份一样的类,重复了。至于support-v4也是同样的道理。对于eclipse很简单,只需要在插件工程中创建一个目录,比如external-jars,然后把dl-lib.jar和support-v4.jar放进去,同时在.classpath中追加如下两句即可:&&classpathentry kind=&lib& path=&external-jars/dl-lib.jar&/&
&classpathentry kind=&lib& path=&external-jars/android-support-v4.jar&/&&& 然后是插件开发中的具体步骤&(1) 如果原有的为Activity,这里需要改为继承DLBasePluginActivity,如果原来为FragmentActivity,那么需要继承DLBasePluginFragmentActivity, for example:&& public class MainActivity extends DLBasePluginActivity TestFragmentActivity extends DLBasePluginFragmentActivity&(2) 如果需要插件独立安装运行, 只要将jar放到libs下面即可,若支持动态加载,仍需按上述注意事项加入 exteral-jars中&(3)插件所需要权限需要在宿主工程中声明& & && 如果是实际开发,一般为从服务器获取插件,这里我们方便自己调试演示,将运行生成对应的插件apk,放入sd卡上的DynamicLoadHost目录中4. 宿主工程中将上述生成的dl-lib.jar加入libs即可,如下所示为demo中提供的宿主工程&& && &&& 在宿主工程中,首先我们需要获取要调用的插件apk对应的MainActivity,DL的demo中插件路径为 sd卡上的DynamicLoadHost目录,没有的话需要创建,或者根据自己需求进行修改.
String pluginFolder = Environment.getExternalStorageDirectory() + &/DynamicLoadHost&;
File file = new File(pluginFolder);
File[] plugins = file.listFiles();
if (plugins == null || plugins.length == 0) {
mNoPluginTextView.setVisibility(View.VISIBLE);
for (File plugin : plugins) {
PluginItem item = new PluginItem();
item.pluginPath = plugin.getAbsolutePath();
item.packageInfo = DLUtils.getPackageInfo(this, item.pluginPath);
if (item.packageInfo.activities != null && item.packageInfo.activities.length & 0) {
item.launcherActivityName = item.packageInfo.activities[0].
mPluginItems.add(item);
}接着是调起响应的apk,这时需要使用dl-lib.jar:& (1)通过Class.forName的方式获取我们需要调用的插件apk中MainActivity的class对象& (2) 就上面提到的,我们需要判断该对象继承自DLBasePluginActivity还是DLBasePluginFragmentActivity,得到对应的代理class对象& (3)使用对应的代理class对象调起插件apk PluginItem item = mPluginItems.get(position);
Class&?& proxyCls =
Class&?& cls = Class.forName(item.launcherActivityName, false,
DLClassLoader.getClassLoader(item.pluginPath, getApplicationContext(), getClassLoader()));
if (cls.asSubclass(DLBasePluginActivity.class) != null) {
proxyCls = DLProxyActivity.
} catch (ClassNotFoundException e) {
e.printStackTrace();
Toast.makeText(this,
&load plugin apk failed, load class & + item.launcherActivityName + & failed.&,
Toast.LENGTH_SHORT).show();
} catch (ClassCastException e) {
// ignored
} finally {
if (proxyCls == null) {
proxyCls = DLProxyFragmentActivity.
Intent intent = new Intent(this, proxyCls);
intent.putExtra(DLConstants.EXTRA_DEX_PATH,
mPluginItems.get(position).pluginPath);
startActivity(intent);
}&&&&&& 最后运行宿主工程main-host,就可以看到最终的效果:&&&& &&&&&& 相信大家经过如上步骤,可以对DL动态加载框架进行开发有了一定了解.目前DL框架仍在不断扩展中,欢迎对我们的项目进行star,fork,或者提出宝贵的建议.,如有问题请及时反馈,我们会在后续版本中进行修复或者改进:& &&
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:2033952次
积分:16483
积分:16483
排名:第322名
原创:197篇
转载:21篇
译文:14篇
评论:855条
微博: Shawn_Tony
(1)(1)(1)(2)(1)(1)(7)(8)(3)(8)(11)(13)(4)(2)(4)(11)(7)(23)(24)(54)(21)(9)(12)(2)(1)(1)插件安装及使用
将插件上传导/usr/plugins这个目录下
登陆后台,在“控制台”下拉菜单中进入“插件管理”
激活相关插件
根据相关插件要求更新设置
中文 (zh)English (en)繁體中文 (zh-tw)&nbsp博客装上评论插件两三天了,现在说说我的感受,很给力,也很蛋疼。先说优点:
1、提供评论回复邮件通知功能。这是必须的,我就是为了这个功能才装的,因为太笨,一直没弄明白萧涵主题怎么玩儿。可能是因为原来自己没有,所以一直觉得这个功能很重要,应该算是博客初期和访客最好的互动方式,可以在很大程度上增加用户和博客之间的黏度。
2、评论框虽然是自己提供的,但和萧涵主题的风格出入不大,不影响美观,还不错。
3、提供“最新评论”小工具,样式比原生的好看,可以展示用户头像,可以屏蔽管理员的回复内容。如果使用萧涵主题的原生侧边栏的话最后一条也可以通过修改代码实现。
4、强大的社会化功能,可以绑定各大微博和社交网站,在发布文章和写评论时可以同时将内容发布到绑定的站点上,大大提升文章曝光率,吸引访客。
5、支持插件,过滤垃圾评论。
6、访客可以使用社交网站帐号进行评论,优化用户体验。
7、评论里面可以使用各种绑定网站的表情了。
1、装个插件还非要注册帐号,麻烦。
2、再厉害也是个插件,用了就会给网站拖速。
3、加载速度慢,经常出现评论框无法显示的状况。
4、广告满天飞,拼命让人知道博主用了他家插件。
5、过滤垃圾评论还要依靠,开发团队太不给力了。
6、破坏网站原有代码结构。
7、与原生评论数据的管理不同步,批准被误判为垃圾的评论时还要两边操作才行。
8、默认头像不好看,对我这种懒得设置自定义的人来说十分不友好。
9、访客要先写评论后填昵称、网址那些数据,容易被人误解为没有社交网站帐号就无法留言。
最后总结:我刚用了几天而已,优点可能还没完全挖掘,有的缺点也许暂时没有发现。装在我的博客上也还不错,不过我这实在是出于无奈。忠告各位,如果网站速度不是很给力,除非迫不得已,还是不用的好。
转载请注明来源: &iOS 开发者能用上的 10 个 Xcode 插件 - 博客 - 伯乐在线
& iOS 开发者能用上的 10 个 Xcode 插件
1. :给 Xcode 控制台添加颜色
2. :这个插件不仅高亮 TODO、 FIXME、 ???,还高亮 !!!
3. :高亮当前正在编辑的那一行
4. 插件:依赖管理助手
5. :把代码同步到 git 仓库
6. :在 Xcode 高亮当前修改和上次提交之间的不同之处
7. :自动补全图片名
8. :更便捷地导入头文件
9. :自动补全
10. Dash:这个不再重复介绍了吧,看这里:
一个适当的插件架构可以意味着一个完全不同的IDE。和就是很好的例子。你知道Xcode也支持插件吗?如果你不这样做我也不会感到吃惊,苹果并没有把太多精力投入到广告Xcode中的这一部分。事实上,很少有文献可用于为Xcode创建插件。
幸运的是,这并未能阻止开发者为Xcode开发插件。有着广泛的插件使得Xcode上的工作更加轻松和愉快,填补了苹果留下的空白领域。在这个快速贴士,我会告诉你一些我每天使用的插件。
安装Xcode插件通常是挺痛苦的,但用了就不再如此了。,Alcatraz达到一个重要的里程碑,1.0,现在它和Xcode5兼容了。如果你还没有安装Alcatraz呢,那我鼓励你先。
1. XcodeColors
是开发的一个插件,给Xcode的控制台增加了颜色。这个插件与组合特别好用,那是一个很棒的日志库,也是Robbie写的。这种组合一直是我多年来真正的救星,它让调试更轻松更好,并色彩缤纷。如果您想了解更多关于XcodeColors和CocoaLumberjack,请阅读本。
这个不仅凸显TODO,FIXME,???,以及!!!注释,也在便利列表呈现他们。
3.Backlight
一些插件可能看起来微不足道或者很简单,但如果你认同他们的价值就太棒了。是这样的一个插件。它所做的一切,就是突出显示当前正在编辑的行。很简单,也很有用。
4. CocoaPods
CocoaPods是事实上的iOS和OS X开发的依赖管理器。如果你不曾使用CocoaPods,那我鼓励你尝试一次。十分钟内可以让你上手。
Xcode还有一个,这使得整合CocoaPods更容易。该CocoaPods的插件增加了一个CocoaPods菜单到Xcode的产品菜单。如果你不喜欢命令行,那么你一定会喜欢这个插件。
5. ACCodeSnippetReposito
像管理Xcode的插件一样,在Xcode里管理代码段是不容易的。Arnaud Coomans分享了这个意见,并创建了一个漂亮的插件,用Git仓库来同步Xcode的代码片段。
美妙之处在于,你已经在Xcode手动添加的代码片段是不会被改变的。从Git仓库导入代码片段只需要点击几下。要备份你的代码片段,这样也是一个聪明的方法,或者如果您使用多台机器,这给了它们一个中心位置。
6. GitDiff
图形用户界面使git对开发者不显得那么吓人了。而像和这样的程序是伟大的,我常常想知道我目前工作的文件中有什么改变,在Xcode的代码编辑器。这个插件,使这一切成为可能,多么伟大。
它是Xcode的代码编辑器的一个微妙的补强,加上了足够的可见信息以了解上次提交以来发生了什么变化。
7. KSImageNamed
自动完成是很大的,特别是如果你正在写Objective-C。如果Xcode能自动完成文件名难道不会很伟大吗?比如图像文件的名称。
创建的插件正是这么做的。它不仅将节省您的时间,这将确保错别字是过去的事情了。
添加import语句有时候挺让人讨厌的。如果您需要导入一个pod的头文件,例如,然后Xcode的自动完成功能不会为你工作。解决了这个问题。
按Command-Control-P,输入您要查找的头文件的几个字母,在插件给出的选项列表中选择它。这是一个伟大的对Xcode的自动完成功能的补强。
9. FuzzyAutocomplete
说到自动完成的,大多数iOS和OS X开发者已经开始依赖于Xcode的强大的自动完成功能。然而,Xcode的实现自动完成还不完美,你并不总是给出你所期望或想要的建议。
和已经创造了来替代之。它利用Xcode用于其快速打开的算法,这在模式匹配方面做得很出色。它工作得非常,非常好。
10.Xcode的Dash
是一个用于浏览文档的了不起的软件。我每天都用它。我更喜欢的是它的集成到Xcode,感谢它的Xcode插件。你可能yij知道,你可以按住Option键单击Xcode的编辑器中的符号去跳到文档。不过,我不是Xcode的文档浏览器的忠实粉丝,而这也正是Dash插件工作的地方。
该插件打开Xcode的文档浏览器,而不是Dash,如果你按住Option键点击符号。不仅是Dash速度非常快,它也集成了。例如,如果你按住Option键点击AFNetworking库的方法,那么Dash将显示该方法的文档。我爱这个功能。
Xcode的插件架构是苹果流行的IDE(Xcode)中最被低估的一个方面。这不是简单的创建没有合法文档的Xcode插件,但我鼓励你至少尝试过我这篇文章中列出的插件。这儿还有几十个其他的Xcode的插件。你用哪个插件来让您的工作?或者你已经创建了一个自己的?
关于作者:
可能感兴趣的话题
关于伯乐在线博客
在这个信息爆炸的时代,人们已然被大量、快速并且简短的信息所包围。然而,我们相信:过多“快餐”式的阅读只会令人“虚胖”,缺乏实质的内涵。伯乐在线博客团队正试图以我们微薄的力量,把优秀的原创/译文分享给读者,做一个小而精的精选博客,为“快餐”添加一些“营养”元素。
新浪微博:
推荐微信号
(加好友请注明来意)
– 好的话题、有启发的回复、值得信赖的圈子
– 分享和发现有价值的内容与观点
– 为IT单身男女服务的征婚传播平台
– 优秀的工具资源导航
– 翻译传播优秀的外文文章
– 国内外的精选文章
– UI,网页,交互和用户体验
– 专注iOS技术分享
– 专注Android技术分享
– JavaScript, HTML5, CSS
– 专注Java技术分享
– 专注Python技术分享
& 2016 伯乐在线
赞助云主机

我要回帖

更多关于 exrt插件怎么使用 的文章

 

随机推荐