gpt4 book ai didi

android - android ics下的ClassLoading

转载 作者:行者123 更新时间:2023-11-29 21:10:57 26 4
gpt4 key购买 nike

android ICS下的ClassLoader有什么限制吗?

我根本没有得到一个有效的例子,我认为我做的一切都是正确的。

比如这段代码

    DexFile df = new DexFile("/sdcard/test.apk");
ClassLoader cl = context.getClassLoader();
Class clazz = df.loadClass("com/test/LibraryClass", cl);

产生:

E/dalvikvm﹕ Dex cache directory isn't writable: /data/dalvik-cache

I/dalvikvm﹕ Unable to open or create cache for /sdcard/test.apk (/data/dalvik-cache/sdcard@test.apk@classes.dex)

W/System.err﹕ java.io.IOException: unable to open DEX file

位置正确,dex文件存在。

最佳答案

/data/dalivk-cache 权限为775,其他目录不可写。这样做是出于安全目的,因此应用程序不会修改其他应用程序。它适用于解压和解压缩 apk 中包含的 dex 文件的系统安装程序。

对于加载外部类的应用程序,使用DexClassLoader

DexClassLoader loader = new DexClassLoader("/sdcard/com.example.test.apk", getApplicationInfo().dataDir, null, getClassLoader());
try {
loader.loadClass("com.example.test.MainActivity");
} catch (ClassNotFoundException e) {
Log.e(TAG, "Could not load class");
e.printStackTrace();
}

关于android - android ics下的ClassLoading,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22888866/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com