问题标签 [dexclassloader]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
611 浏览

dexclassloader - DexClassloader run error on Android5.0

Before Android5.0,I use DexClassloader load plugin dynamiclly,code like this:</p>

but on Android5.0 here is the error:</p>

04-03 05:51:42.743: W/(1462): Zip: 792 extraneous bytes at the end of the central directory 04-03 05:51:42.749: W/System.err(1462): java.lang.ClassNotFoundException: Didn't find class "com.garfield.item0.system.plugin01.AckGetIntroduce" on path: DexPathList[[zip file "/data/data/com.garfield/cache/1428040302214.jar"],nativeLibraryDirectories=[/vendor/lib, /system/lib]] 04-03 05:51:42.811: W/System.err(1462): Suppressed: java.io.IOException: Failed to open zip archive '/data/data/com.garfield/cache/1428040302214.jar' 04-03 05:51:42.820: W/System.err(1462): at dalvik.system.DexFile.openDexFileNative(Native Method) 04-03 05:51:42.820: W/System.err(1462): at dalvik.system.DexFile.openDexFile(DexFile.java:295) 04-03 05:51:42.821: W/System.err(1462): at dalvik.system.DexFile.(DexFile.java:111) 04-03 05:51:42.821: W/System.err(1462): at dalvik.system.DexFile.loadDex(DexFile.java:151) 04-03 05:51:42.821: W/System.err(1462): at dalvik.system.DexPathList.loadDexFile(DexPathList.java:265)

why?please help me!before 5.0 it is ok。what happened on 5.0!</p>

0 投票
1 回答
224 浏览

android - findViewById 中的奇怪 ClassCastException

我观察到在线抛出一个奇怪的异常:

异常如下所示:

我无法重现它,但它有时会根据日志发生。

该应用程序使用带有 gradle 的官方 multidex 构建。

0 投票
2 回答
1375 浏览

java - 如何使用 DexClassLoader?

我想动态添加 .jar。所以我做了一个演示。但我不知道如何新建 DexClassLoader。我不知道如何添加第一个参数。

我已将动态 .jar 制作为 test.jar(become dex) 以及项目中的新文件夹“text”并将 text.jar 放入其中。

你能帮我看看我做错了什么吗?

0 投票
1 回答
402 浏览

java - 如何将加载的类从外部apk转换为接口类

//接口类->打包到myinterface.jar

//项目1 - 包含myinterface.jar并打包到classA.apk

//主项目 // 包含 myinterface.jar // 从这个类 (ClassB),我想从 classA.apk 文件中的“ClsA”调用“newPoint”方法。

问题 1. 在 (*):我不能将实例后返回的“obj”转换为 MyInterface 类,例如:

-> 错误:

为什么不?而在 com.testing.classa.ClsA 中扩展了 MyInterface ?

问题 2. 在 (**): ERROR,

我认为在主类中有接口myinterface.jar,而在classA.apk 上也有myinterface.jar,它们不能一起交谈。这个问题有什么解决方案?

p/s:我在谷歌上搜索过,有人建议从 .apk 中删除公共库(这里是 myinterface.jar),但是,如果删除它,那将无法构建,因为错误。

帮帮我,谢谢。

0 投票
1 回答
865 浏览

android - 安装我的应用程序后,如何检查第二个 dex 是否加载完成?

我们的应用程序在 apk 中有三个 dex,它们是由 gradle 构建的,具有 multidex 功能。

安装应用程序后,

  1. 主 dex 和第二个 dex 是否由同一个类加载器加载?

  2. 如何检查第二个( classes2.dex )和第三个是否已加载完成?我可以在代码中动态检查它吗?

  3. 或者你们能介绍一下关于Android中类(或dex)加载过程的任何相关文档吗?我不熟悉这个。

谢谢你。

0 投票
1 回答
385 浏览

java - 为什么 Android 类加载器允许从另一个包反射访问包私有类的公共字段?

似乎 Android 应用程序类加载器允许反射性地获取对public static包私有类的字段的引用,即使是从不同的包(与上述类定义的包不同),而例如 Sun JDK 类加载器则不允许。

更具体地说,给定以下类定义:

并将以下代码放在单独的包中:

在 Sun JVM 上执行时,它会IllegalAccessException在最后一行抛出一个:

但是,当在 Android 设备 (5.1 Lollipop FWIW) 上运行时,它会在不抛出的情况下执行,并且creatorFieldRef.get(null)实际上会返回对该CREATOR字段的有效引用。

我的问题是:为什么会这样?它是 Android 类加载器的错误还是功能?(或者,如果适用,我在我的例子中做错了什么?)

0 投票
0 回答
1084 浏览

android - Android:DexClassLoader:无法从 xx 提取+优化 DEX 错误:没有子进程

我使用 DexClassloader 从 /data/data/packagename/ 加载 dex 文件,就像:

它可以在大多数机器和系统上完美运行.......但是今天,一个用户反馈dex文件无法加载,,,这里是重要性错误日志:

手机信息:HTC 9060、Android 4.2.2、HTC Sense 5.0

这是一个奇怪的错误。这是完整的日志:

0 投票
0 回答
267 浏览

android - 关于 DexClassLoader 的问题

大约 2 天前,我发现了 Android 的 DexClassLoader 库。作为一个相当平庸的程序员,我对这个库/类/工具有一些疑问。我主要关注文档的问题:

  1. 它声明,它加载一个外部 .jar 或 .apk 文件。现在让我们假设我的项目如下:

    我现在如何将 fragment1 及其相应的布局提取到 .jar 或 .apk 文件中,我的 DexClassLoader 可以实现这个文件。更重要的是我如何将这些转换成这样的文件。

  2. 我如何实现我的模块(导出的片段)中的所有功能?我猜它是通过一个接口,但我不确定,也没有在网上找到一个很好的例子,因为它看起来好像是一种未被充分利用的功能。

  3. 安静类似于第 2 点,但我如何显示这个片段。如果它是通过接口解决的,那么我真的没有办法调用 getFragmentManager().beginTransaction().add(R.id.smthng,Fragment1).commit();

感谢您对这些问题中的任何一个提供任何形式的回答 :) 如果我还有更多问题,我会更新这篇文章。干杯

雅各布斯

0 投票
1 回答
58 浏览

android - NoSuchMethodException,尽管它在那里

我正在开发一个可以与外部 apk 一起使用的应用程序。为此,我使用 DexClassLoader 将类从外部 apk 加载到classes-Array 中,并使用如下类:

外部apk:

和proguard,以防止未组装未使用的方法:

我已经知道,加载的类没有问题,因为“newInstance”函数可以以完全相同的方式调用,除了稍微调整 cArg-Array 以匹配寻求的方法,如下所示:

进入

当我启动应用程序时,它仍然会抛出一个NoSuchMethodException,当我调用它时m.invoke();,它会被捕获,并且......这不应该发生。我能看到的唯一区别是,它没有getInstance()被使用,但proguard-rule应该阻止它。

帮助表示赞赏

干杯,雅各布斯

0 投票
1 回答
1334 浏览

java - 在 Android 中使用 DexClassLoader 加载多个 .APK 文件作为插件

我正在 Android (5.0+) 中开发一个框架/应用程序,它需要能够在没有用户交互的情况下静默安装其他“插件”/应用程序。

我开始研究 DALVIK/ART DexClassLoader 来实现这个功能。起初它似乎运行良好,我设法加载了第一个插件 .apk(我在 Android Studio 中使用普通的 gradle 构建),它解析了插件类,然后我开始创建一个实例。但是,当代码到达第二个插件时,它无法加载插件类。我认为这与类加载器有关。我得到异常 ClassNotFoundException。有谁熟悉这个问题?

Context 是运行插件管理代码的 Android Service 的上下文。

这是堆栈跟踪