1. 程式人生 > >在SAP除了使用Cordova生產移動應用外,還有這種方式

在SAP除了使用Cordova生產移動應用外,還有這種方式

本文和Jerry過去的文章不太一樣,算不上Jerry的知識分享,只是記錄一下Jerry用React-Native把應用安裝到Android手機上遇到的一些問題,方便以後檢視。

Jerry的同事Leo用React-Native開發了一個應用,現在Jerry需要把這個應用在自己的安卓手機上執行起來。

客戶啟動這個應用後,自動召喚出手機上的攝像頭,對身邊的物品進行拍照,然後把照片上傳到SAP Cloud Platform的Leonardo那裡,消費機器學習API之一的Similarity score服務,返回最相似的三個圖案。

去年Jerry的C4C開發團隊同事,Yang Joey曾經寫過一篇文章:SAP移動應用解決方案之一:HTML5應用 + Cordova = 平臺相關的混合應用,介紹了SAP Cloud for Customer的移動端應用是怎麼基於開源專案Cordova建立的,當時文章曾經提及,使用Cordova打包成的移動應用,實際上執行在移動平臺的WebView裡。而React-Native則有著和Cordova完全不同的設計理念。

關於這兩種技術的比較,網上有很多的文章,大家根據關鍵字“React-Native Cordova”搜尋就行了,比如這篇:

https://www.toptal.com/mobile/comparing-react-native-to-cordova

Jerry是按照React-Native中文網站一步一步操作的,過程中遇到一些問題,全都是和Android平臺相關的,React-Native官網沒有提及,最後靠Google都順利解決了。

Could not resolve project: react-native-camera

Google找到一個連結:https://github.com/react-native-community/react-native-camera/blob/master/docs/migrationV2.md#android

需要在應用的android/app/build.gradle檔案裡新增一行配置:missingDimensionStrategy 'react-native-camera', 'general'

com.android.builder.testing.api.DeviceException: No connected devices!

這報錯資訊很清楚,React-Native cli不知道應該將打好包的應用安裝在什麼地方。解決方法也很容易,要麼啟動一個Android模擬器,要麼用USB連線真機。

用AVD manager啟動一個模擬器:

然後重新執行react-native run-android, 就能將應用安裝到模擬器上了。

或者用USB連線手機,開啟手機上的USB除錯選項:

一樣能夠通過react-native run-android將應用直接裝到手機上:

Failed to install the following Android SDK packages as some licences have not been accepted.

這個錯也容易解決,執行sdkmanager.bat --licenses, 一路選擇Y接受所有的licenses即可。

cannot find symbol import androidx.annotation.Nullable;

編譯錯誤。在應用的android資料夾的gradle.properties配置檔案裡,增加下面兩條配置記錄: android.useAndroidX=true android.enableJetifier=true

之後這個編譯錯誤就沒有了。

因為Leo開發的這個React-Native應用裡面可以用JavaScript程式碼呼叫手機攝像頭,Jerry覺得非常神奇,出於好奇,開啟Leo的程式碼學習了一下。

從react-native-camera庫裡匯出RNCamera元件:

到React-Native應用資料夾node_modules下檢視RNCamera的實現,發現果然是根據移動作業系統的型別分別作了處理。如果是Android平臺,使用攝像頭對應的許可權為:PermissionsAndroid.PERMISSIONS.CAMERA

在Android平臺下使用攝像頭的Java程式碼,存放在對應的android資料夾裡。

Jerry以前使用Cordova生產移動移動時,曾經研究過Cordova應用裡的JavaScript程式碼是如何呼叫Android平臺上原生的Java程式碼的,也在SAP社群上寫了一些文章:

https://blogs.sap.com/2017/08/18/step-by-step-to-create-a-custom-cordova-plugin-for-android-and-consume-it-in-your-ui5-application/

這篇文章介紹的是如果發現Cordova提供的標準外掛不能滿足我們的需求時,我們可以用Java開發自定義的Cordova外掛,然後在JavaScript程式碼裡呼叫。

Cordova裡JavaScript程式碼呼叫Java程式碼的原理,Jerry在這三篇SAP社群部落格裡介紹過:

至於React-Native應用裡的JavaScript程式碼是否通過同樣的原理呼叫Java程式碼,Jerry還沒有時間去研究,因為我下一步需要弄清楚如何使用React-Native基於Android平臺打一個可以安裝的apk檔案出來,這樣才能分發給其他同事測試。

感謝閱讀。

更多閱讀

  • SAP移動應用解決方案之一:HTML5應用 + Cordova = 平臺相關的混合應用
  • SAP Fiori應用的三種部署方式

要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":

相關推薦

SAP除了使用Cordova生產移動應用還有這種方式

本文和Jerry過去的文章不太一樣,算不上Jerry的知識分享,只是記錄一下Jerry用React-Native把應用安裝到And

大數據應用除了在體育項目中還有這些切身感受得到的應用案例

全國 性格 解決方案 現在 行業應用 web 規模 調整 菜單 本文來自網易雲社區。 大數據應用已廣泛深入我們生活的方方面面,涵蓋醫療、交通、金融、教育、體育、零售等各行各業。 天氣預測應用案例: 典型的案例即天氣預測。各類氣象指征瞬時發生,以典型的“高頻復雜”的形式出

移動應用開發部實施敏捷開發3個月後的一些經驗和教訓。

部門採用敏捷開發了3個月,這3個月利用敏捷的思想在部門實施了敏捷開發的大部分實踐和嘗試,這裡總結一下這3個月實施敏捷開發的一些工作狀況。 一、敏捷開發的具體工作; 1. 整體人員進行敏捷開發培訓,在部門內選擇不同的人員擔任產品負責人(PO)、ScrumMaster; 2. 

android微信開放平臺申請移動應用應用簽名怎樣獲取

fonts des 查找文檔 範例 javase 開發 lang p s pan 在微信開放平臺,申請移動應用的時候: https://open.weixin.qq.com/cgi-bin/appcreate?t=manage/createMobile&a

除了binlog2sql工具使用python腳本閃回數據(數據庫誤操作)

eat 修改 ext pri 之前 測試 required find 實例 利用binlog日誌恢復數據庫誤操作數據 在人工手動進行一些數據庫寫操作的時候(比方說數據修改),尤其是一些不可控的批量更新或刪除,通常都建議備份後操作。不過不怕萬一,就怕一萬,有備無患總是好的。在

rabbitMQ應用laravel生產廣播消息springboot消費消息

-- lis bind 交換 oot server 官方 edi 圖片 最近做一個新需求,用戶發布了動態,前臺需要查詢,為了用戶讀取信息響應速度更快(MySQL很難實現或者說實現起來很慢),所以在用戶動態發布成功後,利用消息機制異步構建 redis緩存 和 elastics

打造移動應用與遊戲安全防線騰訊WeTest安全服務全線升級

當移動網際網路滲透到千家萬戶,與工業控制、智慧交通、實時社交、休閒娛樂緊密結合時,應用安全就變得尤為重要。 尤其在網路強相關的APP流行年代,當APP應用客戶端上傳與獲取資訊,大多通過介面在伺服器雙向通訊,這很容易被第三方獲取,導致資料盜取、介面盜刷,致使使用者資訊洩露,嚴重情況下將出現財產損失。而對於移動

移動應用效率對比Xamarin表現優異!

自從上一個部落格發表之後,我決定做一個更全面的測試,其中包括更多的開發語言和平臺。這一次,我添加了Java, Swift, C# 和 Ruby。 我把函式遷移到了 Objective-C,JavaScript和C++上, Object-C 是作為iOS的效能的比較基準,JavaScript可以讓我測

一個數組中除了有兩個數字只出現一次其他數字都出現兩次求出這兩個出現一次的數字

求出兩個只出現一次的數字 首先,我們知道兩個相同的數字進行異或操作時為0,如果題目裡面只有一個數字出現一次的話,我們就可以直接對陣列中的所有數字進行異或操作,最後得到的數字就是單獨出現的那個數字,但

微信移動應用接入開發, Android 授權微信登入獲取openid,unionid等score引數錯誤或者沒有scope許可權

    寫這篇文章的原因,就是自己氣不過。專案需求突然要做微信公眾號與App微信分享使用同個使用者體系,接到任務是確認這使用者體系,於是需要確認android app端獲取授權使用者後返回的unionid與微信公眾號授權使用者返回的unionid是否一致。但是,為了獲取這個

UNI-APP 生成APP 微信公眾開放平臺中申請移動應用如何獲取應用簽名和應用包名稱

UNI-APP 生成APP  微信支付和登入,都需要移動應用,是在微信公眾開放平臺中申請移動應用 https://open.weixin.qq.com/cgi-bin/index?t=home/index&lang=zh_CN 一、申請過程中,蘋果應用要申請蘋果A

【AR】移動應用中的AR開發5款最受歡迎工具推薦!

英文原文:Top 5 Tools for Augmented Reality in Mobile Appshttp://www.developereconomics.com/top-5-tools-for-augmented-reality-in-mobile-apps/

Akka-CQRS(0)- 基於akka-cluster的讀寫分離框架構建gRPC移動應用後端架構

異常 在線 persist 體系 分片 系統性能 resp 數據庫更新 讀寫分離 上一篇我們討論了akka-cluster的分片(sharding)技術。在提供的例子中感覺到akka這樣的分布式系統工具特別適合支持大量的帶有內置狀態的,相對獨立完整的程序在集群節點上分

使用IntelliJ IDEA(androidstudio前身)開發android移動應用前的基本設定提高開發效率

2、介面字型大小設定 File選單->Settings->Appearance->Override default fonts by(not recommended): Name:宋體(建議選擇中文,防止出現中文亂碼。起初的中文字型名稱為空白,只

移動應用場景下ip應該包括port,不帶埠號的ip已經沒有意義了。

在以移動應用快速發展的今天 ,對於客戶端源ip,port是識別客戶端的重要組成 ,因為基站的ip基本是共用的,只有ip+port才能標識一個客戶端連結,純ip只能相當於以前的接入商。所以現在以遷移應用為

積極應對APP風險問題海雲安力保移動應用安全

近日,廣東警方開展移動網際網路應用安全監測工作,發現“湯姆貓小飛艇”“生死狙擊:聖光騎士”“搜悅-精華新聞閱讀”“拍拍貸借款”“美女化妝換裝教程”“裝X神器”等17款APP存在惡意扣費、竊取使用者資訊、強行捆綁推廣應用軟體等突出安全問題,涉及12個APP釋出平臺。 就在不

IOS中公布應用程序進度條一直不走怎麽處理

sso pan arch 技術分享 成功 csdn 版本 進度條 div 在IOS中公布應用程序非常是喜聞樂見。近期1周。我更新了6次版本號。可是時不時的會卡住,進度條不走。最後總結了幾個原因。 1.在公布前你要確認自己的證書是否配置正確 2.DNS域名server有沒

[iOS]關於 App 混合(Hybrid)開發的優化包括H5、Weex等(本篇博客主要針對 iOS 應用講解但該思想同樣適用於Android)

color 數據 後臺 lib 新版 生成 下載地址 代碼 版本   我們知道混合開發,可以節省很多成本(時間成本,經濟成本等等),所以有很多公司比較鐘愛這種開發形式,今天所講的優化方式,也是我在我們公司的應用中實際用了的,而且我寫的這個優化的 SDK 已經開源到 gith

webots自學筆記(八)麥克納母輪移動機器人平臺可控制攝像頭視角

left sad src blog com 例子 好玩 也有 工作量 原創文章,來自“博客園,_阿龍clliu” http://www.cnblogs.com/clliu/,轉載請註明原文章出處。 覺得基礎的東西說的差不多了,之後就分享一些好玩的仿

改進Vim體驗:在插入模式下移動光標我不要用方向鍵!alt快捷鍵使用技巧!

targe 判斷 映射 tar 什麽 nbsp .vimrc 一次 time 改進Vim體驗:在插入模式下移動光標,我不要用方向鍵!alt快捷鍵使用技巧! 大家都知道,我們在插入模式下編輯代碼的時候 若想寫完這一部分後,移動到鄰近的一部分,如下一個單詞的後面,是很復雜的