There is a tools called "dx", this tool can transfer Java Binary Code into Android Dalvik Binary code.

In Android, Java Binary Code cannot be recognized.

1. 首先解决 "How to load a Java class dynamically on android/dalvik?"

  可以使用DexClassLoader类来动态加载外部class。

  DexClassLoader: "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." [Ref2] [Tdo1]

2. 接下来解决 "How to use a Java class  which is loaded dynamically in Android/dalvik?"

  A:采用Java语言本身的Reflection功能。

  B:采用预定于的接口,插件中的EntryClass来实现该接口。

3. 最后解决 "How to use the asset, like image, audio file?"

  


Reference

1. Android App 插件架构的设计

https://enplug.com/blog/loading-classes-dynamically-on-android-particularly-when-you-have-to-use-them-in-a-third-party-framework-like-libgdx

http://stackoverflow.com/questions/3022454/how-to-load-a-java-class-dynamically-on-android-dalvik

2. DexClassLoader

http://developer.android.com/reference/dalvik/system/DexClassLoader.html

3. Custom Class Loading in Dalvik

http://android-developers.blogspot.com/2011/07/custom-class-loading-in-dalvik.html

Ant的使用


Todo

1. 研究dalvik包,来看看dalvik包可以为我们带来什么支持?

dalvik.system

dalvik.bytecode

dalvik.annotation

2. Dive into Android Source

http://android.github.io/

3. Dive Into Ant

Ant的使用,学习

Android.HowToDesignPluginArchitectureInAndroidApp的更多相关文章

  1. 【原】Android热更新开源项目Tinker源码解析系列之三:so热更新

    本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Android热更新开源项目Tinker源码解析系列之二:资源文件热更新 A ...

  2. 配置android sdk 环境

    1:下载adnroid sdk安装包 官方下载地址无法打开,没有vpn,使用下面这个地址下载,地址:http://www.android-studio.org/

  3. Android SwipeRefreshLayout 下拉刷新——Hi_博客 Android App 开发笔记

    以前写下拉刷新 感觉好费劲,要判断ListView是否滚到顶部,还要加载头布局,还要控制 头布局的状态,等等一大堆.感觉麻烦死了.今天学习了SwipeRefreshLayout 的用法,来分享一下,有 ...

  4. Android Studio配置 AndroidAnnotations——Hi_博客 Android App 开发笔记

    以前用Eclicps 用习惯了现在 想学学 用Android Studio 两天的钻研终于 在我电脑上装了一个Android Studio 并完成了AndroidAnnotations 的配置. An ...

  5. Android请求网络共通类——Hi_博客 Android App 开发笔记

    今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...

  6. 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新

    [原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...

  7. 【原】Android热更新开源项目Tinker源码解析系列之二:资源文件热更新

    上一篇文章介绍了Dex文件的热更新流程,本文将会分析Tinker中对资源文件的热更新流程. 同Dex,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方 ...

  8. Android Studio 多个编译环境配置 多渠道打包 APK输出配置

    看完这篇你学到什么: 熟悉gradle的构建配置 熟悉代码构建环境的目录结构,你知道的不仅仅是只有src/main 开发.生成环境等等环境可以任意切换打包 多渠道打包 APK输出文件配置 需求 一般我 ...

  9. JS调用Android、Ios原生控件

    在上一篇博客中已经和大家聊了,关于JS与Android.Ios原生控件之间相互通信的详细代码实现,今天我们一起聊一下JS调用Android.Ios通信的相同点和不同点,以便帮助我们在进行混合式开发时, ...

随机推荐

  1. quartz整合spring框架service层对象注入为null解决方案

    Job实现类代码 package cn.itcast.quartz; import org.quartz.Job; import org.quartz.JobExecutionContext; imp ...

  2. 四,ViewSets和Routers

    概述 在DRF中,允许在一个类中组合一组相关视图的逻辑,称为ViewSets.比如通过通用视图,可以定义列表视图.详情视图等等,但每个视图位于不同的类中,而通过ViewSets则可以将多个视图放在同一 ...

  3. python基础学习Day8 文件的基本操作

    1.文件的基本操作初识 f = open('a.text', 'r', encoding='utf-8')data = f.read()print(data)f.close() 2.读  r  r+b ...

  4. Centos 7升级内核

    检查当前 CentOS 系统内核版本 uname -sr 在 CentOS 7 上启用 ELRepo 仓库 rpm --import https://www.elrepo.org/RPM-GPG-KE ...

  5. linux配置虚拟域名

    linux环境下面配置虚拟主机域名 第一步:在root目录下面(即根目录)ls(查看文件)cd进入etc目录find hosts文件vi hosts 打开hosts文件并进行编辑在打开的文件最下面添加 ...

  6. sql语句where条件判断是否是相同的string时 原来不判断大小写

    SELECT * from api_check where api ="Worker" SELECT * from api_check where api ="worke ...

  7. 调试JS代码的神器

    1.火狐浏览器的 “Web开发者” 可以打断点,实时查看当前值 2.谷歌浏览器的“开发者工具” 可以打断点,实时查看当前值

  8. Django 的认识,题型

    Django 的认识,面试题 链接:https://www.cnblogs.com/chongdongxiaoyu/p/9403399.html 1. 对Django的认识? #1.Django是走大 ...

  9. Postman 测试swagger类接口技巧

    测试情景: 公司的项目接口越来越多,由于开发周期短,时间紧,缺乏接口文档,直接使用swagger记录所有接口信息.那么: 1. 我们如何更快的测试动辄300+数量的接口,如何分组管理和维护这些接口? ...

  10. DMZ原理与应用

    DMZ是英文“demilitarized zone”的缩写,中文名称为“隔离区”,“非军事化区”.它是为了解决安装防火墙后外部网络不能访问内部网络服务器的问题,而设立的一个非安全系统与安全系统之间的缓 ...