Cordova進(jìn)行iOS開(kāi)發(fā) (已存FFmpeg項(xiàng)目中添加Cordova及自定義插件)

Cordova進(jìn)行iOS開(kāi)發(fā) (已存FFmpeg項(xiàng)目中添加Cordova及自定義插件)

主要介紹的是iOS端項(xiàng)目實(shí)戰(zhàn),以及簡(jiǎn)單的將Cordova集成到自己的工程項(xiàng)目中(iOS的FFmpeg項(xiàng)目)的方法,以及添加Cordova自定義插件的簡(jiǎn)單使用。本文的自定義插件是純代碼的實(shí)現(xiàn)掖棉,至于在終端創(chuàng)建自定義cordova插件請(qǐng)查看官網(wǎng)介紹:http://cordova.axuer.com/plugins/

其實(shí)最終實(shí)現(xiàn)的效果就是在js網(wǎng)頁(yè)界面點(diǎn)擊網(wǎng)頁(yè)里的按鈕觸發(fā)ffmpeg解碼的效果,即自定義cordova插件妥衣,你也可以自定義其他的插件(如訪(fǎng)問(wèn)相機(jī)相冊(cè)赘阀,像原生app一樣去訪(fǎng)問(wèn)手機(jī)里的內(nèi)容)從而實(shí)現(xiàn)小混合開(kāi)發(fā)(webapp)

關(guān)于業(yè)務(wù)的web頁(yè)面需要調(diào)用原生的相機(jī)万细,相冊(cè)扑眉,地理位置,掃描二維碼等一系列功能赖钞,這就涉及到j(luò)s與原生交互的問(wèn)題了腰素。起初iOS端提出的方案是直接用WebView或者用WKWebView嵌套就好了,因?yàn)閼?yīng)要求雪营,只要web端發(fā)送一個(gè)假的請(qǐng)求弓千,然后手機(jī)端斷掉截住這個(gè)請(qǐng)求也是可以實(shí)現(xiàn)交互的,不過(guò)安卓因?yàn)槠淦脚_(tái)多樣性和特殊性這個(gè)就不兼容而且可行性交差献起,這是安卓給的說(shuō)法洋访,可是不管怎么說(shuō),反正最后確定雙方都用Cordova實(shí)現(xiàn)該功能

至于iOS端cordova的配置請(qǐng)查看的上一篇文章谴餐,絕對(duì)是筆者親身經(jīng)歷姻政,有圖有真相(第一次經(jīng)歷確實(shí)有點(diǎn)坑),iOS版Cordova安裝開(kāi)發(fā)

已存FFmpeg項(xiàng)目
已存FFmpeg項(xiàng)目里靜態(tài)庫(kù)支持的的架構(gòu)
armv7 i386 x86_64 arm64

在這里先介紹下ffmpeg的.a架構(gòu):和cordova.a的架構(gòu)類(lèi)似岂嗓,所能夠支持的模擬器或者真機(jī)的版本平臺(tái)(盡量ffmpeg的.a和cordova.a支持架構(gòu)相同扶歪,不然在運(yùn)行時(shí)會(huì)出現(xiàn):Undefined symbols for architecture x86_64:

好了下面真正進(jìn)入正文:

1.將cordova本地相關(guān)的文件copy到已存在的項(xiàng)目中

1.1. ?"/Users/Mac/Desktop/Cordova/hello/platforms/ios" 路徑下面需要copy的4個(gè)文件夾copy到新建項(xiàng)目(FFmpegDecodeCordovaPlugin)的根路徑中

CordovaLib? cordova? www? platform_www

copy CordovaLib? cordova? www? platform_www 這4個(gè)文件

1.2. 需要將下面的兩個(gè)"config.xml" -> 各自copy到已存在的iOS項(xiàng)目的文件夾內(nèi)

config.xml (一)
config.xml (二)

2.配置相關(guān)參數(shù)

2.1. 下圖"Run Script.png" 中點(diǎn)擊①中的按鈕創(chuàng)建"New Run Script Phase" ,②為創(chuàng)建的"Run Script"

New Run Script Phase

2.2 將下圖"Copy www directory.png" 中①原名稱(chēng)"Run Script"修改為"Copy www directory"摄闸;將②中的選項(xiàng)(show environment variables in build log)去掉;將下面的代碼復(fù)制到③中.

NODEJS_PATH=/usr/local/bin; NVM_NODE_PATH=~/.nvm/versions/node/`nvm version 2>/dev/null`/bin; N_NODE_PATH=`find /usr/local/n/versions/node/* -maxdepth 0 -type d 2>/dev/null | tail -1`/bin; XCODE_NODE_PATH=`xcode-select --print-path`/usr/share/xcs/Node/bin; PATH=$NODEJS_PATH:$NVM_NODE_PATH:$N_NODE_PATH:$XCODE_NODE_PATH:$PATH && node cordova/lib/copy-www-build-step.js

123步驟

2.3 Build Settings -> Other Linker Flags 中添加"-ObjC -all_load"

-ObjC -all_load

2.4 Add Files to ... -> CordovaLib.xcodeproj

CordovaLib.xcodeproj

2.5 Add Files to ... -> config.xml

上圖是對(duì)的add config.xml妹萨,
這是?的add年枕,會(huì)出現(xiàn)Plugin' not found, or is not a CDVPlugin. Check your plugin mapping in config.xml錯(cuò)誤導(dǎo)致點(diǎn)擊網(wǎng)頁(yè)按鈕時(shí)找不到plugin方法

2.6 Add Files to ... -> www文件夾

www文件夾

2.7 Schemes按照下圖配置,然后編譯一次程序乎完,最后導(dǎo)入下面兩項(xiàng)

Build Phases -> Target Dependencies -> CordovaLib

Build Phases -> Link Binary With Libraries -> libCordova.a

CordovaLib 注意command+b編譯一下
libCordova.a 注意command+b編譯一下

(在這里說(shuō)下心的熏兄,此處的libCordova.a和ffmpeg的.a靜態(tài)庫(kù)一樣,需要多個(gè)不同版本模擬器和真機(jī)器的編譯树姨,支持的架構(gòu)才能夠多摩桶,盡量和ffmpeg的.a的架構(gòu)相同)

編譯完后可以在終端查看下 lipo -info XXXX.a支持的架構(gòu)

最后可以把a(bǔ)rm64和x86_64合并為一個(gè)fat file(新的.a庫(kù))lipo -create /Users//Build/Products/Debug-iphoneos/libCordova.a /Users//Build/Products/Debug-iphonesimulator/libCordova.a? -output /Users//Build/Products/LibCordova.a

lipo -info XXXX.a
合并庫(kù)

2.8 Schemes按照下圖配置,將"ViewController.h" 文件改為

ViewController.h

3. 自定義插件

3.1 在config.xml文件中加入

config.xml文件中加入feature

3.2 創(chuàng)建一個(gè)"ZTTPlugin" 類(lèi)帽揪,實(shí)現(xiàn)下面的的方法

ZTTPlugin.h聲明

#import<Cordova/CDVPlugin.h>

@interface ZTTPlugin : CDVPlugin

- (void)myMethod:(CDVInvokedUrlCommand*)command;

@end

ZTTPlugin.m實(shí)現(xiàn)

ZTTPlugin.m實(shí)現(xiàn)

3.3 編寫(xiě)index.html文件如下

index.html

運(yùn)行效果如下:

運(yùn)行效果

整個(gè)ExampleObject界面都是網(wǎng)頁(yè)硝清,不再是控制里的控件

由于筆者js略知皮毛,網(wǎng)頁(yè)寫(xiě)的很簡(jiǎn)單转晰,js進(jìn)行中芦拿,有人告訴我js現(xiàn)在是一種趨勢(shì)啦

4.工程地址:https://github.com/mrzhao12/FFmpegDecodeCordovaPlugin

5.下面說(shuō)下簡(jiǎn)單cordova自定義插件的坑

1.第一次復(fù)制index.xml時(shí)位置放錯(cuò)了會(huì)出現(xiàn):

ERROR: Plugin 'ZTTPlugin' not found, or is not a CDVPlugin. Check your plugin mapping in config.xml.

Plugin' not found, or is not a CDVPlugin. Check your plugin mapping in config.xml

2.(在這里說(shuō)下心得士飒,此處的libCordova.a和ffmpeg的.a靜態(tài)庫(kù)一樣,需要多個(gè)不同版本模擬器和真機(jī)器的編譯蔗崎,支持的架構(gòu)才能夠多酵幕,盡量和ffmpeg的.a的架構(gòu)相同)(詳細(xì)情況見(jiàn)上文2.7)

Cordova入門(mén)也沒(méi)有那么難,多看看官方的文檔Documentation缓苛。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末芳撒,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子未桥,更是在濱河造成了極大的恐慌笔刹,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钢属,死亡現(xiàn)場(chǎng)離奇詭異徘熔,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)淆党,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)酷师,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人染乌,你說(shuō)我怎么就攤上這事山孔。” “怎么了荷憋?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵台颠,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我勒庄,道長(zhǎng)串前,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任实蔽,我火速辦了婚禮荡碾,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘局装。我一直安慰自己坛吁,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布铐尚。 她就那樣靜靜地躺著拨脉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪宣增。 梳的紋絲不亂的頭發(fā)上玫膀,一...
    開(kāi)封第一講書(shū)人閱讀 51,631評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音爹脾,去河邊找鬼匆骗。 笑死劳景,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的碉就。 我是一名探鬼主播盟广,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼瓮钥!你這毒婦竟也來(lái)了筋量?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤碉熄,失蹤者是張志新(化名)和其女友劉穎桨武,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體锈津,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡呀酸,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了琼梆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片性誉。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖茎杂,靈堂內(nèi)的尸體忽然破棺而出错览,到底是詐尸還是另有隱情,我是刑警寧澤煌往,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布倾哺,位于F島的核電站,受9級(jí)特大地震影響刽脖,放射性物質(zhì)發(fā)生泄漏羞海。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一曲管、第九天 我趴在偏房一處隱蔽的房頂上張望却邓。 院中可真熱鬧,春花似錦翘地、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至勺远,卻和暖如春橙喘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背胶逢。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工厅瞎, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留饰潜,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓和簸,卻偏偏與公主長(zhǎng)得像彭雾,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子锁保,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容