android 挂载jar包,android – 可以从sdCard上的jar库动态加载Activity类,实际使用它吗?...

我在sdCard上有1个.jar文件(我用dx工具编译一个通常的.jar到dex ..否则

android会在运行时抱怨)

我想要使​​用的课程实际上是一个Activity&通过“使用”我的意思是充气!

A)我注意到,如果我像这样加载类,加载类将具有parrent类的包(其中我运行代码的那个包):示例:jar库中的类的实际包:“com .something“& my-app-package:”com.wonderfull“ – >加载类在”com.wonderfull.com.something“:)) – >重新测试:它保留原始的包,就像在库中一样

B)在“最好”的情况下,我得到这个错误:

Unable to instantiate activity

ComponentInfo{com.appno2/com.appno1.futureLib.LibActivity}:

java.lang.ClassNotFoundException: com.appno1.futureLib.LibActivity in

loader dalvik.system.PathClassLoader[/data/app/com.appno2-1.apk]

C)在清单中,我已经放置了Activity(一个被dinamically加载),如下所示:

活动

机器人:名字= “com.appno1.futureLib.LibActivity”

android:label =“@ string / app_name”>

/活性GT;

所以我重复题目的问题:是否可能dinamically加载一个活动类从jar库sdCard&其实用吗

万一“为什么要这样?” – 只是古玩!

作为一个概念:在用户输入有效许可证之后,下载实际的应用程序代码(以一种某种事物的形式)的可能性

更新:

– 这个ideea与片段一起工作(意思是要导入的类是片段)

当前结论:

– 可以在外部.jar(例如sdCard或从internet..etc下载)中具有:lame java类或甚至android UI相关类.在需要时加载它们.哦,是的,你不能这样做这个活动:( ..甚至不能服务..

Regardin URLClassLoader:这个工作(不涉及DalvikClassLoader – ClassNotFoundException&& obviosly:仍然不能充满这样加载的活动)

File file = new File("/sdcard/myLib.jar");

File tmpDir = getDir("dex", 0);

ClassLoader loader = new URLClassLoader(new URL[]{file.toURI().toURL()}, this.getClass().getClassLoader());

DexClassLoader classloader = new DexClassLoader(file.getAbsolutePath(), tmpDir.getAbsolutePath(), null, loader);

Class classref = (Class) classloader.loadClass("packageInLib.ClassName");

Object myInstance = classref.getConstructor().newInstance();

Or instead of "loadClass"

Class> classref = Class.forName("packageInLib.ClassName", true, dalvikClassLoader);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值