Android运行未安装apk可以使用Android的DexClassLoader类
这个也可以再Android的官方文档中看到

A class loader that loads classes from .jar and .apk files containing a classes.dex entry. This can be used to execute code not installed as part of an application.

This class loader requires an application-private, writable directory to cache optimized classes. Use Context.getDir(String, int) to create such a directory:

File dexOutputDir = context.getDir("dex", 0);

Do not cache optimized classes on external storage. External storage does not provide access controls necessary to protect your application from code injection attacks.

上面说了,可以加载jar文件和apk文件
还有一句加粗的话,不要把dex文件的目录设置到外部存储设备上,否则可能会引起注入攻击,这个问题困扰了我很久,后来看到官方文档,终于有了答案,所以有了疑问第一时间看官方文档才是最靠谱的
不过最近斯巴达开的,google好难打开。。。你妹的
现在知道了怎么加载apk文件,下来说关键的地方
dex文件其实就是一堆的class文件,怎么调用呢?
反射呗
通过动态加载可以加载任何的java类,包括Activity,但是加载出来的Activity是没有生命周期的,我们可以通过在宿主的APP中,通过反射那七个on什么方法,来模拟出一个生命周期,通过反射吧宿主的activity和Resources传到要启动的Activity中,这样就可以在里面正常使用了
补充:
加载所有的class文件:
生成dexClassLoader后,如果想要加入其它的class,必须知道class类名。
可以通过
DexFile.loadDex(sourcePathName, outputPathName, flags)
这个方法获取到这个dex文件中的所有类名称。
加载进去即可

更多相关文章

  1. android背景选择器selector用法汇总
  2. android 系统资源的加载和获取
  3. Android布局文件属性
  4. Mac系统下Android(安卓)SDK更新以及ADT无法在线下载
  5. linux ,Android基础知识总结
  6. Android多媒体扫描过程(Android(安卓)Media Scanner Prosess)
  7. android sdk Content Loader's has encountered a problem
  8. [置顶] Android应用程序中加载进度设计
  9. NPM 和webpack 的基础使用

随机推荐

  1. Android(安卓)Listview切换动画,扩展到任
  2. android 页面带值跳转
  3. android bitmap保存为文件及读取
  4. 使用Adb shell command直接送key event給
  5. ubuntu12.04 编译 ics android 4.0.4 日
  6. 【Android UI】自定义圆形Loading动画
  7. Android 判断是否是手机或平板。
  8. android 调用mail程序发送邮件
  9. Android Studio集成Library时报错,终极解
  10. 启动系统Camera拍照(Android)