本文和Jerry過(guò)去的文章不太一樣,算不上Jerry的知識(shí)分享,只是記錄一下Jerry用React-Native把應(yīng)用安裝到Android手機(jī)上遇到的一些問(wèn)題,方便以后查看。
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、重慶小程序開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶(hù)創(chuàng)新互聯(lián)還提供了祁門(mén)免費(fèi)建站歡迎大家使用!Jerry的同事Leo用React-Native開(kāi)發(fā)了一個(gè)應(yīng)用,現(xiàn)在Jerry需要把這個(gè)應(yīng)用在自己的安卓手機(jī)上運(yùn)行起來(lái)。
客戶(hù)啟動(dòng)這個(gè)應(yīng)用后,自動(dòng)召喚出手機(jī)上的攝像頭,對(duì)身邊的物品進(jìn)行拍照,然后把照片上傳到SAP Cloud Platform的Leonardo那里,消費(fèi)機(jī)器學(xué)習(xí)API之一的Similarity score服務(wù),返回最相似的三個(gè)圖案。
去年Jerry的C4C開(kāi)發(fā)團(tuán)隊(duì)同事,Yang Joey曾經(jīng)寫(xiě)過(guò)一篇文章:SAP移動(dòng)應(yīng)用解決方案之一:HTML5應(yīng)用 + Cordova = 平臺(tái)相關(guān)的混合應(yīng)用,介紹了SAP Cloud for Customer的移動(dòng)端應(yīng)用是怎么基于開(kāi)源項(xiàng)目Cordova創(chuàng)建的,當(dāng)時(shí)文章曾經(jīng)提及,使用Cordova打包成的移動(dòng)應(yīng)用,實(shí)際上運(yùn)行在移動(dòng)平臺(tái)的WebView里。而React-Native則有著和Cordova完全不同的設(shè)計(jì)理念。
關(guān)于這兩種技術(shù)的比較,網(wǎng)上有很多的文章,大家根據(jù)關(guān)鍵字“React-Native Cordova”搜索就行了,比如這篇:
https://www.toptal.com/mobile/comparing-react-native-to-cordova
Jerry是按照React-Native中文網(wǎng)站一步一步操作的,過(guò)程中遇到一些問(wèn)題,全都是和Android平臺(tái)相關(guān)的,React-Native官網(wǎng)沒(méi)有提及,最后靠Google都順利解決了。
Could not resolve project: react-native-camera
Google找到一個(gè)鏈接: https://github.com/react-native-community/react-native-camera/blob/master/docs/migrationV2.md#android
需要在應(yīng)用的android/app/build.gradle文件里添加一行配置:missingDimensionStrategy 'react-native-camera', 'general'
com.android.builder.testing.api.DeviceException: No connected devices!
這報(bào)錯(cuò)信息很清楚,React-Native cli不知道應(yīng)該將打好包的應(yīng)用安裝在什么地方。解決方法也很容易,要么啟動(dòng)一個(gè)Android模擬器,要么用USB連接真機(jī)。
用AVD manager啟動(dòng)一個(gè)模擬器:
然后重新執(zhí)行react-native run-android, 就能將應(yīng)用安裝到模擬器上了。
或者用USB連接手機(jī),打開(kāi)手機(jī)上的USB調(diào)試選項(xiàng):
一樣能夠通過(guò)react-native run-android將應(yīng)用直接裝到手機(jī)上:
Failed to install the following Android SDK packages as some licences have not been accepted.
這個(gè)錯(cuò)也容易解決,執(zhí)行sdkmanager.bat --licenses, 一路選擇Y接受所有的licenses即可。
cannot find symbol import androidx.annotation.Nullable;
編譯錯(cuò)誤。在應(yīng)用的android文件夾的gradle.properties配置文件里,增加下面兩條配置記錄:
android.useAndroidX=true
android.enableJetifier=true
之后這個(gè)編譯錯(cuò)誤就沒(méi)有了。
因?yàn)長(zhǎng)eo開(kāi)發(fā)的這個(gè)React-Native應(yīng)用里面可以用JavaScript代碼調(diào)用手機(jī)攝像頭,Jerry覺(jué)得非常神奇,出于好奇,打開(kāi)Leo的代碼學(xué)習(xí)了一下。
從react-native-camera庫(kù)里導(dǎo)出RNCamera組件:
到React-Native應(yīng)用文件夾node_modules下查看RNCamera的實(shí)現(xiàn),發(fā)現(xiàn)果然是根據(jù)移動(dòng)操作系統(tǒng)的類(lèi)型分別作了處理。如果是Android平臺(tái),使用攝像頭對(duì)應(yīng)的權(quán)限為:PermissionsAndroid.PERMISSIONS.CAMERA
在A(yíng)ndroid平臺(tái)下使用攝像頭的Java代碼,存放在對(duì)應(yīng)的android文件夾里。
Jerry以前使用Cordova生產(chǎn)移動(dòng)移動(dòng)時(shí),曾經(jīng)研究過(guò)Cordova應(yīng)用里的JavaScript代碼是如何調(diào)用Android平臺(tái)上原生的Java代碼的,也在SAP社區(qū)上寫(xiě)了一些文章:
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/
這篇文章介紹的是如果發(fā)現(xiàn)Cordova提供的標(biāo)準(zhǔn)插件不能滿(mǎn)足我們的需求時(shí),我們可以用Java開(kāi)發(fā)自定義的Cordova插件,然后在JavaScript代碼里調(diào)用。
Cordova里JavaScript代碼調(diào)用Java代碼的原理,Jerry在這三篇SAP社區(qū)博客里介紹過(guò):
至于React-Native應(yīng)用里的JavaScript代碼是否通過(guò)同樣的原理調(diào)用Java代碼,Jerry還沒(méi)有時(shí)間去研究,因?yàn)槲蚁乱徊叫枰宄绾问褂肦eact-Native基于A(yíng)ndroid平臺(tái)打一個(gè)可以安裝的apk文件出來(lái),這樣才能分發(fā)給其他同事測(cè)試。
感謝閱讀。
要獲取更多Jerry的原創(chuàng)文章,請(qǐng)關(guān)注公眾號(hào)"汪子熙":
本文題目:在SAP除了使用Cordova生產(chǎn)移動(dòng)應(yīng)用外,還有這種方式-創(chuàng)新互聯(lián)
地址分享:http://jinyejixie.com/article14/dehpde.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、Google、定制網(wǎng)站、網(wǎng)站導(dǎo)航、網(wǎng)站改版、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容