问题标签 [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.
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>
android - findViewById 中的奇怪 ClassCastException
我观察到在线抛出一个奇怪的异常:
异常如下所示:
我无法重现它,但它有时会根据日志发生。
该应用程序使用带有 gradle 的官方 multidex 构建。
java - 如何使用 DexClassLoader?
我想动态添加 .jar。所以我做了一个演示。但我不知道如何新建 DexClassLoader。我不知道如何添加第一个参数。
我已将动态 .jar 制作为 test.jar(become dex) 以及项目中的新文件夹“text”并将 text.jar 放入其中。
你能帮我看看我做错了什么吗?
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),但是,如果删除它,那将无法构建,因为错误。
帮帮我,谢谢。
android - 安装我的应用程序后,如何检查第二个 dex 是否加载完成?
我们的应用程序在 apk 中有三个 dex,它们是由 gradle 构建的,具有 multidex 功能。
安装应用程序后,
主 dex 和第二个 dex 是否由同一个类加载器加载?
如何检查第二个( classes2.dex )和第三个是否已加载完成?我可以在代码中动态检查它吗?
或者你们能介绍一下关于Android中类(或dex)加载过程的任何相关文档吗?我不熟悉这个。
谢谢你。
java - 为什么 Android 类加载器允许从另一个包反射访问包私有类的公共字段?
似乎 Android 应用程序类加载器允许反射性地获取对public static
包私有类的字段的引用,即使是从不同的包(与上述类定义的包不同),而例如 Sun JDK 类加载器则不允许。
更具体地说,给定以下类定义:
并将以下代码放在单独的包中:
在 Sun JVM 上执行时,它会IllegalAccessException
在最后一行抛出一个:
但是,当在 Android 设备 (5.1 Lollipop FWIW) 上运行时,它会在不抛出的情况下执行,并且creatorFieldRef.get(null)
实际上会返回对该CREATOR
字段的有效引用。
我的问题是:为什么会这样?它是 Android 类加载器的错误还是功能?(或者,如果适用,我在我的例子中做错了什么?)
android - Android:DexClassLoader:无法从 xx 提取+优化 DEX 错误:没有子进程
我使用 DexClassloader 从 /data/data/packagename/ 加载 dex 文件,就像:
它可以在大多数机器和系统上完美运行.......但是今天,一个用户反馈dex文件无法加载,,,这里是重要性错误日志:
手机信息:HTC 9060、Android 4.2.2、HTC Sense 5.0
这是一个奇怪的错误。这是完整的日志:
android - 关于 DexClassLoader 的问题
大约 2 天前,我发现了 Android 的 DexClassLoader 库。作为一个相当平庸的程序员,我对这个库/类/工具有一些疑问。我主要关注本文档的问题:
它声明,它加载一个外部 .jar 或 .apk 文件。现在让我们假设我的项目如下:
我现在如何将 fragment1 及其相应的布局提取到 .jar 或 .apk 文件中,我的 DexClassLoader 可以实现这个文件。更重要的是我如何将这些转换成这样的文件。
我如何实现我的模块(导出的片段)中的所有功能?我猜它是通过一个接口,但我不确定,也没有在网上找到一个很好的例子,因为它看起来好像是一种未被充分利用的功能。
- 安静类似于第 2 点,但我如何显示这个片段。如果它是通过接口解决的,那么我真的没有办法调用
getFragmentManager().beginTransaction().add(R.id.smthng,Fragment1).commit();
感谢您对这些问题中的任何一个提供任何形式的回答 :) 如果我还有更多问题,我会更新这篇文章。干杯
雅各布斯
android - NoSuchMethodException,尽管它在那里
我正在开发一个可以与外部 apk 一起使用的应用程序。为此,我使用 DexClassLoader 将类从外部 apk 加载到classes
-Array 中,并使用如下类:
外部apk:
和proguard,以防止未组装未使用的方法:
我已经知道,加载的类没有问题,因为“newInstance”函数可以以完全相同的方式调用,除了稍微调整 cArg-Array 以匹配寻求的方法,如下所示:
进入
当我启动应用程序时,它仍然会抛出一个NoSuchMethodException
,当我调用它时m.invoke();
,它会被捕获,并且......这不应该发生。我能看到的唯一区别是,它没有getInstance()
被使用,但proguard-rule
应该阻止它。
帮助表示赞赏
干杯,雅各布斯
java - 在 Android 中使用 DexClassLoader 加载多个 .APK 文件作为插件
我正在 Android (5.0+) 中开发一个框架/应用程序,它需要能够在没有用户交互的情况下静默安装其他“插件”/应用程序。
我开始研究 DALVIK/ART DexClassLoader 来实现这个功能。起初它似乎运行良好,我设法加载了第一个插件 .apk(我在 Android Studio 中使用普通的 gradle 构建),它解析了插件类,然后我开始创建一个实例。但是,当代码到达第二个插件时,它无法加载插件类。我认为这与类加载器有关。我得到异常 ClassNotFoundException。有谁熟悉这个问题?
Context 是运行插件管理代码的 Android Service 的上下文。
这是堆栈跟踪