前言
上一節(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
如圖第1~3項寇钉,告知了我們:請下載最新版的Cordova-Android源碼,再通過ant打包工具將源碼打成Jar包舶赔,然后通過Jar包進(jìn)行依賴扫倡。
那么,我們按照官方描述的方式嘗試一下吧。
下載源碼Cordova-Android
在頁面 “Embed Cordova in native apps” 的底部撵溃,選擇【More Resources 】-- 【Source Code】
進(jìn)入源碼下載頁面:
下載源碼【cordova-android】到本地(建議下載官方正式發(fā)布的版本疚鲤,即release版)。
配置ant打包環(huán)境
因需要使用ant進(jìn)行打包缘挑,所以集歇,安裝ant并配置環(huán)境變量
1.下載ant
ant下載地址:http://ant.apache.org/bindownload.cgi
我本地下載的是第一項: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 常用操作命令:i 指輸入,:wq 指保存并退出吕粗,更多操作請自行查資料纺荧。
使剛配置的環(huán)境變量生效,執(zhí)行命令:
source .bash_profile
3.查看ant版本
執(zhí)行命令:
ant -version
生成Jar包
1.源碼/cordova-android-master/framework中增加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.生成成功
Jar包使用
1.將cordova-8.0.0-dev.jar拷貝到原生項目的libs下,配置依賴肢簿。
2.參考Android H5混合開發(fā)(3),導(dǎo)入測試插件信息蜻拨。
3.編譯運行原生項目:
總結(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