中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

怎么開發(fā)入門Xposed插件

本篇文章為大家展示了怎么開發(fā)入門Xposed插件,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

成都創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營銷推廣、網(wǎng)站重做改版、農(nóng)安網(wǎng)站定制設計、自適應品牌網(wǎng)站建設、H5開發(fā)、商城網(wǎng)站定制開發(fā)、集團公司官網(wǎng)建設、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應式網(wǎng)頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為農(nóng)安等各大城市提供網(wǎng)站開發(fā)制作服務。

前言

Xposed的用處不必言說,能hook任意java寫的代碼,修改替換apk內(nèi)部的資源文件。

至于如何開發(fā)一個XPosed的插件,官方給出的答案如下:

https://github.com/rovo89/XposedBridge/wiki/Development-tutorial

看完這篇文章,基本能寫出一個最簡單的demo。

現(xiàn)在先講講這個最簡單的demo怎么寫

1.先新建一個android project(推薦用android studio)

這個project不需要任何activity,相關(guān)的組件引用也可以刪光,這樣編譯后的apk就很小了。

2.修改項目的build.gradle

追加2個配置

repositories {jcenter();}

dependencies {provided ‘de.robv.android.xposed:api:82'}

3.修改AndroidManifest.xml 讓xposed能識別這個插件

正常情況下,xposed是無法識別我們的應用是不是xposed插件的,我們必須在manifest上打上一個標簽來聲明自己。官方給的例子如下

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="de.robv.android.xposed.mods.tutorial" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="15" /> <application  android:icon="@drawable/ic_launcher"  android:label="@string/app_name" >  <meta-data   android:name="xposedmodule"   android:value="true" />  <meta-data   android:name="xposeddescription"   android:value="Easy example which makes the status bar clock red and adds a smiley" />  <meta-data   android:name="xposedminversion"   android:value="53" /> </application></manifest>

簡單的講,就是application配置段內(nèi)添加如下3個屬性就好了

<meta-data   android:name="xposedmodule"   android:value="true" />  <meta-data   android:name="xposeddescription"   android:value="Easy example which makes the status bar clock red and adds a smiley" />  <meta-data   android:name="xposedminversion"   android:value="53" />

4.實現(xiàn)xposed的接口

空白的class如下

package cn.coderstory.xposeddemo;public class Demo {}

如果我們想要這個類有hook各種代碼的能力,我們需要讓這個類實現(xiàn)一些xposed框架提供的接口。

具體實現(xiàn)什么接口,需要看我們具體的需求。

常見的額接口如下

IXposedHookZygoteInit, IXposedHookLoadPackage, IXposedHookInitPackageResources

IXposedHookZygoteInit接口實現(xiàn)了ZygoteInit階段的hook能力,用于在Zygote進程啟動之前執(zhí)行相關(guān)代碼,framework里的東西一般再這里改。

IXposedHookLoadPackage接口實現(xiàn)了加載app階段的hook能力,用于hook app的代碼

IXposedHookInitPackageResources接口實現(xiàn)了加載app資源時的hook能力,用于修改app的一些資源,比如布局文件什么的。

5.寫具體的代碼邏輯

現(xiàn)在我們寫一個功能,比如隱藏MIUI下拉菜單里面的搜索框

參考源碼

package cn.coderstory.xposeddemo;import de.robv.android.xposed.IXposedHookInitPackageResources;import de.robv.android.xposed.callbacks.XC_InitPackageResources;/** * Created by cc on 2017/1/3. * 隱藏MIUI下拉菜單搜索框 *///IXposedHookInitPackageResources接口實現(xiàn)修改資源app的資源文件public class Demo implements IXposedHookInitPackageResources{ @Override public void handleInitPackageResources(XC_InitPackageResources.InitPackageResourcesParam resparam) { //如果當前處理的是systemui if (resparam.packageName.equals("com.android.systemui")) {  //調(diào)用setReplacement方法替換名為config_show_statusbar_search的變量值為false  resparam.res.setReplacement(resparam.packageName, "bool", "config_show_statusbar_search", false); } }}

這樣,功能就寫好了。

6.創(chuàng)建和編輯xposed_init配置文件

接下來我們需要再項目里新建一個名為assets的目錄,然后在目錄里新建一個名為xposed_init的文件,文本類型的。這個文件主要記錄了app里所有實現(xiàn)xposed功能的類,在開機的時候,xposed會依次加載這些類。

新建assets目錄

新建xposed_init文件,類型選擇Text

xposed_init里寫當前類的路徑 如果存在多個類,那么每行寫一個,多個寫多行

7.編譯安裝

編譯的時候需要關(guān)閉android studio的instant run 功能。

手機上安裝后 需要在xposed install上勾選啟用模塊并重啟。

上述內(nèi)容就是怎么開發(fā)入門Xposed插件,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)站名稱:怎么開發(fā)入門Xposed插件
標題路徑:http://www.rwnh.cn/article28/psjdjp.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、企業(yè)網(wǎng)站制作、網(wǎng)頁設計公司、網(wǎng)站設計、網(wǎng)站制作動態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設
金坛市| 鄂州市| 叶城县| 彰武县| 清原| 松桃| 信宜市| 沈阳市| 棋牌| 巍山| 越西县| 闽侯县| 安新县| 沾益县| 怀仁县| 松阳县| 潢川县| 岑溪市| 海门市| 青河县| 辉县市| 沛县| 兴业县| 普兰店市| 托克逊县| 固镇县| 姜堰市| 温宿县| 沁水县| 施秉县| 襄汾县| 分宜县| 汉川市| 湘阴县| 平凉市| 浦东新区| 天镇县| 会泽县| 旌德县| 临武县| 台南县|