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