Xposed не загружает мой модуль, ClassNotFoundException

Я разрабатываю модуль Xposed, как расширение модуля minminHide от FatMinMin. Это также кажется хорошим упражнением для разработчиков:) Проблема в том, что во время загрузки, когда я проверяю журнал xposed, я получаю следующее:

5-04 17:06:44.305 I/Xposed  (581): Loading modules from /data/app/xposed.sudocode.com.sudohide-1/base.apk
05-04 17:06:44.325 I/Xposed  (581):   Loading class xposed.sudocode.com.sudohide.XposedMain
05-04 17:06:44.326 E/Xposed  (581): java.lang.ClassNotFoundException: Didn't find class "xposed.sudocode.com.sudohide.XposedMain" on path: DexPathList[[zip file "/data/app/xposed.sudocode.com.sudohide-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
05-04 17:06:44.326 E/Xposed  (581):     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
05-04 17:06:44.326 E/Xposed  (581):     at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
05-04 17:06:44.326 E/Xposed  (581):     at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
05-04 17:06:44.326 E/Xposed  (581):     at de.robv.android.xposed.XposedBridge.loadModule(XposedBridge.java:497)
05-04 17:06:44.326 E/Xposed  (581):     at de.robv.android.xposed.XposedBridge.loadModules(XposedBridge.java:457)
05-04 17:06:44.326 E/Xposed  (581):     at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:122)
05-04 17:06:44.326 E/Xposed  (581):     Suppressed: java.lang.ClassNotFoundException: Didn't find class "xposed.sudocode.com.sudohide.XposedMain" on path: DexPathList[[zip file "/system/framework/XposedBridge.jar"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
05-04 17:06:44.326 E/Xposed  (581):         at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
05-04 17:06:44.326 E/Xposed  (581):         at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
05-04 17:06:44.326 E/Xposed  (581):         at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
05-04 17:06:44.326 E/Xposed  (581):         ... 4 more
05-04 17:06:44.326 E/Xposed  (581):         Suppressed: java.lang.ClassNotFoundException: xposed.sudocode.com.sudohide.XposedMain
05-04 17:06:44.326 E/Xposed  (581):             at java.lang.Class.classForName(Native Method)
05-04 17:06:44.326 E/Xposed  (581):             at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
05-04 17:06:44.326 E/Xposed  (581):             at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
05-04 17:06:44.326 E/Xposed  (581):             at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
05-04 17:06:44.326 E/Xposed  (581):             ... 5 more
05-04 17:06:44.326 E/Xposed  (581):         Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available

это означает, что Xposed не смог правильно загрузить мой модуль

В файле xposed_init у меня есть следующее:

xposed.sudocode.com.sudohide.XposedMain

Я также добавил xposed bridge api в зависимость:

dependencies {
    provided files('libs/api-82.jar')
    compile 'com.android.support:appcompat-v7:23.3.0'
}

Это начало моего Java-файла класса:

package xposed.sudocode.com.sudohide;


import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.ResolveInfo;
import android.os.Binder;

import java.util.ArrayList;
import java.util.List;

import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.IXposedHookZygoteInit;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XSharedPreferences;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage;

public class XposedMain implements IXposedHookZygoteInit, IXposedHookLoadPackage {

Может ли кто-нибудь предоставить какие-либо советы о том, как действовать, я попытался найти решение, но не смог найти ни одного, и я не нашел ничего в документации xposed

Спасибо!

3 ответа

Просто отключить Instant Run

Файл -> Настройки -> Сборка, выполнение, развертывание -> Мгновенный запуск

В противном случае ваши классы не включаются непосредственно в APK, но загружаются через приложение-заглушку, которое Xposed не могу справиться

Решил вопрос! Проблема заключалась в мгновенном запуске на Android Studio, это было установка приложения в /data/local/tmp/ и xposed не нашел класс на этом пути.

Теперь я помещаю apk на устройство и устанавливаю из хранилища

Попробуйте установить xposed api jar вне libs dir (например, в корень вашего проекта) и исправить файл конфигурации gradle.

В моем случае я забыл добавить папку ресурсов, которая содержала: xposed_init (не имеет расширения)

также содержит:.package.name.XposedClassWhereYouHookedStuff

например: com.example.sampleapp.xposedclass

в каталоге: AppName/app/src/main/assets

и я также отключить мгновенный запуск

Другие вопросы по тегам