怎么做網(wǎng)站的思維導(dǎo)圖廚師培訓(xùn)機(jī)構(gòu)
在進(jìn)行應(yīng)用/服務(wù)的編譯構(gòu)建前,需要對(duì)工程和編譯構(gòu)建的Module進(jìn)行設(shè)置。API Version 9、API Version 8與API Version 4~7的構(gòu)建體系不同,因此在設(shè)置編譯構(gòu)建信息時(shí)也存在差異:
- API Version 9:需要對(duì)構(gòu)建配置文件、構(gòu)建腳本、應(yīng)用依賴的共享包等信息進(jìn)行設(shè)置。
- build-profile.json5:應(yīng)用/服務(wù)構(gòu)建配置文件。
- hvigorfile.ts:自定義編譯構(gòu)建腳本。
- oh-package.json5:應(yīng)用的三方包依賴,支持共享包的依賴。
- API Version 8:需要對(duì)構(gòu)建配置文件、構(gòu)建腳本、應(yīng)用依賴的npm包等信息進(jìn)行設(shè)置。
- build-profile.json5:HarmonyOS應(yīng)用/服務(wù)構(gòu)建配置文件。
- hvigorfile.ts:自定義編譯構(gòu)建腳本。
- package.json:應(yīng)用的三方包依賴,支持HAR(遵循npm標(biāo)準(zhǔn)規(guī)范)和npm包的依賴。
- API Version 4~7:需要通過(guò)build.gradle來(lái)對(duì)工程編譯構(gòu)建參數(shù)進(jìn)行設(shè)置。
build-profile.json5(API Version 8~9)
工程級(jí)build-profile.json5
工程級(jí)build-profile.json5的示例如下所示:
{"app": { //工程的簽名信息,可包含多個(gè)簽名信息"signingConfigs": [ {"name": "default", //標(biāo)識(shí)簽名方案的名稱"type": "HarmonyOS", //標(biāo)識(shí)HarmonyOS應(yīng)用//該方案的簽名材料"material": { "certpath": "D:\\SigningConfig\\debug_hos.cer", //調(diào)試或發(fā)布證書文件,格式為.cer"storePassword": "******", //密鑰庫(kù)密碼,以密文形式呈現(xiàn)"keyAlias": "debugKey", //密鑰別名信息"keyPassword": "******", //密鑰密碼,以密文形式呈現(xiàn)"profile": "D:\\SigningConfig\\debug_hos.p7b", //調(diào)試或發(fā)布證書Profile文件,格式為.p7b"signAlg": "SHA256withECDSA", //密鑰庫(kù)signAlg參數(shù)"storeFile": "D:\\SigningConfig\\debug_hos.p12" //密鑰庫(kù)文件,格式為.p12}}],"compileSdkVersion": 9, //指定HarmonyOS應(yīng)用/服務(wù)編譯時(shí)的SDK版本"compatibleSdkVersion": 9, //指定HarmonyOS應(yīng)用/服務(wù)兼容的最低SDK版本//定義構(gòu)建的產(chǎn)品品類,如通用默認(rèn)版、付費(fèi)版、免費(fèi)版等"products": [ {"name": "default", //定義產(chǎn)品的名稱,支持定制多product目標(biāo)產(chǎn)物,具體請(qǐng)參考定制多目標(biāo)構(gòu)建產(chǎn)物"signingConfig": "default", //指定當(dāng)前產(chǎn)品品類對(duì)應(yīng)的簽名信息,簽名信息需要在signingConfigs中進(jìn)行定義}]},"modules": [{"name": "entry", //模塊名稱"srcPath": "./entry", //標(biāo)明模塊根目錄相對(duì)工程根目錄的相對(duì)路徑"targets": [ //定義構(gòu)建的APP產(chǎn)物,由product和各模塊定義的targets共同定義{"name": "default", //target名稱,由各個(gè)模塊的build-profile.json5中的targets字段定義"applyToProducts": [ "default" //表示將該模塊下的“default” Target打包到“default” Product中]}]}]
}
模塊級(jí)build-profile.json5
模塊級(jí)build-profile.json5的示例如下所示:
{"apiType": 'faMode', //API類型,支持FA和Stage模型"showInServiceCenter": true, //是否在服務(wù)中心展示"buildOption": {//配置篩選har依賴.so資源文件的過(guò)濾規(guī)則"napiLibFilterOption": {//按照.so文件的優(yōu)先級(jí)順序,打包最高優(yōu)先級(jí)的.so文件"pickFirsts": ["**/1.so"],//按照.so文件的優(yōu)先級(jí)順序,打包最低優(yōu)先級(jí)的.so 文件"pickLasts": ["**/2.so"],//排除的.so文件"excludes": ["**/3.so"],//允許當(dāng).so重名沖突時(shí),使用高優(yōu)先級(jí)的.so文件覆蓋低優(yōu)先級(jí)的.so文件"enableOverride": true},//cpp相關(guān)編譯配置"externalNativeOptions": {"path": "./src/main/cpp/CMakeLists.txt", //CMake配置文件,提供CMake構(gòu)建腳本"arguments": "", //傳遞給CMake的可選編譯參數(shù)"abiFilters": [ //用于設(shè)置本機(jī)的ABI編譯環(huán)境"armeabi-v7a","arm64-v8a"],"cppFlags": "" //設(shè)置C++編譯器的可選參數(shù)},},"targets": [ //定義的Target,開發(fā)者可以定制不同的Target,具體請(qǐng)參考定制多目標(biāo)構(gòu)建產(chǎn)物{"name": "default","runtimeOS": "HarmonyOS",},{"name": "ohosTest",} ]
}
oh-package.json5(API Version 9)
應(yīng)用/服務(wù)支持通過(guò)ohpm來(lái)安裝、共享、分發(fā)代碼,管理項(xiàng)目的依賴關(guān)系。oh-package.json5格式遵循標(biāo)準(zhǔn)的ohpm規(guī)范。
工程級(jí)oh-package.json5
工程級(jí)oh-package.json5的示例如下所示:
{"name": "myapplication","version": "1.0.0","description": "Please describe the basic information.","main": "","author": "","license": "","dependencies": {},"devDependencies": {"@ohos/hypium": "1.0.6"}
}
模塊級(jí)oh-package.json5
模塊級(jí)oh-package.json5的示例如下所示:
{"name": "entry","version": "1.0.0","description": "Please describe the basic information.","main": "index.ets","author": "","license": "","dependencies": {},
}
package.json(API Version 8)
應(yīng)用/服務(wù)支持通過(guò)npm來(lái)安裝、共享、分發(fā)代碼,管理項(xiàng)目的依賴關(guān)系。HarmonyOS npm規(guī)范是在標(biāo)準(zhǔn)npm規(guī)范的基礎(chǔ)上,增加了對(duì)HarmonyOS平臺(tái)的拓展。因此,package.json格式遵循標(biāo)準(zhǔn)的npm規(guī)范(具體可查閱npm官方文檔),接下來(lái)主要介紹HarmonyOS npm部分的規(guī)范。
工程級(jí)package.json
工程級(jí)package.json的示例如下所示:
{"name": "myapplication","version": "1.0.0","ohos": {"org": "huawei","buildTool": "hvigor","directoryLevel": "project"},"description": "example description","repository": {},"license": "ISC","dependencies": {"@ohos/hypium": "1.0.5","@ohos/hvigor": "1.4.0","@ohos/hvigor-ohos-plugin": "1.4.0"}
}
HarmonyOS npm相關(guān)字段說(shuō)明如下,其余字段遵循package.json標(biāo)準(zhǔn)規(guī)范。
- ohos閉包:HarmonyOS應(yīng)用/服務(wù)的擴(kuò)展字段,表示在npm標(biāo)準(zhǔn)規(guī)范的基礎(chǔ)上疊加了HarmonyOS npm的內(nèi)容。
- org:標(biāo)識(shí)HarmonyOS npm包的維護(hù)主體。
- buildTool:標(biāo)識(shí)HarmonyOS npm包的構(gòu)建工具是hvigor。
- directoryLevel:標(biāo)識(shí)HarmonyOS npm包是工程的依賴。
- dependencies閉包:設(shè)置工程依賴的npm包及版本,在遵循npm原生的基礎(chǔ)上,可以添加@ohos相關(guān)的依賴,如構(gòu)建插件,HarmonyOS
npm三方共享包等。
模塊級(jí)package.json
模塊級(jí)package.json的示例如下所示:
{"license": "ISC","devDependencies": {"@types/libentry.so": "file:./src/main/cpp/types/libentry"},"name": "entry","ohos": {"org": "huawei","directoryLevel": "module","buildTool": "hvigor"},"description": "example description","repository": {},"version": "1.0.0","dependencies": {}
}
關(guān)于HarmonyOS npm包的相關(guān)字段說(shuō)明如下,其余字段遵循package.json標(biāo)準(zhǔn)規(guī)范。
- ohos閉包:HarmonyOS應(yīng)用/服務(wù)的擴(kuò)展字段,表示在npm標(biāo)準(zhǔn)規(guī)范的基礎(chǔ)上疊加了HarmonyOS npm的內(nèi)容。
- org:標(biāo)識(shí)HarmonyOS npm包的維護(hù)主體。
- directoryLevel:標(biāo)識(shí)HarmonyOS npm包是模塊級(jí)的依賴。
- buildTool:標(biāo)識(shí)HarmonyOS npm包的構(gòu)建工具是hvigor。
- dependencies閉包:設(shè)置模塊依賴的npm包及版本,在遵循npm原生的基礎(chǔ)上,可以添加@ohos相關(guān)的依賴,如HarmonyOS
npm三方共享包等。
build.gradle(API Version 4至7)
工程級(jí)build.gradle
工程級(jí)build.gradle的示例如下所示:
apply plugin: 'com.huawei.ohos.app'
ohos {compileSdkVersion 7signingConfigs {debug {storeFile file('D:\\Sdk\\storeFile') //本地keystorestorePassword 'storePassword' //生成本地keystore時(shí)的storePassword參數(shù)keyAlias 'keyAlias' //生成本地keystore時(shí)的alias參數(shù)keyPassword 'keyPassword' //keyPassword參數(shù),pkcs12格式的keystore采用生成本地keystore時(shí)的keyPassword參數(shù)signAlg 'SHA256withECDSA' //生成本地keystore時(shí)的signAlg參數(shù)profile file('D:\\Sdk\\profile') //導(dǎo)入調(diào)試/發(fā)布profilecertpath file('D:\\Sdk\\certpath') //導(dǎo)入調(diào)試/發(fā)布證書}}
}buildscript {repositories {maven {url 'https://repo.huaweicloud.com/repository/maven/'}maven {url 'https://developer.huawei.com/repo/'}}dependencies {classpath 'com.huawei.ohos:hap:3.1.2.0'classpath 'com.huawei.ohos:decctest:1.2.7.19'}
}allprojects {repositories {maven {url 'https://repo.huaweicloud.com/repository/maven/' //allowInsecureProtocol = true //若maven倉(cāng)是http協(xié)議地址,則需要添加該字段,表示允許使用非安全協(xié)議的http倉(cāng)}maven {url 'https://developer.huawei.com/repo/'}}
}
關(guān)于工程級(jí)build.gradle各字段說(shuō)明如下:
- apply plugin:在工程級(jí)Gradle中引入打包app的插件,不需要修改。
- ohos閉包:工程配置,包括如下配置項(xiàng):
- compileSdkVersion:應(yīng)用/服務(wù)編譯構(gòu)建的目標(biāo)SDK版本。
- signingConfigs:應(yīng)用/服務(wù)的簽名信息,包括調(diào)試簽名信息或發(fā)布簽名信息。
- buildscript閉包:工程編譯構(gòu)建所需要的依賴,包括Maven倉(cāng)地址和依賴的插件版本,例如HarmonyOS編譯構(gòu)建插件和DECC測(cè)試插件。
- allprojects閉包:工程自身所需要的依賴,比如引用第三方庫(kù)的Maven倉(cāng)庫(kù)和依賴包。
模塊級(jí)build.gradle
模塊級(jí)build.gradle的示例如下所示:
apply plugin: 'com.huawei.ohos.hap' //打包hap插件:將entry/feature模塊打包為hap的插件
//apply plugin: 'com.huawei.ohos.library' //打包har插件:將HarmonyOS Library模塊打包為har的插件
//apply plugin: 'java-library' //打包jar插件:將Java Library模塊打包為jar的插件
apply plugin: 'com.huawei.ohos.decctest' //decctest測(cè)試框架插件
ohos {compileSdkVersion 7defaultConfig {compatibleSdkVersion 4}showInServiceCenter truebuildTypes {release {proguardOpt { proguardEnabled true //開啟代碼混淆功能 rulesFiles 'proguard-rules.pro' // 配置混淆規(guī)則文件相對(duì)路徑 consumerRulesFiles 'consumer-rules.pro' // 配置打包混淆規(guī)則文件相對(duì)路徑,僅在HarmonyOS Library模塊中配置}}}packageOptions { exclude "**/*.proto"} //entryModules "entry" // 該Feature模塊關(guān)聯(lián)的Entry模塊// C++工程編譯構(gòu)建代碼設(shè)置externalNativeBuild {path "src/main/cpp/CMakeLists.txt" //CMake配置入口,提供CMake構(gòu)建腳本的相對(duì)路徑arguments "" // 傳遞給CMake的可選編譯參數(shù)abiFilters "arm64-v8a" // 用于設(shè)置本機(jī)的ABI編譯環(huán)境cppFlags "" // 設(shè)置C++編譯器的可選參數(shù)}mergeJsSrc truecompileOptions {annotationEnabled true}
}
dependencies { //entryImplementation project(':entry') //依賴的entry模塊名稱implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])testImplementation 'junit:junit:4.13.1'ohosTestImplementation 'com.huawei.ohos.testkit:runner:2.0.0.200'
}
decc {supportType = ['html', 'xml']
}
關(guān)于模塊級(jí)build.gradle各字段說(shuō)明如下:
- apply plugin:在模塊級(jí)build.gradle中引入打包hap、har、Jar以及decctest的插件。
- ohos閉包:模塊配置,包括如下配置項(xiàng):
- compileSdkVersion:指定HarmonyOS應(yīng)用/服務(wù)編譯時(shí)的SDK版本。
- compatibleSdkVersion:指定HarmonyOS應(yīng)用/服務(wù)兼容的最低SDK版本。
- showInServiceCenter:是否在服務(wù)中心展示,在創(chuàng)建工程時(shí)選擇了“Show in service
center”選項(xiàng)會(huì)生成該字段。 - buildTypes:配置build類型以及每種類型構(gòu)建打包的簽名、壓縮、混淆的配置。
- externalNativeBuild:C/C++編譯構(gòu)建代碼設(shè)置項(xiàng)。
- entryModules:該Feature模塊關(guān)聯(lián)的Entry模塊,僅Feature模塊存在該字段。
- packageOptions:將entry/feature模塊打包為hap時(shí),排除不需要打包到HAP中的文件。
- mergeJsSrc:跨設(shè)備的應(yīng)用/服務(wù)編譯構(gòu)建,是否需要合并JS代碼。Wearable和Lite
Wearable共用一個(gè)工程,如下圖所示:當(dāng)進(jìn)行編譯構(gòu)建時(shí),將wearable/liteWearable目錄下的JS文件與pages目錄(Wearable和Lite
Wearable共用的源碼)下的JS文件進(jìn)行合并打包。
- annotationEnabled:支持?jǐn)?shù)據(jù)庫(kù)注釋。
- dependencies閉包:該模塊所需的依賴項(xiàng)。
作為一名合格一線開發(fā)程序員,大家心里肯定會(huì)有很多疑問(wèn)!鴻蒙系統(tǒng)這么強(qiáng)大~~
為了能夠讓大家跟上互聯(lián)網(wǎng)時(shí)代的技術(shù)迭代,在這里跟大家分享一下我自己近期學(xué)習(xí)心得以及參考網(wǎng)上資料整理出的一份最新版的鴻蒙學(xué)習(xí)提升資料,有需要的小伙伴自行領(lǐng)取,限時(shí)開源,先到先得~~~~
領(lǐng)取以下高清學(xué)習(xí)路線原圖請(qǐng)點(diǎn)擊→《鴻蒙全套學(xué)習(xí)指南》純血鴻蒙HarmonyOS基礎(chǔ)技能學(xué)習(xí)路線圖
領(lǐng)取以上完整高清學(xué)習(xí)路線圖,請(qǐng)點(diǎn)擊→《鴻蒙基礎(chǔ)入門學(xué)習(xí)指南》小編自己整理的部分學(xué)習(xí)資料(包含有高清視頻、開發(fā)文檔、電子書籍等)
以上分享的學(xué)習(xí)路線都適合哪些人跟著學(xué)習(xí)?
-應(yīng)屆生/計(jì)算機(jī)專業(yè)
通過(guò)學(xué)習(xí)鴻蒙新興技術(shù),入行互聯(lián)網(wǎng),未來(lái)高起點(diǎn)就業(yè)。
-0基礎(chǔ)轉(zhuǎn)行
提前布局新方向,抓住風(fēng)口,自我提升,獲得更多就業(yè)機(jī)會(huì)。
-技術(shù)提升/進(jìn)階跳槽
發(fā)展瓶頸期,提升職場(chǎng)競(jìng)爭(zhēng)力,快速掌握鴻蒙技術(shù),享受藍(lán)海紅利。
總結(jié)
如果你覺得這篇內(nèi)容對(duì)你有幫助,我想麻煩大家動(dòng)動(dòng)小手給我:點(diǎn)贊,轉(zhuǎn)發(fā),有你們的 『點(diǎn)贊和評(píng)論』,才是我創(chuàng)造的動(dòng)力。
關(guān)注我,同時(shí)可以期待后續(xù)文章ing,不定期分享原創(chuàng)知識(shí)。
想要獲取更多完整鴻蒙最新VIP學(xué)習(xí)資料,請(qǐng)點(diǎn)擊→《鴻蒙 (Harmony OS)開發(fā)學(xué)習(xí)手冊(cè)》