因爲工做須要,須要將xposed集成到android源碼中,生成新的ROM就自帶xposed的功能。html
下面大致上說一下步驟和遇到的問題。java
一、下載,並編譯android源碼,成功。linux
二、下載 https://github.com/rovo89/android_art 中,在release中找到當前6.0對應的sdk23版本。替換到android源碼,根目錄下的art文件夾中的內容。android
三、下載 https://github.com/rovo89/XposedBridge ,獲得Xposed文件夾XposedBridge-art,或者特定版本。將文件夾拷貝到,Android源碼根目錄和art同級。git
3.一、XposedBridge-art源碼中,新建Android.mk用於編譯XposedBridge-art生成對應的XposedBridge.jar .Android.mk文件內容以下:github
1 # Copyright 2007 The Android Open Source Project 2 # 3 LOCAL_PATH:= $(call my-dir) 4 include $(CLEAR_VARS) 5 LOCAL_DEX_PREOPT = false 6 LOCAL_MODULE := XposedBridge 7 8 LOCAL_SRC_FILES := \ 9 $(call all-java-files-under, src) \ 10 $(call all-java-files-under, lib/apache-commons-lang/external) \ 11 $(call all-java-files-under, hiddenapistubs/src) 12 13 include $(BUILD_JAVA_LIBRARY) 14 15 $(LOCAL_INTERMEDIA_TARGETS): PRIVATE_EXTRA_JAR_ARGS := -C "$(LOCAL_PATH)" \ 16 assets -C "#(LOCAL_PATH)" NOTICE.txt 17 18 include $(call all-makefiles-under, $(LOCAL_PATH))
3.二、Android源碼根目錄,執行命令(多個)apache
source build/envsetup.sh lunch 17 mmm XposedBridge-art
3.三、若是成功,會在out/target/product/angler/system/framework/XposedBridge.jarubuntu
3.四、若是失敗,可能出現錯誤以下:build/core/host_shared_library_internal.mk:44api
須要在android源碼根目錄執行命令:app
cp /usr/bin/ld.gold prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.6/x86_64-linux/bin/ld make update-api
四、下載 https://github.com/rovo89/Xposed 獲得Xposed C++的代碼,拷貝到 源碼根目錄下frameworks/base/cmds/xposed中。
五、下載 https://github.com/rovo89/XposedTools 獲得 XposedTools工具,用於執行perl腳本,用於編譯xposed,下載保存的位置無特定要求,因此我沒有放到android源碼目錄中。
5.一、源碼外部,新建文件夾保存,XposedTools內容。
5.二、根據XposedTools源碼中的build.conf.sample新建一個文件build.conf。編輯內容,以下:
[General] # 註釋,可刪除:指定,輸出編譯結果目錄 outdir = /var/android_source/xposed/XposedTools-89/out [Build] # 版本無所謂 version = 1(custom build by author ) makeflags = -j16 [AospDir] # Android源碼根目錄 23 = /var/android_source/android6.0.1
5.三、拷貝,生成的XposedBridge.jar到XposedTools中,XposedTools-89/out/java/XposedBridge.jar 沒有的文件夾,請新建。
5.四、執行命令:./build.pl -t arm:23 可能會缺乏環境,就須要安裝perl環境了。
先執行,三條命令以下,
apt-cache search Config::IniFiles libconfig-inifiles-perl - Read .ini-style configuration files sudo apt install libconfig-inifiles-perl
Perl環境需求,執行命令,1,2,3
perl -MCPAN -e 'install Config::IniFiles' perl -MCPAN -e 'install File::Tail' perl -MCPAN -e 'install File::ReadBackwards'
5.五、再次編譯,能夠看到生成了,會在XposedTools的out/arm23中,找到咱們生成的,正確的,app_process32_xposed,發現android源碼中也被拷貝了一份。。。
注意:
一、替換art以後,編譯可能仍是會遇到CLANG錯誤,須要再次修改配置文件。art/build/Android.common_build.mk,解決CLANG錯誤
二、版本選擇同樣。
三、不一樣產品文件夾不同,請根據本身的版本和手機選擇。
資料:參考文獻
Xposed 編譯(二) - 編譯 Android 源碼 https://www.jianshu.com/p/c14eafe5e1d7
Xposed 編譯(二) - 編譯 Android 源碼 https://blog.csdn.net/weixin_33832340/article/details/87512976
編譯Xposed http://www.javashuo.com/article/p-veprvhet-dg.html
xposed源碼編譯與集成 https://www.jianshu.com/p/6471bab49cb1
xposed源碼編譯&安裝--第2步編譯XposedBridge https://juejin.im/post/5be3afeae51d4535b07d0f4e // 朋友的文章,重點推薦,頗有幫助。
ubuntu16.04 下android源碼編譯以及環境配置(含xposed)--交接筆記 https://blog.csdn.net/weixin_34392906/article/details/87531704
xposed源碼編譯與集成 https://blog.csdn.net/weixin_33726943/article/details/87195857
xposed源碼編譯與集成 http://www.javashuo.com/article/p-fszkgpij-eh.html
makefile中常見的錯誤—missing separator. Stop.—緣由命令行缺乏tab鍵 https://blog.csdn.net/dumgeewang/article/details/7709412
還有等等,參考了不少,已經窗口關閉,找不到了。。。