androidhybrid
A. hybrid app 可以做什麼
Hybrid App(混合模式移動應用)是指介於web-app、native-app這兩者之間的app,兼具「Native App良好用戶交互體驗的優勢」和「Web App跨平台開發的優勢」。
國內外Hybrid App的開發框架眾多。如何選擇又成為一個難題。下面對開發者比較關心的集中知名跨平台開發移動應用中間件進行列表和對比,以便選擇最適合您的移動應用中間件。
PhoneGap是相對比較早進入公眾視線的一種選擇。但是,開發者簡單的基於PhoneGap來開發移動應用肯定會發現結果和Web App比較差的用戶體驗類似。這也是為什麼基於PhoneGap有實用性的移動應用主要集中在iOS上。可是PhoneGap這種現狀弱化了HTML5的跨平台價值。
Titanium是一種基於翻譯機制的跨平台中間件,能夠開發出具有Native體驗的移動應用,但是因為翻譯機制的限制導致移動應用開發不能像真正的HTML5開發一樣靈活。哪怕一個按鈕也不能像普通HTML一樣來編寫,而必須按照Titanium約定的特定格式。
Salama是全新研發的一套Hybrid APP和雲端服務整合的開發套件。在終端,一共有三種開發模式:高度混合模式、JS模式和低度混合模式。在低度混合模式下,需要追求終端速度和顯示效果的開發者,可以在不改變原有的構架思路的前提下進行開發。在JS模式下,所有的畫面顯示及業務邏輯均由JS程序實現,對於原來的基於WEB的開發者,只要熟悉JS、CSS、HTML的前端工程師就可以輕松構建自己的應用。在高度混合模式下,原生和HTML5可以隨意組合,可以為開發者在進行大型商業軟體開發的過程中提供最高的性價比。不僅如此,在雲端Salama還提供了一整套雲服務,涵蓋了業務處理、資料庫操作、文件等資源的存儲分發等服務。Salama已經為多家公司提供了方案,知名客戶有TOSHIBA-AIRCON、GEDORE等品牌商,同時也在Salama平台上構造了Ishow企業電子目錄產品服務。
AppCan在技術架構上和PhoneGap類似是Web主體型中間件,但是通過結合了一些原生交互效果能夠達到iOS、Android平台都比較一致的用戶體驗。但是相比PhoneGap的開源,AppCan相對封閉的路線顯得過於謹慎。
Hybrid App這個領域雖然還處於比較初期的階段,但是已經有很多優秀的公司和技術團隊在致力於跨平台開發移動應用中間件技術的研究,給了開發者眾多選擇。開發者可以根據實際的項目需求來選擇中間件。Web App雖被瀏覽器廠商和搜索引擎公司所推崇,但存在用戶體驗差、盈利模式不明確等現階段無法解決的問題,或最終夭折。Hybrid App正在被越來越多的公司和開發者所認同,勢必會成為新世界的王。
B. 如何學習hybrid app開發
Hybrid APP是混合型的APP應用開發。是相對於Native APP(原生APP)、WEB APP(Web APP)而言的。
Native APP、WEB APP與Hybrid APP的區別:
1)Native APP:Native Code編程,代碼編譯之後以2進制或者位元組碼的形式運行在OS上,直接調用OS的Device API。所謂的iOS開發和Android開發就是這種;
2)Web APP,以HTML+JS+CSS等WEB技術編程,代碼運行在瀏覽器中,通過瀏覽器來調用Device API(取決於HTML5未來的支持能力);
3)Hybrid APP,部分代碼以WEB技術編程,部分代碼由某些Native Container承擔(如PhonGAP、AppCan、Titanium),其目的是在Html5尚未完全支持Device API和Network API的目前階段,承擔這部分職責。
很多開發者在跨入移動應用開發領域都會選擇Hybrid App為切入點,因為它介於web-app、native-app這兩者之間,兼具「Native App良好用戶交互體驗的優勢」和「Web App跨開發的優勢」。這樣的模式可以降低開發門檻,用較少的成本達到跨開發移動應用的目的。總所周知,web的生態已經是相當發達的了。
在移動應用開發盛行的今天,HTML5的問世讓更多的人寄予厚望,這也就催生了PhoneGap這類移動Hybrid應用開發框架,它完全採用HTML5的界面布局,而本地能力通過Native橋接為JS函數在HTML5頁面中調用,達到Hybrid App的效果。很多開發者在跨入移動應用開發領域都會選擇Hybrid App為切入點,因為它介於web-app、native-app這兩者之間,兼具「Native App良好用戶交互體驗的優勢」和「Web App跨開發的優勢」。這樣的模式可以降低開發門檻,用較少的成本達到跨開發移動應用的目的。總所周知,web的生態已經是相當發達的了。
C. android hybrid websql 和 sqlite可以用同一個庫嗎
完全可以的. SQLiteDatabase.insert(String table, String nullColumnHack, ContentValues values) db的插入,查詢,刪除函數的第一個參數就是table_name,就可以對指定的表進行操作
D. 目前有哪些hybrid app
Hybrid App(混合模式移動應用)是指介於web-app、native-app這兩者之間的app,兼具「Native App良好用戶交互體驗的優勢」和「Web App跨平台開發的優勢」。
Hybrid App是指介於web-app、native-app這兩者之間的app,它雖然看上去是一個Native App,但只有一個UI WebView,裡面訪問的是一個Web App,比如街旁網最開始的應用就是包了個客戶端的殼,其實裡面是HTML5的網頁,後來才推出真正的原生應用。再徹底一點的,如掌上網路和淘寶客戶端Android版,走的也是Hybrid App的路線,不過掌上網路裡面封裝的不是WebView,而是自己的瀏覽內核,所以體驗上更像客戶端,更高效。
E. Android 開發有哪些新技術出現
1、開發工具
Android Studio: Google 官方放棄 Eclipse 和 Android Studio 普及。AS 雖然不算新,但是對 Android Studio 這個軟體的更新速度快的驚人,有大量的新功能發布。例如支持很多註解代碼提示註解、Live code template、支持自動生成 Parcelable 實現等等,作為開發者,持續關注這個更新列表 Recent Changes,一定會讓寫代碼的生活更加美好。
2、編程「語言」
Kotlin:作為 Android 領域的 Swift,絕對如沐新風。拋棄沉重的 java 語法,Kotlin 融入了很多現代編程語言的思想,作為開發者,接受新的語言,了解新語言的發展趨勢,更有利於開闊你的思路和加深對語言的理解。在 Android 開發上,使用 Kotlin 並不會付出什麼代價,為什麼不來試試使用Kotlin進行Android開發。
React Nativ: 跨平台一直是程序員的夢想,而且移動應用的跨平台解決方案也很多,因為 Facebook 的參與和力推,讓這個解決方案帶上了光環。第一個用 React Native 開發的 App 已經在 Google Play 上架 Facebook 廣告管理工具,聽說 Android 的 SDK 也馬上會到來,React Native。
Sky:與 React Native 類似,使用 Web 開發語言來做移動平台的開發,雖然這個只是一個嘗試,但是這是 Google 自身推出的,特別是在 Java 語言的使用上敗訴之後,這可能會有一些作為呢,domokit/sky_sdk。
3、開發模式
Dagger 2:依賴注入並不是什麼新技術,但是使用在 Android 確實一個新的嘗試。Android App 越來越被當成嚴肅的大型項目來構建,很多在以前大型伺服器開發上使用的技術都被應用到了移動開發。Android 開發分模塊開發,使用 Dagger 來松耦合模塊。特別值得一體的是,Dagger 2 現在由 Google 親自接管。 Dagger ‡ A fast dependency injector for Android and Java。
MVP:因為 Android 並沒有嚴格的業務和界面區分,項目一復雜,就很容易使代碼陷入混亂。現在 Android 開發社區對 MVP 模式討論越來越熱,覺得 MVP 是非常適合 Android APP 開發。MVP for Android: how to organize the presentation layer。
RxAndroid:函數響應式編程(Functional Reactive Programming)也不是新內容,RxAndroid 把 RxJava 帶到 Android 環境中。很多時候,編寫 Android 程序,也可以看成是數據的處理和流動,換一種思想編程,曾經看起來很棘手的問題,瞬間就很優雅的解決了:ReactiveX/RxAndroid。
MVVM:這是因為開始官方支持 DataBinding,把 MVVM 直接帶到 Android 中。數據綁定在 Windows WPF 和 Web 已經非常常見,它非常高效的開發效率,只關心數據和業務。這也對 Android 開發來說,無疑是一個非常重大的影響:android UI設計MVVM設計模式討論?。
插件化:針對大型 Android 項目,很多 App 開始使用插件來分模塊構建相對獨立的功能。
Hybrid:完全使用 HTML 5 開發 App,目前還不成熟。但是折中方案在很多情況下是非常適合的,典型的就是微信,大部分信息展示都是通過 H5 來完成,同時通過 Hybird 方式,把 Web 和 Native 打通,提供給網頁訪問本地資源的能力。
4、UI設計
Material Design:已經紅遍了大江南北,這方面的討論實在太多了,而且各種支持庫都有了,特別是 Google 官方出了一個支持庫 Android Design Support Library。
Sketch 3:這是一個專為設計移動端 UI 的設計工具,作為開發者,不用懂那麼復雜的 PS 使用,也可以做非常專業設計。
F. android 混合開發 框架有哪些
Cordova是一個廣泛使用的Hybrid開發框架,它提供了一套js和Native交互規范
在Cordova的 SystemWebViewEngine 類中可以看到
private static void exposeJsInterface(WebView webView, CordovaBridge bridge) {
if ((Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1)) {
Log.i(TAG, "Disabled addJavascriptInterface() bridge since Android version is old.");
// Bug being that Java Strings do not get converted to JS strings automatically.
// This isn't hard to work-around on the JS side, but it's easier to just
// use the prompt bridge instead.
return;
}
webView.addJavascriptInterface(new SystemExposedJsApi(bridge), "_cordovaNative");
}
因此當Android系統高於4.2時,Cordova還是使用 addJavascriptInterface 這種方式,因為這個方法在高版本上安全而且簡單,低於4.2的時候,用什麼方法呢?
答案是 WebChromeClient.onJsPrompt 方法
WebView可以設置一個 WebChromeClient 對象,它可以處理js的3個方法
onJsAlert
onJsConfirm
onJsPrompt
這3個方法分別對應js的 alert 、 confirm 、 prompt 方法,因為只有 prompt 接收返回值,所以js調用一個Native方法後可以等待Native返回一個參數。下面是 cordova.js 中的一段代碼:
/**
* Implements the API of ExposedJsApi.java, but uses prompt() to communicate.
* This is used pre-JellyBean, where addJavascriptInterface() is disabled.
*/
mole.exports = {
exec: function(bridgeSecret, service, action, callbackId, argsJson) {
return prompt(argsJson, 'gap:'+JSON.stringify([bridgeSecret, service, action, callbackId]));
},
setNativeToJsBridgeMode: function(bridgeSecret, value) {
prompt(value, 'gap_bridge_mode:' + bridgeSecret);
},
retrieveJsMessages: function(bridgeSecret, fromOnlineEvent) {
return prompt(+fromOnlineEvent, 'gap_poll:' + bridgeSecret);
}
};
然後只要在 onJsPrompt 方法中使用 CordovaBridge 來處理js的prompt調用
/**
* Tell the client to display a prompt dialog to the user. If the client returns true, WebView will assume that the client will handle the prompt dialog and call the appropriate JsPromptResult method.
* <p/>
* Since we are hacking prompts for our own purposes, we should not be using them for this purpose, perhaps we should hack console.log to do this instead!
*/
@Override
public boolean onJsPrompt(WebView view, String origin, String message, String defaultValue, final JsPromptResult result) {
// Unlike the @JavascriptInterface bridge, this method is always called on the UI thread.
String handledRet = parentEngine.bridge.promptOnJsPrompt(origin, message, defaultValue);
if (handledRet != null) {
result.confirm(handledRet);
} else {
dialogsHelper.showPrompt(message, defaultValue, new CordovaDialogsHelper.Result() {
@Override
public void gotResult(boolean success, String value) {
if (success) {
result.confirm(value);
} else {
result.cancel();
}
}
});
}
return true;
}
G. Android 開發有哪些新技術出現
參考如下知乎的內容:
開發工具
Android Studio: Google 官方放棄 Eclipse 和 Android Studio 普及。AS 雖然不算新,但是對 Android Studio 這個軟體的更新速度快的驚人,有大量的新功能發布。例如支持很多註解代碼提示註解、Live code template、支持自動生成 Parcelable 實現等等,作為開發者,持續關注這個更新列表 Recent Changes ,一定會讓你的寫代碼的生活更加美好。
編程「語言」
Kotlin: 作為 Android 領域的 Swift,絕對讓你如沐新風。拋棄沉重的 Java 語法,Kotlin 融入了很多現代編程語言的思想,作為開發者,接受新的語言,了解新語言的發展趨勢,更有利於開闊你的思路和加深對語言的理解。在 Android 開發上,使用 Kotlin 並不會讓你付出什麼代價,為什麼不來試試? 使用Kotlin進行Android開發。
React Native: 跨平台一直是程序員的夢想,而且移動應用的跨平台解決方案也很多,因為 Facebook 的參與和力推,讓這個解決方案帶上了光環。第一個用 React Native 開發的 App 已經在 Google Play 上架 Facebook 廣告管理工具,聽說 Android 的 SDK 也馬上會到來,React Native。
Sky: 與 React Native 類似,使用 Web 開發語言來做移動平台的開發,雖然這個只是一個嘗試,但是這是 Google 自身推出的,特別是在 Java 語言的使用上敗訴之後,這可能會有一些作為呢,domokit/sky_sdk · GitHub
開發模式
Dagger 2:依賴注入並不是什麼新技術,但是使用在 Android 確實一個新的嘗試。Android App 越來越被當成嚴肅的大型項目來構建,很多在以前大型伺服器開發上使用的技術都被應用到了移動開發。Android 開發分模塊開發,使用 Dagger 來松耦合模塊。特別值得一體的是,Dagger 2 現在由 Google 親自接管。 Dagger ‡ A fast dependency injector for Android and Java.
MVP:因為 Android 並沒有嚴格的業務和界面區分,項目一復雜,就很容易使代碼陷入混亂。現在 Android 開發社區對 MVP 模式討論越來越熱,覺得 MVP 是非常適合 Android APP 開發。MVP for Android: how to organize the presentation layer
H. Hybrid App 用哪個框架好
國內外Hybrid App的開發框架眾多。如何選擇又成為一個難題。下面對開發者比較關心的集中知名跨平台開發移動應用中間件進行列表和對比,以便選擇最適合您的移動應用中間件。
PhoneGap是相對比較早進入公眾視線的一種選擇。但是,開發者簡單的基於PhoneGap來開發移動應用肯定會發現結果和Web App比較差的用戶體驗類似。這也是為什麼基於PhoneGap有實用性的移動應用主要集中在iOS上。可是PhoneGap這種現狀弱化了HTML5的跨平台價值。
Titanium是一種基於翻譯機制的跨平台中間件,能夠開發出具有Native體驗的移動應用,但是因為翻譯機制的限制導致移動應用開發不能像真正的HTML5開發一樣靈活。哪怕一個按鈕也不能像普通HTML一樣來編寫,而必須按照Titanium約定的特定格式。
Salama是全新研發的一套Hybrid APP和雲端服務整合的開發套件。在終端,一共有三種開發模式:高度混合模式、JS模式和低度混合模式。在低度混合模式下,需要追求終端速度和顯示效果的開發者,可以在不改變原有的構架思路的前提下進行開發。在JS模式下,所有的畫面顯示及業務邏輯均由JS程序實現,對於原來的基於WEB的開發者,只要熟悉JS、CSS、HTML的前端工程師就可以輕松構建自己的應用。在高度混合模式下,原生和HTML5可以隨意組合,可以為開發者在進行大型商業軟體開發的過程中提供最高的性價比。不僅如此,在雲端Salama還提供了一整套雲服務,涵蓋了業務處理、資料庫操作、文件等資源的存儲分發等服務。Salama已經為多家公司提供了方案,知名客戶有TOSHIBA-AIRCON、GEDORE等品牌商,同時也在Salama平台上構造了Ishow企業電子目錄產品服務。
AppCan在技術架構上和PhoneGap類似是Web主體型中間件,但是通過結合了一些原生交互效果能夠達到iOS、Android平台都比較一致的用戶體驗。但是相比PhoneGap的開源,AppCan相對封閉的路線顯得過於謹慎。
Hybrid App這個領域雖然還處於比較初期的階段,但是已經有很多優秀的公司和技術團隊在致力於跨平台開發移動應用中間件技術的研究,給了開發者眾多選擇。開發者可以根據實際的項目需求來選擇中間件。Web App雖被瀏覽器廠商和搜索引擎公司所推崇,但存在用戶體驗差、盈利模式不明確等現階段無法解決的問題,或最終夭折。Hybrid App正在被越來越多的公司和開發者所認同,勢必會成為新世界的王。
I. Hybrid App開發中,web端與native端幾種常見的通信場景
本篇文章,我們主要敘述一下Hybrid App中常見的幾種通訊場景,包括 注冊 、 登錄 、 支付 、 登錄狀態的保持 以及 退出 。由於我在前面的文章中已經有過對web端和native之間通信方式的講解,所以本篇文章主要是以使用為主。如果您還不了解web端和原生端的通信方式,請查看我的這篇文章 《Hybird App中 Android 和 IOS 與網頁之間的通信》 進行學習,了解基礎非常重要。
Register.vue
1、注冊按鈕點擊事件,針對不同的平台使用不同的邏輯。
2、調用android注冊方法。需要在android端注冊 register 方法,並返回是否通過校驗的值(boolean)。
3、調用IOS注冊方法。當然也需要在IOS原生端定義 register 方法,由於IOS中不能直接返回結果給web端,所以需要在web端的 window 對象中掛載一個回調方法 onRegisterCallback ,等IOS端完成處理後,執行該方法。
一定要注意,要在執行 window.webkit.messageHandlers.register.postMessage(userJson) 執行前將 注冊回調方法onRegisterCallback 進行掛載。
4、注冊回調方法
當我們完成了注冊功能,其他的功能其實就是簡單復制的過程了。話不多說,咱們碼上見真情。
Login.vue
1、登錄按鈕點擊事件
3、調用 android 登錄驗證
4、調用 ios 登錄驗證
5、接收登錄驗證結果
當然,在登錄成功後,我們需要將用戶通過 vuex 進行保存,這里就不細講了。同時,在原生端也會將用戶名進行保存。
在原生端啟用webview載入完web端頁面的後回去執行,我們掛載在web端 window 下面的方法 nativeFunctionUserLogin 方法,並將原生端保存的用戶名發送給web端。web端再將用戶保存在vuex中,如此,就實現了登錄狀態的保持。
App.vue
首先看一下支付頁面。
1、支付點擊事件
2、支付方式點擊事件
1、退出登錄按鈕點擊事件
2、調用 android 退出登錄的方法
3、調用 android 退出登錄的方法
4、退出登錄的回調方法
J. Android混合開發是什麼東西
混合開發的App(Hybrid App)就是在一個App中內嵌一個輕量級的瀏覽器,一部分原生的功能改為Html 5來開發,這部分功能不僅能夠在不升級App的情況下動態更新,而且可以在Android或iOS的App上同時運行,讓用戶的體驗更好又可以節省開發的資源。