Commit a03732f8 authored by Administrator's avatar Administrator

部分适配工作

parent 2dba5670
......@@ -24,7 +24,6 @@ android {
targetSdkVersion 27
versionCode 7
versionName "1.1.5"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
ndk {
abiFilters "armeabi-v7a"//, "arm64-v8a", "x86","arm64-v8a","x86_64"
}
......@@ -44,11 +43,6 @@ android {
buildTypes {
release {
applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = "${project.name}_${variant.flavorName}_v${variant.versionName}.apk"
}
}
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
......@@ -59,20 +53,6 @@ android {
}
}
flavorDimensions "default"
productFlavors {
all { flavor ->
resValue 'string', 'flavor', flavor.name
}
demo {
// 测试渠道
}
plugin {
// 正式发布渠道
dimension "default"
}
}
sourceSets {
main {
......@@ -87,7 +67,7 @@ dependencies {
implementation 'com.squareup.picasso:picasso:2.71828'
implementation 'com.github.sky-wei:xposed-common:1.0.5'
implementation 'com.github.sky-wei:xposed-javax:1.1.6'
compileOnly 'de.robv.android.xposed:api:82'
compileOnly 'com.virjar:ratel-api:1.1.0'
compileOnly 'com.rover12421.AndroidHideApi:android:1.17'
demoImplementation 'org.apache.commons:commons-lang3:3.7'
compileOnly 'org.apache.commons:commons-lang3:3.7'
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.sky.xposed.rimet">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<application
android:name=".App"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:name=".App">
android:allowBackup="true">
<activity android:name=".ui.activity.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="de.robv.android.xposed.category.MODULE_SETTINGS" />
</intent-filter>
</activity>
<activity android:name=".ui.activity.MapActivity"
<activity
android:name=".ui.activity.MapActivity"
android:label="选择位置">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
......@@ -35,21 +38,24 @@
<meta-data
android:name="com.amap.api.v2.apikey"
android:value="949931e653928fc485a30726ed6d7063"/>
<service android:name="com.amap.api.location.APSService" />
android:value="949931e653928fc485a30726ed6d7063" />
<meta-data
android:name="xposedmodule"
android:value="true"/>
android:value="true" />
<meta-data
android:name="xposeddescription"
android:value="钉钉工具"/>
android:value="钉钉工具" />
<meta-data
android:name="for_ratel_apps"
android:value="com.alibaba.android.rimet" />
<meta-data
android:name="xposedminversion"
android:value="54"/>
android:value="54" />
<service android:name="com.amap.api.location.APSService" />
</application>
</manifest>
\ No newline at end of file
......@@ -16,6 +16,7 @@
package com.sky.xposed.rimet;
import android.app.Activity;
import android.app.ActivityThread;
import android.app.Application;
import android.content.Context;
......@@ -33,6 +34,8 @@ import com.sky.xposed.rimet.plugin.interfaces.XPluginManager;
import com.sky.xposed.rimet.plugin.interfaces.XVersionManager;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage;
/**
......@@ -50,6 +53,7 @@ public class Main implements IXposedHookLoadPackage, MethodHook.ThrowableCallbac
final String packageName = lpParam.packageName;
Alog.setDebug(true);
if (!Constant.Rimet.PACKAGE_NAME.equals(packageName)) return;
// 获取版本管理对象
......@@ -67,19 +71,20 @@ public class Main implements IXposedHookLoadPackage, MethodHook.ThrowableCallbac
// 获取支持的版本配置
XConfig config = versionManager.getSupportConfig();
Alog.i("begin of hook application");
XposedUtil
.findMethod(
config.get(M.classz.class_dingtalkbase_multidexsupport_DDApplication),
config.get(M.method.method_dingtalkbase_multidexsupport_DDApplication_onCreate))
.before(param -> {
Alog.i("enter :" + param.method);
Application application = (Application) param.thisObject;
Context context = application.getApplicationContext();
if (TextUtils.equals(
config.get(M.classz.class_rimet_LauncherApplication),
application.getClass().getName())) {
Alog.i("enter pluginManager");
XPluginManager pluginManager = new PluginManager
.Build(context)
.setLoadPackageParam(lpParam)
......@@ -90,5 +95,12 @@ public class Main implements IXposedHookLoadPackage, MethodHook.ThrowableCallbac
pluginManager.handleLoadPackage();
}
});
XposedHelpers.findAndHookMethod(Activity.class, "onResume", new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) {
Alog.i("enter activity:" + param.thisObject.getClass().getName());
}
});
}
}
......@@ -52,6 +52,8 @@ public final class M {
public static final int class_android_user_settings_activity_NewSettingActivity = 0x1f00000C;
public static final int class_wukong_im_base_IMDatabase = 0x1f00000D;
public static final int class_android_user_settings_activity_UserSettingsActivity = 0x1f00000E;
}
public static final class method {
......@@ -91,6 +93,8 @@ public final class M {
public static final int method_wukong_im_message_MessageContentImpl_TextContentImpl_text = 0x2f000011;
public static final int method_wukong_im_message_MessageContentImpl_TextContentImpl_setText = 0x2f000012;
public static final int method_android_user_settings_activity_UserSettingsActivity_onCreate = 0x2f00000C;
}
public static final class field {
......
......@@ -26,6 +26,7 @@ import com.sky.xposed.rimet.data.config.RimetConfig4617;
import com.sky.xposed.rimet.data.config.RimetConfig4618;
import com.sky.xposed.rimet.data.config.RimetConfig4621;
import com.sky.xposed.rimet.data.config.RimetConfig4625;
import com.sky.xposed.rimet.data.config.RimetConfig4731;
import com.sky.xposed.rimet.plugin.interfaces.XConfig;
import com.sky.xposed.rimet.plugin.interfaces.XVersionManager;
......@@ -37,7 +38,7 @@ import java.util.Map;
/**
* Created by sky on 2018/9/24.
*
* <p>
* Hook应用相关版本变量管理类
*/
public class VersionManager implements XVersionManager {
......@@ -51,6 +52,7 @@ public class VersionManager implements XVersionManager {
CONFIG_MAP.put("4.6.20", RimetConfig4618.class);
CONFIG_MAP.put("4.6.21", RimetConfig4621.class);
CONFIG_MAP.put("4.6.25", RimetConfig4625.class);
CONFIG_MAP.put("4.7.31", RimetConfig4731.class);
}
private XConfig mVersionConfig;
......@@ -71,6 +73,7 @@ public class VersionManager implements XVersionManager {
/**
* 获取当前版本名
*
* @return
*/
@Override
......@@ -80,6 +83,7 @@ public class VersionManager implements XVersionManager {
/**
* 获取当前版本号
*
* @return
*/
@Override
......@@ -89,6 +93,7 @@ public class VersionManager implements XVersionManager {
/**
* 判断Hook是否支持当前版本
*
* @return
*/
@Override
......@@ -98,6 +103,7 @@ public class VersionManager implements XVersionManager {
/**
* 获取支持版本的配置信息,如果没有适配到返回Null
*
* @return
*/
@Override
......@@ -115,6 +121,7 @@ public class VersionManager implements XVersionManager {
/**
* 判断Hook是否支持当前版本
*
* @return
*/
public boolean isSupportVersion(String versionName) {
......@@ -123,6 +130,7 @@ public class VersionManager implements XVersionManager {
/**
* 创建指定的配置类
*
* @param vClass
* @return
*/
......
......@@ -21,7 +21,7 @@ import com.sky.xposed.rimet.data.M;
/**
* Created by sky on 2019/1/14.
*/
public class RimetConfig4625 extends RimetConfig {
public class RimetConfig4731 extends RimetConfig {
@Override
public void loadConfig() {
......@@ -29,37 +29,39 @@ public class RimetConfig4625 extends RimetConfig {
/** Class */
add(M.classz.class_rimet_LauncherApplication, "com.alibaba.android.rimet.LauncherApplication");
add(M.classz.class_dingtalkbase_multidexsupport_DDApplication, "com.alibaba.android.dingtalkbase.multidexsupport.DDApplication");
add(M.classz.class_defpackage_MessageDs, "ivh,jbk"); // MessageDs
add(M.classz.class_defpackage_MessageDs, "mlb"); // MessageDs
add(M.classz.class_plugin_webwx_ui_ExtDeviceWXLoginUI, "com.tencent.mm.plugin.webwx.ui.ExtDeviceWXLoginUI");
add(M.classz.class_defpackage_ServiceFactory, "jut,kaw"); // ServiceFactory
add(M.classz.class_defpackage_ServiceFactory, "nio"); // ServiceFactory
add(M.classz.class_android_dingtalk_redpackets_idl_service_RedEnvelopPickIService, "com.alibaba.android.dingtalk.redpackets.idl.service.RedEnvelopPickIService");
add(M.classz.class_defpackage_RedPacketsRpc, "cfe"); // RedPacketsRpc
add(M.classz.class_defpackage_RedPacketsRpc_9, "cfe$9");
add(M.classz.class_defpackage_RedPacketsRpc, "ded"); // RedPacketsRpc
add(M.classz.class_defpackage_RedPacketsRpc_9, "ded$9");
add(M.classz.class_lightapp_runtime_LightAppRuntimeReverseInterfaceImpl, "com.alibaba.lightapp.runtime.LightAppRuntimeReverseInterfaceImpl");
add(M.classz.class_android_dingtalk_redpackets_activities_FestivalRedPacketsPickActivity, "com.alibaba.android.dingtalk.redpackets.activities.FestivalRedPacketsPickActivity");
add(M.classz.class_android_dingtalk_redpackets_activities_PickRedPacketsActivity, "com.alibaba.android.dingtalk.redpackets.activities.PickRedPacketsActivity");
add(M.classz.class_android_user_settings_activity_NewSettingActivity, "com.alibaba.android.user.settings.activity.NewSettingActivity");
add(M.classz.class_wukong_im_base_IMDatabase, "com.alibaba.wukong.im.base.IMDatabase");
add(M.classz.class_android_user_settings_activity_UserSettingsActivity, "com.alibaba.android.user.settings.activity.UserSettingsActivity");
/** Method */
add(M.method.method_dingtalkbase_multidexsupport_DDApplication_onCreate, "onCreate");
add(M.method.method_defpackage_MessageDs_handler, "a,a"); // INSERT,IGNORE,INSERT_FAIL
add(M.method.method_defpackage_MessageDs_handler, "a"); // INSERT,IGNORE,INSERT_FAIL
add(M.method.method_android_dingtalkim_base_model_typeValue, "typeValue");
add(M.method.method_wukong_im_message_MessageImpl_messageContent, "messageContent");
add(M.method.method_wukong_im_message_MessageContentImpl_contents, "contents");
add(M.method.method_defpackage_RedPacketsRpc_newInstance, "a");
add(M.method.method_defpackage_ServiceFactory_getService, "a,a");
add(M.method.method_defpackage_ServiceFactory_getService, "a");
add(M.method.method_android_dingtalk_redpackets_idl_service_RedEnvelopPickIService_pickRedEnvelopCluster, "pickRedEnvelopCluster");
add(M.method.method_lightapp_runtime_LightAppRuntimeReverseInterfaceImpl_initSecurityGuard, "initSecurityGuard");
add(M.method.method_android_dingtalk_redpackets_activities_FestivalRedPacketsPickActivity_initView, "a");
add(M.method.method_android_dingtalk_redpackets_activities_PickRedPacketsActivity_initView, "a");
add(M.method.method_android_user_settings_activity_NewSettingActivity_onCreate, "onCreate");
add(M.method.method_defpackage_MessageDs_recall, "a,a");
add(M.method.method_android_user_settings_activity_NewSettingActivity_onCreate, "onCreate,onCreate");
add(M.method.method_defpackage_MessageDs_recall, "a");
add(M.method.method_wukong_im_conversation_ConversationImpl_latestMessage, "latestMessage");
add(M.method.method_wukong_im_base_IMDatabase_getWritableDatabase, "getWritableDatabase");
add(M.method.method_defpackage_MessageDs_update, "a,a");
add(M.method.method_defpackage_MessageDs_update, "a");
add(M.method.method_wukong_im_message_MessageContentImpl_TextContentImpl_text, "text");
add(M.method.method_wukong_im_message_MessageContentImpl_TextContentImpl_setText, "setText");
add(M.method.method_android_user_settings_activity_UserSettingsActivity_onCreate, "onCreate");
/** Field */
add(M.field.field_android_dingtalkim_base_model_DingtalkMessage_msgDisplayType, "msgDisplayType");
......
......@@ -68,7 +68,7 @@ public class PluginManager implements XPluginManager {
mVersionManager = build.mXVersionManager;
// 调试开关
Alog.setDebug(BuildConfig.DEBUG);
Alog.setDebug(true);
mHandler = new PluginHandler();
ToastUtil.getInstance().init(mContext);
......@@ -99,7 +99,9 @@ public class PluginManager implements XPluginManager {
for (int i = 0; i < mXPlugins.size(); i++) {
// 开始处理
handleLoadPackage(mXPlugins.get(mXPlugins.keyAt(i)));
XPlugin xPlugin = mXPlugins.get(mXPlugins.keyAt(i));
Alog.i("log plugin:" + xPlugin.getInfo().getName());
handleLoadPackage(xPlugin);
}
}
......@@ -151,6 +153,7 @@ public class PluginManager implements XPluginManager {
/**
* 获取所有插件
*
* @return
*/
@Override
......@@ -202,6 +205,7 @@ public class PluginManager implements XPluginManager {
/**
* 开始处理需要Hook的插件
*
* @param xPlugin
*/
private void handleLoadPackage(XPlugin xPlugin) {
......@@ -236,6 +240,7 @@ public class PluginManager implements XPluginManager {
/**
* 添加到插件到列表中
*
* @param xPlugin
*/
private void addPlugin(XPlugin xPlugin) {
......
......@@ -22,7 +22,9 @@ import android.view.View;
import android.view.ViewGroup;
import com.sky.xposed.common.ui.view.SimpleItemView;
import com.sky.xposed.common.util.Alog;
import com.sky.xposed.common.util.ResourceUtil;
import com.sky.xposed.javax.MethodHook;
import com.sky.xposed.rimet.BuildConfig;
import com.sky.xposed.rimet.Constant;
import com.sky.xposed.rimet.data.M;
......@@ -47,29 +49,35 @@ public class SettingsPlugin extends BasePlugin {
@Override
public void onHandleLoadPackage() {
MethodHook.AfterCallback afterCallback = param -> {
Alog.i("进入钉钉用户设置页面..");
final Activity activity = (Activity) param.thisObject;
View view = activity.findViewById(ResourceUtil.getId(activity, getXString(M.res.res_setting_msg_notice)));
ViewGroup viewGroup = (ViewGroup) view.getParent();
final int index = viewGroup.indexOfChild(view);
SimpleItemView viewDing = new SimpleItemView(activity);
viewDing.getNameView().setTextSize(17);
viewDing.setName(Constant.Name.TITLE);
viewDing.setExtend("v" + BuildConfig.VERSION_NAME);
viewDing.setOnClickListener(v -> {
// 打开设置
openSettings(activity);
});
viewGroup.addView(viewDing, index);
};
findMethod(
M.classz.class_android_user_settings_activity_NewSettingActivity,
M.method.method_android_user_settings_activity_NewSettingActivity_onCreate,
Bundle.class)
.after(param -> {
final Activity activity = (Activity) param.thisObject;
View view = activity.findViewById(ResourceUtil.getId(activity, getXString(M.res.res_setting_msg_notice)));
ViewGroup viewGroup = (ViewGroup) view.getParent();
final int index = viewGroup.indexOfChild(view);
SimpleItemView viewDing = new SimpleItemView(activity);
viewDing.getNameView().setTextSize(17);
viewDing.setName(Constant.Name.TITLE);
viewDing.setExtend("v" + BuildConfig.VERSION_NAME);
viewDing.setOnClickListener(v -> {
// 打开设置
openSettings(activity);
});
viewGroup.addView(viewDing, index);
});
.after(afterCallback);
findMethod(
M.classz.class_android_user_settings_activity_UserSettingsActivity,
M.method.method_android_user_settings_activity_UserSettingsActivity_onCreate,
Bundle.class)
.after(afterCallback);
}
@Override
......
......@@ -42,9 +42,10 @@ buildscript {
name "contralSnapshot"
url "https://oss.sonatype.org/content/repositories/snapshots/"
}
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.4.1'
classpath 'com.android.tools.build:gradle:3.5.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment