Android Honeycomb 上的 DexClassLoader

2024-03-14

我正在开发一个项目,尝试通过加载外部库 Dex类加载器。这在 2.3 中效果很好:

    public class FormularDisplayLoader {
public final static String PATH ="/data/data/at.mSystem.client/files/mSystem_Client_FormularLibrary.jar";
        private DexClassLoader classLoader;

            public FormularDisplayLoader(Context context){
                    this.context = context;
                    this.classLoader = new DexClassLoader("/data/data/at.mSystem.client/
    files/mSystem_Client_FormularLibrary.jar",
                        context.getFilesDir().getAbsolutePath(),
                        null,
                        FormularDisplayLoader.class.getClassLoader());
            }

            public View getDisplay(String className) throws ErrorCodeException{
                    try {
                            Class c = classLoader.loadClass(className);
                            Method m = c.getMethod("getDisplay", Context.class);
                            View ret = (View) m.invoke(c.newInstance(), context);
                            return ret;
                    } catch (Exception e) {
                            e.printStackTrace();
                            throw new
    ErrorCodeException(FormularErrorCode.NO_DISPLAY_AVAILABLE_FOR_FORMULAR);
                    }
            }

    }

不幸的是,当尝试将此应用程序移植到 Honeycomb 时(因为 该应用程序的实际目标是平板电脑)DexClassLoader 抛出一个 例外:

02-23 09:30:58.221: ERROR/dalvikvm(8022): Can't open dex cache '/data/
dalvik-cache/
data@[email protected] /cdn-cgi/l/email-protection@files@[email protected] /cdn-cgi/l/email-protection':
No such file or directory
02-23 09:30:58.221: INFO/dalvikvm(8022): Unable to open or create
cache for /data/data/at.mSystem.client/files/
mSystem_Client_FormularLibrary.jar (/data/dalvik-cache/
data@[email protected] /cdn-cgi/l/email-protection@files@[email protected] /cdn-cgi/l/email-protection)
02-23 09:30:58.231: WARN/System.err(8022):
java.lang.ClassNotFoundException:
at.mSystem.client.formular.contract.ContractListFormularDisplay in
loader dalvik.system.DexClassLoader@40630308
02-23 09:30:58.241: WARN/System.err(8022):     at
dalvik.system.DexClassLoader.findClass(DexClassLoader.java:240)
02-23 09:30:58.241: WARN/System.err(8022):     at
java.lang.ClassLoader.loadClass(ClassLoader.java:548)
02-23 09:30:58.261: WARN/System.err(8022):     at
java.lang.ClassLoader.loadClass(ClassLoader.java:508)
02-23 09:30:58.261: WARN/System.err(8022):     at
at.mSystem.client.system.formularmodule.formular.FormularDisplayLoader.getDisplay(FormularDisplayLoader.java:
35)

DexClassLoader 似乎忽略了第二个参数 (dexOutputDir),作为值 我的示例中的 context.getFilesDir().getAbsolutePath() 是“/data/data/ at.mSystem.client/files”。

您有什么想法如何解决这个问题吗?或者这是某种 蜂窝虫?

Thanks,

Roland


我知道这是一篇旧帖子,但我最近需要在不升级到 Android 3.1 的情况下找到这个问题的答案,所以我想我会分享我的解决方案。

我使用“DexFile”类而不是“DexClassLoader”,因为它允许我传递输出文件,从而解决输出目录被忽略的问题。

这是我的代码:

final File dexClasses = new File("/sdcard/dexcontainer.zip");
DexFile dexFile = DexFile.loadDex(dexClasses.getAbsolutePath(), getFilesDir().getAbsolutePath() + "/outputdexcontainer.dex", 0);

Enumeration<String> classFileNames = dexFile.entries();
while (classFileNames.hasMoreElements())
{
  String className = classFileNames.nextElement();
  dexFile.loadClass(className, classLoader);
}

希望这对某人有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android Honeycomb 上的 DexClassLoader 的相关文章

  • JKS、BKS 和 PKCS12 文件格式

    我正在设置一个无头服务器 该服务器使用用户提供的数据 JS CSS HTML 密钥库 为 Android 构建 Phonegap 混合应用程序 我想进行一些基本的客户端检查 以确保上传的密钥库有效 对于 JKS 文件 我发现可以通过确保提供
  • WifiConfiguration 在 Lollipop 中启用网络

    我正在研究 Wifi 项目 有一个模块可以让用户以编程方式加入 wifi 在 kitkat 及以下版本中它可以成功工作 但在 Lollipop 中它不起作用 这是代码 WifiManager wifiManager WifiManager
  • 关于android Sqlite在多进程情况下的安全性

    在我的应用程序中 存在多个进程 并且在每个进程中 我需要访问同一个SQLite数据库 当然 这意味着超过2个线程 所以我不仅担心SQLite的线程安全性 还担心SQLite的线程安全性 还有过程安全 这种情况的一种解决方案是使用内容提供者
  • 如何设置itemTouchHelper选择性滑动?

    所以我在 recyclerview rv 上实现了这个 itemtouchhelper simple 回调 现在 在这个 rv 中 我根据内容类型将 2 种布局设置为一行 因此 当我在 rv 上设置此 touchhelper 时 它正在这两
  • 应用程序启动时立即隐藏导航栏

    基于以下代码片段 我能够隐藏状态栏当应用程序启动时 但不是导航栏 由后退 主页和任务管理器按钮组成的栏 因为它隐藏了稍后在 MainActivity 的线程完成加载后 这是清单
  • 当应用程序停止使用 Sencha Touch 2.2 和 Phonegap 时,LocalStorage 存储不会保留在 Android 手机上

    这在我的浏览器中工作正常 但是当我在手机上安装该应用程序并使用它时 它看起来很好 直到我强制它停止并重新打开该应用程序 然后我的所有记录都消失了 我正在使用 2 2 和 Phonegap 任何帮助将非常感激 这是我的商店 Ext defin
  • Android,无法从谷歌API获取天气

    以下代码之前运行良好 class RetreiveWeatherTask extends AsyncTask
  • 将文本视图包裹在图像视图周围

    晚上好 我正在尝试将文本包裹在图像视图中 就像这里提出的问题一样 Textview 环绕 View https stackoverflow com questions 3626750 textview wrap around view 在风
  • 在 doInBackground 方法中启动活动

    在下面的代码中 我从互联网下载 json 并希望显示在列表中 如果列表为空 则转到另一个活动 但其他活动未启动 没有错误 但没有启动活动 感谢您的帮助 package ir mohammadi android nightly import
  • Android Activity 和 Service 关系 - 暂停后、停止后

    假设创建了 Activity A 然后 A 启动了一个 Service S 并将其自身绑定到 S S 通知 A 更新 这将导致 A 的状态发生变化 Android 暂停或停止 A 后 A 和 S 会发生什么 例如 暂停 A 是否会自动解除它
  • Droid 3 上的列表视图背景为灰色

    我有一个带有自定义背景的列表框 它在黑色背景的两侧显示一条细白线 在我所有的测试手机 Galaxy Captivate Vibrant Nexus 1 G Tablet Archos 32 Droid 上运行良好 我刚买了一台 Droid
  • 如何通过代码设置Fragment标签?

    我还没有找到类似的东西setTag String tagName 方法中的Fragment班级 唯一的方法是设置Fragment我发现的标签是通过做FragmentTransaction并传递标签名称作为参数 这是显式设置的唯一方法吗Fra
  • Android 连接有时会被拒绝(并非所有时候)

    我编写了一个 WiFi Direct 代码连接并在它们之间创建了一个连接 然后我创建了一个ServerSocket在第一面和一个Socket在客户端并开始在它们之间发送数据 第一次启动应用程序时它工作成功 但是当我关闭应用程序并再次启动它时
  • Android Youtube API 可用吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有适用于 Android 的 YouTube API 吗 如果不是 除了通过网络浏览器之外 如何从 Yo
  • android sqlite 如果不存在则创建表

    创建新表时遇到一点问题 当我使用 CREATE TABLE 命令时 我的新表按应有的方式形成 但是当我退出活动时 应用程序崩溃 并且我在 logcat 中得到一个表已存在 如果我使用 CREATE TABLE IF NOT EXISTS 则
  • Android - 保持用户登录状态

    我正在尝试使用 PHP 和 MySQLi for Android 进行登录 我不明白的是如何保持用户登录状态 我看到一个简单的教程 其中有人使用 SQLite 来保护信息 但我不知道这是否真的安全 如何保存用户信息以保持用户登录状态 谢谢
  • 从 Activity 调用选项卡式片段方法

    我有一项活动由三个片段组成 这些片段使用使用 PagerAdapter 的操作栏选项卡 我想要做的是从主活动访问活动选项卡式片段中的方法 我已经尝试了下面的代码 但这只是将片段返回为空 所以我猜它无法在选项卡中找到它 NPListFragm
  • Android Windows:它们何时以及如何创建?

    我已经阅读了标准的 Windows 相关文档并翻阅了 一堆源代码 试图理解 Android 如何以及何时 窗口已创建 我相信我已经拥抱它并愿意 对其进行验证或更正 据我所知 只有两种方法可以获得 Window 对象的句柄 1 Activit
  • Android 图标与徽标

    The
  • Android VideoView 中纵向视频方向错误

    我在 Android 设备上以肖像方向拍摄新视频 如下所示 Intent intent new Intent android provider MediaStore ACTION VIDEO CAPTURE startActivityFor

随机推荐

  • 将时间字符串快速转换为日期

    我使用 firebase 作为后端并存储一串时间 例如晚上 7 00 我正在尝试将从 Firebase 收到的字符串转换为 NSDate 以便我可以对它进行排序 更改时间等 到目前为止我已经在网上查看并提出了这段代码 dateFormatt
  • C++ 中“Nil”的概念

    您还记得在本科生算法讲座中 了解以下概念非常方便Nil 任何东西都可以分配给它或与之比较 顺便说一句 我从来没有读过计算机科学本科生 在 Python 中我们可以使用None 在斯卡拉有Nothing 如果我理解正确的话 这是一切的子对象
  • 复制 std 向量中仅出现一次的元素的最有效方法是什么?

    我有一个带有如下元素的 std 向量 0 1 2 0 2 1 0 0 188 220 0 1 2 除了暴力 O n 2 算法之外 查找和复制此向量中仅出现一次的元素的最有效方法是什么 在这种情况下 新列表应包含 188 220 Make a
  • 用于自定义产品图像缩略图的挂钩

    我需要有关 woo commerce 的帮助来覆盖购物车产品图像缩略图 我正在创建一个插件 用于在详细信息页面中自定义产品 如果我们 添加到购物车 它将在购物车页面中使用自定义缩略图进行更新 如果有任何钩子可用于覆盖图像 请告诉我 我也花了
  • CUDA 调试 - Windows 工作站上的 VS,Linux 服务器上的 GPU?

    有人有过在工作站上编码时在服务器上调试 CUDA 代码的经验吗 我的笔记本电脑 Thinkpad T400 不支持 CUDA 但我可以访问带有一对运行 Linux 的 NVIDIA GTX 295 卡的服务器 我可以使用 NVidia 的
  • 如何使用 JSON-LD 创建 SiteNavigationElement?

    我正在尝试使用SiteNavigationElement从 Schema org 输入 HTML 是动态生成的 因此我无法对其进行编辑 所以 JSON LD 是我唯一的选择 我想要一个单一的所有导航元素SiteNavigationEleme
  • 警告:无法批量分配受保护的属性

    我收到此错误 警告 无法批量分配受保护的属性 races attributes 当遵循这个http railscasts com episodes 196 nested model form part 1 http railscasts c
  • 如何在 ADB shell 和 Android 应用程序之间来回发送消息?

    过去三天我一直在寻找答案 但尚未找到有效的答案 我正在尝试编写一个可以通过 ADB 使用自定义命令进行控制的 Android 应用程序 无论如何 我可以在应用程序和 ADB shell 之间来回发送字符串吗 预先感谢 并对我的菜鸟问题表示歉
  • 用于在画布上滚动的 Tkinter 鼠标滚轮操作

    我是 Python 新手 在向画布添加鼠标滚动操作时遇到问题 我有一个垂直滚动条 当我手动滚动滚动条或将鼠标悬停在滚动条上并滚动鼠标滚轮时 滚动条工作正常 我的问题是 我希望能够在画布上滚动鼠标滚轮 甚至只是在框架上滚动 只要鼠标悬停在其上
  • 使用 Spring MVC 应用程序(没有 web.xml)部署简单的 HelloWorld 会出现 404 错误

    我是带有注释的 Spring MVC 新手 我之前使用过 Spring MVC XML 配置 当我尝试访问 url 时收到 404 错误http localhost 8080 HelloWorldApp http localhost 808
  • 生成按字母顺序位于其他两个字符串之间的字母字符串的算法?

    我试图解决的一个问题 假设您有两个由小写字母 a 到 z 组成的不同字符串 请在两个字符串之间找到一个字符串 以便始终可以找到更多中间字符串 更多细节 鉴于按字母顺序 a 位于 b 之前 当按照字典排序时 a 和 b 之间存在无限数量的字符
  • 如何使用可达性类来检测有效的互联网连接?

    我是 iOS 开发新手 正在努力让reachability h 类正常工作 这是我的视图控制器代码 void viewWillAppear BOOL animated NSNotificationCenter defaultCenter a
  • 如何在给定的任意年份中获得去年的相同工作日?

    我希望任何一年都能得到去年的同一天 我怎样才能最好地在 R 中做到这一点 例如 给定星期日 2010 01 03 我想获取前一年同一周的星期日 Sunday weekdays as Date 2010 01 03 format Y m d
  • 在 Magento 交易电子邮件中添加密件抄送

    我创建了一个新的电子邮件模板 在 Magento 中运行良好 但我不知道如何将密件抄送地址添加到电子邮件中 您可以在发送电子邮件的代码中添加密件抄送 Mage getModel core email template gt addBcc e
  • 排序 if/else if 语句的最快/正确方法

    在 PHP 中 是否有最快 正确的方法来排序 if else if 语句 出于某种原因 在我看来 我喜欢认为第一个 if 语句应该是预期的 最受欢迎 满足条件 然后是第二个 依此类推 但是 这真的重要吗 如果第二个条件是最流行的选择 是否会
  • 如何按幂 bi 矩阵的降序对列日期进行排序

    我需要按日期降序对矩阵列进行排序 我还有什么选择吗 检查这个图像matrix https i stack imgur com sj9Et png我需要从 1 月 20 日到 1 月 19 日订购 此列已按日期列排序 提前致谢 一种解决方案是
  • Python - 将列表列表分组

    考虑以下简化情况 lol John Polak 5 3 7 9 John Polak 7 9 2 3 Mark Eden 0 3 3 1 Mark Eden 5 1 2 9 什么会是pythonic 和内存 速度高效根据前两个参数将此列表列
  • 如何覆盖自带 .d.ts 的包中的错误类型?

    我正在使用 chalk 处理 JavaScript 项目 并使用 TypeScript 检查该项目checkJs flag JavaScript 代码像这样导入它 const chalk require chalk 不幸的是 粉笔有自己的类
  • RxJS 6 获取 Observable 数组的过滤列表

    在我的 ThreadService 类中 我有一个函数getThreads 给我返回一个Observable
  • Android Honeycomb 上的 DexClassLoader

    我正在开发一个项目 尝试通过加载外部库 Dex类加载器 这在 2 3 中效果很好 public class FormularDisplayLoader public final static String PATH data data at