福田專業(yè)網(wǎng)站建設公司最新病毒感染什么癥狀
一、動態(tài)庫的編譯
使用的編譯環(huán)境是ubuntu20.04
1、使用vscode配置openharmony sdk交叉編譯環(huán)境
首先下載openharmony的sdk,如native-linux-x64-4.1.7.5-Release.zip
解壓后native目錄下就是交叉編譯用的sdk
- 在要編譯的源代碼目錄下新建.vscode目錄,進入該目錄新建settings.json文件文件內(nèi)容如下,根據(jù)自己的sdk目錄修改cmake的路徑
{
?"cmake.cmakePath":"/home/xxx/native/build-tools/cmake/bin/cmake"
}
2、在vscode中也需要安裝cmake插件
3、在插件中配置交叉編譯器
打開cmake-tools-kits.json文件:
vim .local/share/CMakeTools/cmake-tools-kits.json
這個文件的作用就是:告訴VSCode當前系統(tǒng)中都有哪些編譯器可供使用,一般是CMakeTools插件自動獲取到的,但是CMakeTools插件無法自動獲取到我們的交叉編譯器。
所以我們手動將交叉編譯器添加到cmake-tools-kits.json文件中(必須添加到文件末尾),因為我們使用的是CMake,所以只需將toolchain.cmake文件的路徑配置進去就可以了:
{
????"name": "arm_corss_compiler",
????"toolchainFile": "/home/fhc/myWorkspace/cmake_project/cmake_cross_complie_base/toolchain.cmake"
}
4、Ctrl+Shift+p打開VSCode的指令面板,然后輸入cmake:q,VSCode會根據(jù)輸入自動提示,然后選擇
CMake: Quick Start
5、然后選擇我們自己配置的交叉編譯器
6、編寫cmake文件
cmake_minimum_required(VERSION 3.5.0)
project(TESTLIB VERSION 0.1.0 LANGUAGES C CXX)
set(ROOTDIR ..) #設置變量
set(SRCDIR ${ROOTDIR}/src)??
include_directories(${SRCDIR} ${SRCDIR}/..) #設置頭文件搜索路徑
aux_source_directory(${SRCDIR}/src CPP_SRC)
aux_source_directory(${SRCDIR}/others CPP_SRC) #將目錄下的所有源文件包含變量CPP_SRC
add_library(TESTLIB?SHARED ${CPP_SRC}) #設置庫名稱位TESTLIB 包含的源文件:CPP_SRC
set(LIBRARY_OUTPUT_PATH ${ROOTDIR}/../Lib/linuxLib) #設置庫的導出目錄
target_link_libraries(TESTLIB?PUBLIC ${PROJECT_BINARY_DIR}/../../Lib/linuxLib/libusb_shared.z.so) #設置需要依賴的庫
7、點擊左下腳的build按鈕
二、openharnony應用調(diào)用動態(tài)庫
1、安裝 deveco studio 4.1或5.0,5.0目前編譯的時候不能只編譯32位版本,不知道為什么,如果編譯一個需要在cmake中做條件編譯和依賴。比如:
if(OHOS_ARCH STREQUAL armeabi-v7a)
add_library(entry SHARED napi_init.cpp)
else()
add_library(entry SHARED napi_init_64.cpp)
endif()
2、修改 build-profile.json5 文件中的products目錄,以下是5.0版本的
"products": [{"name": "default","signingConfig": "default","compileSdkVersion": 11,"compatibleSdkVersion": 11,"runtimeOS": "OpenHarmony","buildOption": {"externalNativeOptions": {"abiFilters": ["armeabi-v7a","arm64-v8a"]},"strictMode": {"caseSensitiveCheck": true,}}} ],
3、按官網(wǎng)的教程把so庫和頭文件放入相應的目錄。
4、最后應用打開以后一調(diào)用napi可能會閃退,檢查日志看是否有依賴的庫沒有放到目錄中,可以使用needed by進行關(guān)鍵字篩選。
5、如果打開應用后界面顯示不正常,只有應用圖標,檢查日志看是否有其他問題。可能需要修改動態(tài)庫的源碼,重新編譯動態(tài)庫。
6、如果涉及到一些硬件操作可能會打不開設備,需要修改設備的操作權(quán)限,比如usb設備可以使用下面的指令
chmod?-R 777 /dev/bus/usb/
7、添加日志
在cmake文件中添加hilog的依賴庫
target_link_libraries(entry PUBLIC libace_napi.z.so libhilog_ndk.z.so)
在cpp文件中添加頭文件
#include "hilog/log.h"
日志函數(shù)用法
OH_LOG_Print(LOG_APP,LOG_INFO, LOG_PRINT_DOMAIN,"Init","uvc open fail%{public}d",res);