gn編譯參數
本文旨在指導在Linux(如Ubuntu 20.04和22.04,其他系統可參考)環境下下載和編譯OpenHarmony(OH)代碼,並配置Visual Studio Code(VSCode)以實現Native框架(C++)代碼的智能跳轉,以提升閱讀OH源碼的便捷性。
1. 下載與編譯
從OH官網下載鏈接(gitee.com/openharmony/d...)獲取代碼。進入代碼根目錄後,執行build.sh腳本,例如針對rk3568開發板的編譯命令會包含選項`--gn-flags="--export-compile-commands"`,用於生成compdb資料庫,以備後續使用。
2. VSCode插件與配置
在編譯過程中,安裝VSCode的clangd插件,它與compdb文件配合。記得禁用默認的C/C++插件。接著,使用VSCode通過SSH(Windows和macOS用戶適用)訪問OH源代碼目錄,創建.vscode文件夾,其中包含settings.json。
3.1. 插件安裝與啟用
在settings.json中填寫以下配置:
- clangd.path: 指定OH預構建的clangd路徑。
- --compile-commands-dir: 編譯產生的compdb文件路徑,例如在rk3568上為out/rk3568/compile_commands.json,需根據實際編譯產品找到相應路徑。
- --query-driver: 指定OH預構建的clang編譯器路徑。
3.2. VSCode配置
關閉並重新打開VSCode,當C++文件(如foundation文件夾下的Native C++代碼)打開時,clangd將開始索引,索引完成後即可享受代碼跳轉功能。
② 最簡最全,一文搞定Android WebView編譯+AOSP集成
對於Android開發者來說,Android WebView是不可或缺的內置組件,它提供了一鍵可用的網頁瀏覽功能。然而,WebView作為系統組件,其版本更新受限於系統級別的開發,可能導致HTML5、ES、CSS特性支持不足。本文將詳細介紹如何從Chromium源碼編譯定製WebView,以及如何集成到AOSP系統中。
首先,確保你已經下載並配置好Chromium源碼。編譯時,使用gn命令生成args.gn文件,其中需新增system_webview_package_name選項來設置自定義APK包名,特別注意不同Android版本的WebView包名差異。編譯目標有三種:system_webview_apk(適用於5.0及以上,獨立APK)、monochrome_public_apk(包含WebView和Chrome,適用於自開發系統)和trichrome_webview_apk(適用於Android 10+,採用aab拆分)。
編譯完成後,根據目標選擇對應的APK,如system_webview_apk將生成一個SystemWebview.apk,包內包含WebView DevTools,用於調試。通過修改args.gn文件中的包名,確保與系統預裝WebView的版本一致。如果在非AOSP系統中,可能需要使用adb或其他工具檢查並修改包名。
在編譯過程中,還需注意在系統中卸載預裝的WebView以避免簽名沖突。使用adb腳本進行一鍵卸載,然後將編譯好的APK安裝到設備,可能還需修改WebView提供者以指向新安裝的版本。
對於AOSP集成,雖然預編譯的WebView在AOSP中可用,但建議使用自編譯的最新穩定版。根據目標Android版本選擇合適的Chromium穩定版代碼,並注意兼容性問題。編譯正式發布版本時,需設置is_official_build和proprietary_codecs等選項,同時考慮視頻編解碼的許可證問題。
最後,對於私有簽名、包名修改、系統鏡像集成以及Android框架的修改,都有詳細的步驟和注意事項。編譯WebView並成功集成到AOSP後,可以確保為用戶提供最新、定製化的瀏覽器體驗。