吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

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

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

[复制链接]
fuck_vk 发表于 2022-9-11 17:14
2.png
[Java] 纯文本查看 复制代码
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, 2024-11-15 17:43

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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