1. 程式人生 > >ionic工程引入cordova plugin camera 外掛編譯報錯問題總結

ionic工程引入cordova plugin camera 外掛編譯報錯問題總結

由於ionic專案要用到拍照和相簿選擇的功能,首先就想到了要用到cordova-plugin-camera這個外掛,上網搜了一下這個外掛的用法,貼兩個比較好的文章:

按照上訴所有步驟做好後,將ionic工程編譯匯入eclipse中進行編譯和除錯。(原始的安卓工程匯入會有報錯,要新增一個jar包;在AndroidManifest.xml檔案中把#{applicaton_id}替換成專案的packagename;project.properties檔案中設定打包時的編譯器版本)

然後問題來了,仍然有報錯,在說明有哪些問題和怎麼解決之前,先說下我的ionic開發環境:

Cordova CLI: 5.3
.1 Ionic CLI Version: 2.1.13 Ionic App Lib Version: 2.1.7 ios-deploy version: Not installed ios-sim version: Not installed OS: Windows 7 Node Version: v4.2.2 Xcode version: Not installed

首先,第一個問題就是專案報錯,報錯檔案為:src/org/apache/cordova/camera/CordovaUri.java,報錯程式碼為:

public Uri getCorrectUri()
    {
        if
(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) return androidUri; else return fileUri; }

Build.VERSION_CODES.M這句報錯,這個是工程開發環境的安卓sdk包版本的原因,報錯的版本是api22(android 5.1.1),在專案設定中改成api23(android 6.0)就好了,然後把工程的targetSdkVersion改為23(AndroidManifest.xml和project.properties檔案都要改),改完後,這個錯誤就消失了。

弄完這就可以連線真機除錯了,除錯的時候發現,在呼叫相機的時候呼叫不成功,執行報錯了,空指標錯誤。跟進程式碼除錯…
最後發現是src/org/apache/cordova/camera/CordovaUri.java中142行的this.applicationId獲取到的為空導致的錯誤,具體獲取的程式碼為:

this.applicationId = (String) BuildHelper.getBuildConfigValue(cordova.getActivity(), "APPLICATION_ID");
this.applicationId = preferences.getString("applicationId", this.applicationId);

懷疑是不是在專案匯入eclipse的時候在AndroidManifest.xml檔案把#{application_id}替換成了包名的緣故。據說在Android_studio中可以識別#{application_id},還沒親身試過。
解決辦法是把這兩行註釋掉,替換成:

this.applicationId = cordova.getActivity().getPackageName();

重新編譯除錯,呼叫相機成功!

注:第二個問題在國外網站發現有類似的,是在cordova-plugin-camera外掛從2.1.1升級到2.3.1之後出現的問題,大神們給的解決辦法有的是升級cordova-plugin-compat外掛,因為原始的獲取this.applicationId的方法是要基於這個外掛的;但是我專案中這個外掛已經是最新的了,最後通過修改camera外掛原始碼解決的問題。

相關推薦

ionic工程引入cordova plugin camera 外掛編譯問題總結

由於ionic專案要用到拍照和相簿選擇的功能,首先就想到了要用到cordova-plugin-camera這個外掛,上網搜了一下這個外掛的用法,貼兩個比較好的文章: 按照上訴所有步驟做好後,將ionic工程編譯匯入eclipse中進行編譯和除錯。(原始的安

ionic新增調取攝像頭外掛--cordova-plugin-camera

首先,引入cordova和ng-cordova的js: <script src="js/ng-cordova.js"></script> <script src="cordova.js"></script> 第

Cordova - 安裝camera外掛之後編譯錯誤解決方法!

原文: Cordova - 安裝camera外掛之後編譯錯誤解決方法!  安裝camera外掛之後,編譯出錯,錯誤截圖如下: 剛開始以為是AAPT編譯導致的,嘗試關閉AAPT編譯選項,但是不行,認真看了一下編譯出錯資訊,應該是缺少檔案導致的,隨後在對應的目錄中加入了缺失的檔案,再次編譯就可以

cordova-plugin-camera相機外掛使用

一、cordova-plugin-camera提供照相機API與裝置相機進行互動。 通過API我們可以拍攝或訪問照片庫中的照片,返回圖片的base64編碼字串或者圖片的url檔案路徑。 二.安裝命令: cordova plugin add cordova-plugin-ca

cordovacamera外掛,IOS下圖片旋轉問題

ios下,拍照或者從相簿中選擇圖片,上傳到伺服器後,圖片的方向是不對的。 常見於若是將IOS的照片匯入電腦(windows作業系統),看到的圖片也會有方向不對,主要是豎著照的圖片會有問題。 原因是windows的圖片瀏覽器沒有讀取照片的方向資訊,沒有做對應的處理。 解決方式

ionic如何使用cordova-plugin-alipay支付

下面請大家吃ionic栗子 建立ionic專案 新增依賴 如果沒有android環境就離開 IOS是沒有沙箱環境,那麼請選擇非沙箱模式 如果是沙箱模式那麼SANDBOX_MODE=true ,否則=

Maven開源外掛(yuicompressor-maven)編譯 A required class is missing:org.mozilla.javascript.ErrorReporter

 1.報錯現象                  這兩天遇到一個Maven外掛(JS壓縮)在公司Linux主機編譯出錯的問題,出錯內容

ionic 新增github外掛地址

  Error: Failed to fetch plugin https://github.com/raistlinzx/cordova-plugin-sharesdk.git  via re          gist

SpringBoot引入PageHelper外掛的解決方法

主要報錯如下: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.github.pagehelper.autoconfigure.PageHelperAutoC

原 AS升級3.1 編譯:The SourceSet 'instrumentTest' is not recognized by the Android Gradle Plugin.

AndroidStudio升級到3.1後編譯報錯:The SourceSet ‘instrumentTest’ is not recognized by the Android Gradle Plugin.專案中 gradle 配置sourceSets { main

ionic serve 編譯

遇到一個問題,新建的ionic3專案,第一次執行ionic serve正常執行,然後只要一改動程式碼ionc自動編譯就會報錯。如下圖: 解決方法: 提高@ionic/app-scripts的版本

maven編譯 -source 1.7 中不支持 lambda 表達式

表達 alt 服務 config img comm plugin ava ror Maven項目編譯失敗: [ERROR] COMPILATION ERROR : [INFO] --------------------------------------------

解答VS2013編譯不準確是什麽原因

發現 temp 過去 清除 明顯 控制 問題 one framework 1、當程序在錯誤時,VS2013編譯報出的錯誤有時不會一起全部報出,而是按錯誤的英文首字母逐個報出的 2、如果報錯的信息雙擊點過去查看時又發現無明顯錯誤問題時,這個這個時候可以是VS編譯的緩存問題,

IsTool:編譯

1-1 cnblogs 一個 head 什麽 相對 fields lds failed IsTool是一個幫助你創建由 Inno Setup 編譯器腳本的工具。Inno Setup 是一個出色的編譯器,即使對於某些專業的安裝 制作程序,它唯一的缺點就是它的腳本必須手

@Override註解在Eclipse中編譯

ava 註解 選擇 ips 編譯 rri 確認框 fin edi   導入新工程後,發現默認用的jre是1.5版本的,在Eclipse中右擊工程選擇Build Path->點擊Configure Build Path->Java Build Path->點

npm編譯,缺少組件

nod all 執行 成功 編譯 art 問題 安裝文件 cnpm 解決方式: 1.刪除安裝文件 node_modules; 2.在需要安裝 node_modules 文件的文件夾中,打開命令窗口,輸入: cnpm install; 3.再輸入: npm start,若沒報

linux安裝lua相關編譯

cto efi comment lua ins targe read readline adl 1、報之類的錯誤 /usr/lib/libreadline.so: undefined reference to `PC‘ /usr/lib/libreadline.so:

spark編譯信息簡介

報錯信息 exception xpl trac install version bug tin wiki spark編譯需要環境 git java1.7+ maven R 報錯信息1: [INFO] ----------------------------------

mac 上python編譯No module named MySQLdb

nload egg setup sql tmp loading mysql exp finall mac 上python編譯報錯No module named MySQLdb You installed python You did brew install mys

ant編譯“錯誤: 編碼UTF-8的不可映射字符”

ant 編譯報錯 error 根據報錯 的提示是編碼的問題,build.xml文件使用的是ANSI,文件中首行使用,網上查資料都是將encoding設置為GBK,設置之後是之前報錯的文件“AdvertiserAction.java”正常了,但是又會產生新的文件“PageUtil.java”報錯“錯