kerkee是一个多主体共存型Hybrid框架,具备跨平台、用户体验好、性能高、扩展性好、灵活性强、易维护、规范化、集成云服务、具备Debug环境、完全解决跨域问题。android
Github上的地址:https://github.com/kercer/kerkee_androidgit
OSChina上的地址:https://git.oschina.net/zihong/kerkee_android.gitgithub
官网地址:http://www.kerkee.com跨域
kerkee的native部分目前支持Android和iOS平台,两个平台的架构设计及接口设计保持一致,大大下降了跨平台的成本,下面介绍一下如何集成kerkee以及如何上手快速作出一款本身的demo架构
kerkee的集成有:包的方式集成和源码集成两种方式,你能够选择其中的一种方式集成框架
***前提:***有Android环境,本项目如今使用的是gradle构建,IDE建议Android Studio,固然你也可使用idea或eclipse,甚至其余。eclipse
kerkee从包方式集成,很是简单,建议使用此方式,干净简洁。ide
在你的Android工程的build.gradle中找到 dependencies 块,添加函数
compile 'com.kercer:kerkee:1.3.9'
便可。性能
以下所示
dependencies { compile fileTree(include: '*.jar', dir: 'libs') compile 'com.kercer:kerkee:1.3.9' }
一、 先拉取源码
git clone https://github.com/kercer/kerkee_android.git
源码的根目录包含kerkee
和kerkee_example
目录
kerkee
目录是kerkee的工程,能够直接导入工程进行lib库依赖
二、把kerkee目录拷贝到本身的工程根目录(一般与你工程的setting.gradle同一目录)
三、在你本身工程的setting.gradle
文件中添加include ':kerkee'
四、在你本身工程build.gradle
文件的dependencies 代码块中添加compile project(':kerkee')
基于此,集成基本完成,接下来将介绍如何上手实现本身的demo
简述:
只需三步便可代码快速上手
注册js与native对应的类
实现native部分与js对应的方法
建立KCWebview进行调用
如下详情说明一下如何快速上手
能够参考例子中的KCRegistMgr类的实现,全局只需注册一次就够了
//注册类,所注册的native code中的类的函数必是静态函数,js都能调到 //第一个参数为js的类名,第二个参数为native的类名 KCJSBridge.registClass(KCJSObjDefine.kJSObj_testModule, KCApiTestModule.class); //上层可使用本身的类取代kerkee中的jsBridgeClient,对应的js对象类为jsBridgeClient // KCJSBridge.registClass(KCJSDefine.kJS_jsBridgeClient, KCApiJSBridgeClient.class);//与下一行效果一致 KCJSBridge.registJSBridgeClient(KCApiJSBridgeClient.class); //注册对象方式 //KCApiJSObjExample必须继承KCJSObject,并实现getJSObjectName()方法,返回js类名 //KCApiJSObjExample中的函数能够是静态函数也能够是成员函数,HybridRuntime会自动处理 KCJSBridge.registObject(new KCApiJSObjExample());
静态类如KCApiTestModule中的实现,修改一下方法名便可
public static void testInfo(final KCWebView aWebView, KCArgList aArgList) { }
KCApiJSObjExample(继承KCJSObject,并实现getJSObjectName()),修改一下方法名便可
//成员方法 public void objExampleNotStaticFunction(final KCWebView aWebView, KCArgList aArgList) { } //静态方法 public static void objExampleStaticFunction(final KCWebView aWebView, KCArgList aArgList) { }
在例子中提供了一个默认的KCDefaultBrowser,若是你有特殊的UI需求,你能够参照KCDefaultBrowser进行实现,这时你能够随心所欲地能够把KCWebView添加到任何view中进行呈现
所要注意的地方是:
建立KCWebView时,初始化时,若须要设置ChromeClient和WebViewClient,则注意如下两个函数的参数类型
mWebView.setWebChromeClient(KCWebChromeClient);
mWebView.setWebViewClient(KCWebViewClient)
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.activity_main); //create browser that use KCWebview KCDefaultBrowser browser = new KCDefaultBrowser(this); View view = browser.getView(); setContentView(view); //regist classes to JSBridge,the relationship between binding js objects and native classes //and you can use default browser's registJSBridgeClient function KCRegistMgr.registClass(); //you can registObject here; //KCJSBridge.registObject(new KCTest()); browser.loadTestPage(); //browser.loadUrl("http://www.baidu.com"); }
至此,简单Demo便可运行起来
固然,你也能够直接运行官方提供的Demo,能够按如下说明进行操做
在拉取的源码根目录下有个kerkee_example,这里就是demo。
在根目录添加local.properties文件,配置你的SDK路径
sdk.dir=/Users/zihong/android-sdks ndk.dir=/Users/zihong/android-ndk
把根目录导入到Android Studio中,这时可直接运行example