吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 806|回复: 1
收起左侧

[Android 求助] 哪位大佬帮忙看下这段增加类加载器哪错了 loadClass一直找不到类

[复制链接]
fuck_vk 发表于 2022-9-11 17:14
2.png
[Java] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
public class MainActivity extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        addClassLoader(this, "/sdcard/2.dex");
    }
 
    //动态加载dex 文件
    public void addClassLoader(Context context, String DexFilePath) {
        Log.d("测试", "lado: ============成功加载lado");
        File fIleDex = context.getDir("oopt_dex", 0);
        File fileLib = context.getDir("lib_path", 0);
 
        Log.d("测试", "lado: ============开始创建类加载器");
        ClassLoader pathClassLoader= MainActivity.this.getClassLoader();
        ClassLoader boootClassLoader= MainActivity.this.getClassLoader().getParent();
        DexClassLoader dexClassLoader = new DexClassLoader(DexFilePath, fIleDex.getAbsolutePath(), fileLib.getAbsolutePath(), boootClassLoader);
 
        try {
            Field parentField = ClassLoader.class.getDeclaredField("parent");
            parentField.setAccessible(true);
            parentField.set(pathClassLoader,dexClassLoader);
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
         
        Class<?> clazz = null;
        try {
            clazz = dexClassLoader.loadClass("com.playgame.demooo.MainActivity");   //这里直接就异常了
            if (clazz != null) {
                context.startActivity(new Intent(context,clazz));
            }
 
        } catch (ClassNotFoundException  e) {
            e.printStackTrace();
        }
    }
}


XML:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAG"/>
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>

<uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE" tools:ignore="ProtectedPermissions" />

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/Theme.MyApplication">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
   
    <activity android:name="com.playgame.demooo.MainActivity">
    </activity>
    <activity android:name="com.playgame.demooo.testMainActivity">
    </activity>
</application>


dex:
1.png

不知道为什么在clazz = dexClassLoader.loadClass("com.playgame.demooo.MainActivity");
在这条就直接异常了,是不是我哪写错了?

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

shmilyaxy 发表于 2022-9-12 10:06
好像你有两个Activity都是com.playgame.demooo.开头的,要不就拿一个test....的试一下看看行不。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-4-23 01:23

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表