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布局文件属性
  2. [置顶] Android应用程序中加载进度设计
  3. android 系统资源的加载和获取
  4. android从raw里面读取txt文件
  5. android直接找一个文件,部分编译等实用
  6. Android 保存文件路径方法
  7. android从相册中选择报无法加载照片
  8. Android引用百度定位API第三方组件后导致其它.so文件无法正常加

随机推荐

  1. Android系统中自带的图标
  2. ubuntu android 开发环境配置
  3. android 支持宽屏
  4. Android(安卓)之 Spinner用法介绍
  5. Android(安卓)SDKVersion 参数列表
  6. android 支持宽屏
  7. android > 控件 > RadioGroup
  8. android 自定义主题样式
  9. android读写XML
  10. Android从asset中获取drawable