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

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

Jerry的同事Leo用React-Native開發了一個應用,如今Jerry須要把這個應用在本身的安卓手機上運行起來。java

clipboard1,1

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

clipboard2

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

clipboard3,3

關於這兩種技術的比較,網上有不少的文章,你們根據關鍵字「React-Native Cordova」搜索就好了,好比這篇:android

https://www.toptal.com/mobile...git

clipboard4,4

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

clipboard5,5

Could not resolve project: react-native-camerareact-native

clipboard6,6

Google找到一個連接:https://github.com/react-nati...api

須要在應用的android/app/build.gradle文件裏添加一行配置:missingDimensionStrategy 'react-native-camera', 'general'app

clipboard7,7

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

clipboard8,8

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

用AVD manager啓動一個模擬器:

clipboard9,9

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

clipboard10,10

或者用USB鏈接手機,打開手機上的USB調試選項:

clipboard11,11

同樣可以經過react-native run-android將應用直接裝到手機上:

clipboard12

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

clipboard13,13

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

clipboard14,14

cannot find symbol import androidx.annotation.Nullable;

clipboard15,15

編譯錯誤。在應用的android文件夾的gradle.properties配置文件裏,增長下面兩條配置記錄:
android.useAndroidX=true
android.enableJetifier=true

clipboard16,16

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

clipboard17,17

由於Leo開發的這個React-Native應用裏面能夠用JavaScript代碼調用手機攝像頭,Jerry以爲很是神奇,出於好奇,打開Leo的代碼學習了一下。

從react-native-camera庫裏導出RNCamera組件:

clipboard18,18

到React-Native應用文件夾node_modules下查看RNCamera的實現,發現果真是根據移動操做系統的類型分別做了處理。若是是Android平臺,使用攝像頭對應的權限爲:PermissionsAndroid.PERMISSIONS.CAMERA

clipboard19,19

在Android平臺下使用攝像頭的Java代碼,存放在對應的android文件夾裏。

clipboard20,20

Jerry之前使用Cordova生產移動移動時,曾經研究過Cordova應用裏的JavaScript代碼是如何調用Android平臺上原生的Java代碼的,也在SAP社區上寫了一些文章:

https://blogs.sap.com/2017/08...

這篇文章介紹的是若是發現Cordova提供的標準插件不能知足咱們的需求時,咱們能夠用Java開發自定義的Cordova插件,而後在JavaScript代碼裏調用。

clipboard21,21

Cordova裏JavaScript代碼調用Java代碼的原理,Jerry在這三篇SAP社區博客裏介紹過:

至於React-Native應用裏的JavaScript代碼是否經過一樣的原理調用Java代碼,Jerry尚未時間去研究,由於我下一步須要弄清楚如何使用React-Native基於Android平臺打一個能夠安裝的apk文件出來,這樣才能分發給其餘同事測試。

感謝閱讀。

更多閱讀

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

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

相關文章
相關標籤/搜索