Android H5混合開發(fā)(4):構(gòu)建Cordova Jar包

前言

上一節(jié)崔步,介紹了原生項目如何嵌入Cordova,我們對Cordova的依賴使用的是CordovaLib Module缎谷,這也是安卓項目常用的方式井濒。
但是,也有項目希望以Jar包的方式依賴Cordova列林,原因很多:怕暴露的源碼被程序員誤改瑞你、源碼不便于公司內(nèi)部私服倉庫管理、替換版本麻煩希痴、或其他者甲。

分析

Cordova官方從2.3.0版本后已不再提供Jar包,而是直接提供源碼润梯。
那么过牙,針對原生項目嵌入Cordova,官方提供了哪些指導(dǎo)文檔呢纺铭?
https://cordova.apache.org/docs/en/latest/guide/platforms/android/webview.html

Embed Cordova in native apps(已中文翻譯)

如圖第1~3項寇钉,告知了我們:請下載最新版的Cordova-Android源碼,再通過ant打包工具將源碼打成Jar包舶赔,然后通過Jar包進(jìn)行依賴扫倡。

那么,我們按照官方描述的方式嘗試一下吧。

下載源碼Cordova-Android

在頁面 “Embed Cordova in native apps” 的底部撵溃,選擇【More Resources 】-- 【Source Code】


Source Code(未中文翻譯)

進(jìn)入源碼下載頁面:


Cordova源碼列表(github)

下載源碼【cordova-android】到本地(建議下載官方正式發(fā)布的版本疚鲤,即release版)。

配置ant打包環(huán)境

因需要使用ant進(jìn)行打包缘挑,所以集歇,安裝ant并配置環(huán)境變量

1.下載ant

ant下載地址:http://ant.apache.org/bindownload.cgi

ant下載列表

我本地下載的是第一項:apache-ant-1.10.5-bin-zip,下載完成后解壓縮即可语淘。

2.配置環(huán)境變量

配置環(huán)境變量(此次演示以mac為例诲宇,如果是windows的電腦,請網(wǎng)上查找一下惶翻,資料很多):
通過終端執(zhí)行命令:

vim .bash_profile

根據(jù)解壓縮路徑配置ANT_HOME和PATH姑蓝,如下圖:


vim .bash_profile

注釋:vim 常用操作命令:i 指輸入,:wq 指保存并退出吕粗,更多操作請自行查資料纺荧。
使剛配置的環(huán)境變量生效,執(zhí)行命令:

source .bash_profile
3.查看ant版本

執(zhí)行命令:

ant -version
查看ant版本

生成Jar包

1.源碼/cordova-android-master/framework中增加local.properties文件
增加local.properties文件

增加local.properties文件內(nèi)容颅筋,請根據(jù)自己電腦的Android SDK地址配置(也可從自己電腦上已有的androidstudio項目中拷貝)宙暇,我的project的local.properties文件內(nèi)容如下(僅供參考):

ndk.dir=/Users/qixingchao/Documents/Jobs/androidsoft/SDK/android-sdk-macosx/ndk-bundle
sdk.dir=/Users/qixingchao/Documents/Jobs/androidsoft/SDK/android-sdk-macosx
2.通過終端命令進(jìn)入目錄:/cordova-android-master/framework

framework是存放cordova源碼的目錄
執(zhí)行命令:

ant jar
Last login: Thu Jan 17 16:10:33 on ttys000
qixingcaodeiMac:~ qixingchao$ cd /Users/qixingchao/Desktop/cordova-android-master/framework 
qixingcaodeiMac:framework qixingchao$ ant jar
Buildfile: /Users/qixingchao/Desktop/cordova-android-master/framework/build.xml

-pre-build:

-check-env:
 [checkenv] Android SDK Tools Revision 25.2.5
 [checkenv] Installed at /Users/qixingchao/Documents/Jobs/androidsoft/SDK/android-sdk-macosx

-setup:
     [echo] Project Name: Cordova
  [gettype] Project Type: Android Library

-build-setup:
[getbuildtools] Using latest Build Tools: 28.0.3
     [echo] Resolving Build Target for Cordova...
[gettarget] Project Target:   Android 8.1.0
[gettarget] API level:        27
     [echo] ----------
     [echo] Creating output directories if needed...
    [mkdir] Created dir: /Users/qixingchao/Desktop/cordova-android-master/framework/res
    [mkdir] Created dir: /Users/qixingchao/Desktop/cordova-android-master/framework/libs
    [mkdir] Created dir: /Users/qixingchao/Desktop/cordova-android-master/framework/bin
    [mkdir] Created dir: /Users/qixingchao/Desktop/cordova-android-master/framework/bin/res
    [mkdir] Created dir: /Users/qixingchao/Desktop/cordova-android-master/framework/bin/rsObj
    [mkdir] Created dir: /Users/qixingchao/Desktop/cordova-android-master/framework/bin/rsLibs
    [mkdir] Created dir: /Users/qixingchao/Desktop/cordova-android-master/framework/gen
    [mkdir] Created dir: /Users/qixingchao/Desktop/cordova-android-master/framework/bin/classes
    [mkdir] Created dir: /Users/qixingchao/Desktop/cordova-android-master/framework/bin/dexedLibs
     [echo] ----------
     [echo] Resolving Dependencies for Cordova...
[dependency] Library dependencies:
[dependency] No Libraries
[dependency] 
[dependency] ------------------
     [echo] ----------
     [echo] Building Libraries with '${build.target}'...
   [subant] No sub-builds to iterate on

-code-gen:
[mergemanifest] Merging AndroidManifest files into one.
[mergemanifest] Manifest merger disabled. Using project manifest only.
     [echo] Handling aidl files...
     [aidl] No AIDL files to compile.
     [echo] ----------
     [echo] Handling RenderScript files...
     [echo] ----------
     [echo] Handling Resources...
     [aapt] Generating resource IDs...
     [echo] ----------
     [echo] Handling BuildConfig class...
[buildconfig] Generating BuildConfig class.

-pre-compile:

-compile:
    [javac] Compiling 40 source files to /Users/qixingchao/Desktop/cordova-android-master/framework/bin/classes
    [javac] 警告: [options] 源值1.5已過時, 將在未來所有發(fā)行版中刪除
    [javac] 警告: [options] 目標(biāo)值1.5已過時, 將在未來所有發(fā)行版中刪除
    [javac] 警告: [options] 要隱藏有關(guān)已過時選項的警告, 請使用 -Xlint:-options。
    [javac] 注: /Users/qixingchao/Desktop/cordova-android-master/framework/src/org/apache/cordova/engine/SystemCookieManager.java使用或覆蓋了已過時的 API垃沦。
    [javac] 注: 有關(guān)詳細(xì)信息, 請使用 -Xlint:deprecation 重新編譯客给。
    [javac] 3 個警告
     [echo] Creating library output jar file...
      [jar] Building jar: /Users/qixingchao/Desktop/cordova-android-master/framework/bin/classes.jar

jar:
      [jar] Building jar: /Users/qixingchao/Desktop/cordova-android-master/framework/cordova-8.0.0-dev.jar

BUILD SUCCESSFUL
Total time: 3 seconds
qixingcaodeiMac:framework qixingchao$ 

3.生成成功
已生成的cordova-8.0.0-dev.jar包

Jar包使用

1.將cordova-8.0.0-dev.jar拷貝到原生項目的libs下,配置依賴肢簿。
2.參考Android H5混合開發(fā)(3),導(dǎo)入測試插件信息蜻拨。
3.編譯運行原生項目:


image.png

總結(jié)

項目依賴Cordova池充,無論是使用Module還是Jar包,都是可行的缎讼。
具體開發(fā)項目時收夸,應(yīng)根據(jù)項目需要合理選擇。

如有不明白的地方血崭,請多參考官方文檔 https://cordova.apache.org/docs/en/latest/


第一篇:Android H5混合開發(fā)(1):構(gòu)建Cordova 項目

http://www.reibang.com/p/058a0dd7f809

第二篇:Android H5混合開發(fā)(2):自定義Cordova插件

http://www.reibang.com/p/8fcbf06a4c3a

第三篇:Android H5混合開發(fā)(3):原生Android項目里嵌入Cordova

http://www.reibang.com/p/e306ae0f1f03

第四篇:Android H5混合開發(fā)(4):構(gòu)建Cordova Jar包

http://www.reibang.com/p/447d41a1299d

第五篇:Android H5混合開發(fā)(5):封裝Cordova View

http://www.reibang.com/p/13a0fbaa3227

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末卧惜,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子夹纫,更是在濱河造成了極大的恐慌咽瓷,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,919評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件舰讹,死亡現(xiàn)場離奇詭異茅姜,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)月匣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評論 3 392
  • 文/潘曉璐 我一進(jìn)店門钻洒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來奋姿,“玉大人,你說我怎么就攤上這事素标〕剖” “怎么了?”我有些...
    開封第一講書人閱讀 163,316評論 0 353
  • 文/不壞的土叔 我叫張陵头遭,是天一觀的道長寓免。 經(jīng)常有香客問我,道長任岸,這世上最難降的妖魔是什么再榄? 我笑而不...
    開封第一講書人閱讀 58,294評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮享潜,結(jié)果婚禮上困鸥,老公的妹妹穿的比我還像新娘。我一直安慰自己剑按,他們只是感情好疾就,可當(dāng)我...
    茶點故事閱讀 67,318評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著艺蝴,像睡著了一般猬腰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上猜敢,一...
    開封第一講書人閱讀 51,245評論 1 299
  • 那天姑荷,我揣著相機(jī)與錄音,去河邊找鬼缩擂。 笑死鼠冕,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的胯盯。 我是一名探鬼主播懈费,決...
    沈念sama閱讀 40,120評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼博脑!你這毒婦竟也來了憎乙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,964評論 0 275
  • 序言:老撾萬榮一對情侶失蹤叉趣,失蹤者是張志新(化名)和其女友劉穎泞边,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體君账,經(jīng)...
    沈念sama閱讀 45,376評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡繁堡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,592評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片椭蹄。...
    茶點故事閱讀 39,764評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡闻牡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出绳矩,到底是詐尸還是另有隱情罩润,我是刑警寧澤,帶...
    沈念sama閱讀 35,460評論 5 344
  • 正文 年R本政府宣布翼馆,位于F島的核電站割以,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏应媚。R本人自食惡果不足惜严沥,卻給世界環(huán)境...
    茶點故事閱讀 41,070評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望中姜。 院中可真熱鬧消玄,春花似錦、人聲如沸丢胚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽携龟。三九已至兔跌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間峡蟋,已是汗流浹背坟桅。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留蕊蝗,地道東北人桦卒。 一個月前我還...
    沈念sama閱讀 47,819評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像匿又,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子建蹄,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,665評論 2 354