Android native 開發總結

2021-09-02 21:23:27 字數 1067 閱讀 7992

android native 開發中的 c++技術總結

1. 編譯時期出現undefined reference to ***.h

cmakelists.txt 中 include_directories 行沒有加入對應.h檔案

2. 編譯時期出現undefined implementation

cmakelists.txt 中 如果函式的實現是通過

target_link_libraries 的方式引入的,則為動態庫函式, 則需要匯出符號表。

target_link_libraries(outlib, inlib1, inlib2)//no lib pre

例如以上行,如果函式的實現是在inlib1中,則需要在函式前面新增:

__attribute__((visibility("default")))

這樣的話,編譯時期就不會出錯。

3. 執行時出現

no implementation found for void com.megvii.humansdk.toolsapi.test

說明是jni函式沒有找到,這個時候需要載入對應的jni庫。

static

標準的新增方法如上所示。

4. android debug native code方法如下圖。

[img]

但是出現如下警告,大概意思是說,編譯時候使用的flag無法支援除錯模式:

native library megviihum-debug-arm64-v8a is using compiler flags which may be debug incompatible:

-flto: combining -flto with -g is currently experimental and expected to produce unexpected results

5. 意思是說使用了-flto標記和 –g 同時使用會導致異常出錯,因此把-flto去掉後再次嘗試。

-g 經過查證,是用來生成除錯資訊的

可以參照如下

也可以參照官方說法

flto 可以參照如下

也可以參照官方**

android native開發環境搭建

解壓ndk檔案,把解壓後的目錄加入系統環境變數。開啟命令控制台,輸入ndk build測試是否安裝成功。以最簡單的helloworld工程為例 新建乙個helloworld目錄,在該目錄下新建乙個資料夾jni。android.mk內容如下 local path call my dir include...

Android native 安全防護之 防劫持

booleansafe antihijackingutil.checkactivity this if safe else 這一套東西 是從誰那弄過來的 我找了好多部落格發現都有 不確定是誰的 public classantihijackingutil public static voidconfi...

mac開發 ios開發

但是,任何乙個作業系統上,只使用開發語言就去開發程式是不行的。還需要有介面庫。尤其是支援object c的介面庫。mac上使用oc開發應用程式,都會使用xcode這個ide,整合開發工具,xcode中整合了gui介面庫。可以直接拖動控制項到介面上。objective c是一門語言,而cocoa 是這...