Xposed 集成 Android 6.0.1環境中,總結


  由於工作需要,需要將xposed集成到android源碼中,生成新的ROM就自帶xposed的功能。

下面大體上說一下步驟和遇到的問題。

1、下載,並編譯android源碼,成功。

2、下載 https://github.com/rovo89/android_art 中,在release中找到當前6.0對應的sdk23版本。替換到android源碼,根目錄下的art文件夾中的內容。

3、下載 https://github.com/rovo89/XposedBridge ,得到Xposed文件夾XposedBridge-art,或者特定版本。將文件夾拷貝到,Android源碼根目錄和art同級。

   3.1、XposedBridge-art源碼中,新建Android.mk用於編譯XposedBridge-art生成對應的XposedBridge.jar .Android.mk文件內容如下:

 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))
Android.mk

  你以為這里就結束了么?錯了,如果你用了。這種方式編譯出來的,jar。那么恭喜你,你后面回遇到一個不知所以的錯誤。

這里應該使用AndroidStudio,打開,XposedBridge項目,然后編譯,

執行gradle里面的。編譯 jar的task.

參考:https://blog.csdn.net/qq_22656473/article/details/103455162

       3.2、Android源碼根目錄,執行命令(多個)

source build/envsetup.sh
lunch 17
mmm XposedBridge-art

       3.3、如果成功,會在out/target/product/angler/system/framework/XposedBridge.jar

       3.4、如果失敗,可能出現錯誤如下:build/core/host_shared_library_internal.mk:44

需要在android源碼根目錄執行命令:

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 

4、下載 https://github.com/rovo89/Xposed 得到Xposed C++的代碼,拷貝到 源碼根目錄下frameworks/base/cmds/xposed中。

5、下載 https://github.com/rovo89/XposedTools 得到 XposedTools工具,用於執行perl腳本,用於編譯xposed,下載保存的位置無特定要求,所以我沒有放到android源碼目錄中。

  5.1、源碼外部,新建文件夾保存,XposedTools內容。

  5.2、根據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
View Code

  5.3、拷貝,生成的XposedBridge.jar到XposedTools中,XposedTools-89/out/java/XposedBridge.jar 沒有的文件夾,請新建。

  5.4、執行命令:./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.5、再次編譯,可以看到生成了,會在XposedTools的out/arm23中,找到我們生成的,正確的,app_process32_xposed,發現android源碼中也被拷貝了一份。。。

注意:

  1、替換art之后,編譯可能還是會遇到CLANG錯誤,需要再次修改配置文件。art/build/Android.common_build.mk,解決CLANG錯誤

  2、版本選擇一樣。

  3、不同產品文件夾不一樣,請根據自己的版本和手機選擇。

資料:參考文獻

Xposed 編譯(二) - 編譯 Android 源碼 https://www.jianshu.com/p/c14eafe5e1d7

Xposed 編譯(二) - 編譯 Android 源碼   https://blog.csdn.net/weixin_33832340/article/details/87512976

編譯Xposed https://www.cnblogs.com/luoyesiqiu/p/9524651.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源碼編譯與集成 https://www.cnblogs.com/coffee520/p/9648243.html

makefile中常見的錯誤—missing separator. Stop.—原因命令行缺少tab鍵 https://blog.csdn.net/dumgeewang/article/details/7709412

還有等等,參考了很多,已經窗口關閉,找不到了。。。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM