超简单一行代码实现应用双开,仿照微信双开、QQ双开等实现app应用双开,即采用Android插件化开发在免安装情况下加载使用原生app

LoadApp

仿照微信双开、QQ双开等实现app应用双开,即在免安装情况下加载使用原生app,采用仿支付宝加载应用和微信加载小程序的功能特色,实现应用免安装情况下运行。

本项目主要采用插件化开发技术,在一个容器app中,把其它的app以文件流的形式进行加载,利用反射等方法获得相关的程序入口,进行加载和使用。

加载app的方法都封装了需要参数,根据方法名结合自身需要传输的参数即可了解需要使用的方法,只需要一行代码进行调用和实现。

官网地址
其它信息
源码地址

最新版本

版本号:

使用自行替换下面的版本号,以获得最新版本。

使用体验

1、首先下载容器app,也是主app,这个app可以独立运行,也就是普通的app应用程序,需要下载并安装,下载地址:

https://github.com/YouAreOnlyOne/LoadApp/blob/master/source/loadapp.apk。

安装之后,直接运行,但是只有简单的HelloWorld界面,点击“加载APP”也不会有什么反应,不能够跳转到其它的app,会提示“文件是否存在”。

2、下载另一个需要的app,这个app也可以独立安装,也是一个普通的app应用程序,可以安装也可以不安装(实现双开效果需要安装),但是要把安装包(apk文件)放到手机存储的根目录下面,下载地址:

https://github.com/YouAreOnlyOne/LoadApp/blob/master/source/develop.apk 。

此时,重新进入主app,点击“加载APP”,就会把这个这一步下载的app加载进去。实现免安装使用。我们我们加载的这个app也是一个独立app,可以进行安装,安装之后就会达到容器里面加载了这个app,本身这个app又可以安装使用,达到应用双开的效果。

使用方法

这里分别介绍在不同项目环境中,如何引用对该库的依赖。

Android中使用:

方法一:

1.第一步,在项目的build.gradle下配置,注意是项目的build.gradle:

 allprojects {repositories {...maven { url 'https://www.jitpack.io' }}
}

2.第二步,在app的build.gradle下添加如下依赖:

dependencies {...implementation 'com.github.YouAreOnlyOne:LoadApp:版本号'...}

方法二:

1.第一步,下载依赖的包:

https://github.com/YouAreOnlyOne/LoadApp/blob/master/source/standard-release.aar 。

https://github.com/YouAreOnlyOne/LoadApp/blob/master/source/develop-release.aar 。

https://github.com/YouAreOnlyOne/LoadApp/blob/master/source/app-release.aar 。

并放到项目的 libs 目录下面。

2.第二步,在app的build.gradle下添加如下依赖,注意,两个依赖是平级关系:

repositories {flatDir {dirs 'libs'}
}dependencies {...compile(name:'standard-release', ext:'aar')compile(name:'develop-release', ext:'aar')compile(name:'app-release', ext:'aar')...
}

使用示例:

创建容器APP

1、Android环境中随便新建一个普通Android项目(注意添加上面的依赖),在任何一个Activity中,调用下面一行代码即可:

LoadApp.loadApp(this,new File("app文件的路径"));

创建其它APP

1、Android环境中随便新建一个普通Android项目(注意添加上面的依赖),新建一个Activity,这个Activity需要继承框架的BaseActivity,该Activity中的所有的上下文环境的this全部用that代替即可,其它没有任何要求,跟普通app开发完全一样。例如下面简单的demo:

public class MainActivity extends BaseActivity {
@Override
public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);that.findViewById(R.id.textView).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Toast.makeText(that,"点击事件成功!",Toast.LENGTH_LONG).show();Intent intent=new Intent(that,SecondActivity.class);startActivity(intent);}});}
}

2、编译该应用程序,生成apk。把生成的apk放到手机存储卡里面,或者服务器上面。

3、上面容器APP中,可以读取手机存储卡里面的app文件,也可以从服务器先下载到本地,然后再读取。总之只要活得需要加载的APP的文件路径就可以了。

项目用到的权限

在manifest文件中添加访问的权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

使用指南

更新中……

相关介绍

OkHttp 、Retrofit 、Volley 、RxJava、Novate在Android中Web网络请求一行代码解决。

https://blog.csdn.net/u014374009/article/details/82933127

一行代码实现Ftp文件上传、文件下载、文件删除和进度监听的工具类的使用。

https://blog.csdn.net/u014374009/article/details/82944107

一行代码解决AndFix热修复和热跟更新问题,集成了阿里的开源库,修复程序的缺陷bug漏洞和功能页面等.

https://blog.csdn.net/u014374009/article/details/83052178

其它信息

1.项目还有很多不完善的地方,欢迎大家指导。

2.项目持续更新开源,有兴趣加入项目或者跟随项目的伙伴,可以邮件联系!

3.关注或者喜欢或者尝试使用或者感兴趣的伙伴可以,点击 ~ follow、fork、star ~ 。

作者邮箱

ycj52011@outlook.com

超简单一行代码实现应用双开,仿照微信双开、QQ双开等实现app应用双开,即采用Android插件化开发在免安装情况下加载使用原生app相关推荐

  1. Android 插件化开发——宿主APP加载APK插件

    本篇博客说一下我们的宿主APP怎样加载别的APK文件. 首先需要说一些知识点,我们的Java文件要想在Android环境运行,需要将.java文件通过转为class文件,然后为了能在DVM上面运行,再 ...

  2. 【Android 插件化】VirtualApp 接入 ( 安装 APK 插件应用 | 启动插件 APK 应用 | MainActivity 安装启动插件完整代码 )

    文章目录 一.安装 APK 插件应用 二.启动插件 APK 应用 三.MainActivity 完整代码 四.博客源码 一.安装 APK 插件应用 调用 VirtualCore.get().insta ...

  3. Android插件化开发基础之App如何动态加载类

    在 Java 里面,我们可以把一些类放到 .jar 文件里面,然后用 ClassLoader 动态加载.例如: URLClassLoader ucl = URLClassLoader.newInsta ...

  4. Android插件化开发基础之Java动态代理(proxy)机制的简单例子

    一.代码 package com.sangfor.tree;import java.lang.reflect.InvocationHandler; import java.lang.reflect.M ...

  5. Android插件化开发之用DexClassLoader加载未安装的APK资源文件来实现app切换背景皮肤

    第一步.先制做一个有我们需要的图片资源的APK 如下图,这里有个about_log.png,我们需要生成apk文件. 生成的apk文件如果你不到项目的文件夹里面去取apk,想通过命令放到手机里面去可以 ...

  6. Android插件化——加载其他APP页面

    Android插件化--加载其他APP页面 1.分析 2.优点 3.详细过程 3.1 标准化加载接口 3.2待加载的APP-B 3.3 APP-A 主加载工程 3.3.1 加载工具类PlugManag ...

  7. android扫码 超简单零代码

    android扫码 超简单零代码 小序 背景介绍 前期准备 zxing和华为扫码服务对比 开始搬运 结语 小序 这是一篇纯新手教学,本人之前没有任何安卓开发经验(尴尬),本文也不涉及任何代码就可以使用 ...

  8. Android 插件化原理(一),通过dex文件调用插件app代码

    Android插件化原理,从以下三个问题切入: 什么是插件化 如何实现插件类的加载 如何实现插件资源的加载 什么是插件化 插件化技术最初是源于免安装运行APK的想法,这个免安装的APK就可以理解为插件 ...

  9. gradle打成jar包报错 错误: 找不到或无法加载主类 App(已经配置过主类)

    文章目录 将gradle打成jar包(包括依赖) 运行jar包 报错 原因(src自己手动创建的) 解决(添加src目录) 将gradle打成jar包(包括依赖) jar {manifest {att ...

  10. Android 插件化,qihoo360插件方案。集成简单实用方便,兼容性高

    Android 插件化,qihoo360插件方案 目录 Android 插件化,qihoo360插件方案 宿主App插件化: 插件App插件配置: 宿主调用插件App: 新建一个项目,开始配置 宿主插 ...

最新文章

  1. 内核同步机制——互斥量
  2. php自动停止原因,解析mysql自动停止服务解决办法
  3. Redis 与 MQ 的区别
  4. extent static const
  5. 概率论-2.1 随机变量及其分布(重点:右连续的来源)
  6. telnet/ftp/netstat/ping命令詳細介紹
  7. Android运行Socket项目时出现错误 Error: ShouldNotReachHere()
  8. 小米mysql安装教程_小米 SOAR 开源SQL优化工具安装
  9. freemarker【FTL】常见语法大全
  10. MATLAB绘图函数plot详解
  11. 自媒体文章原创度检测,提高文章通过率!
  12. uniapp:微信小程序地图功能
  13. 如何提高测试工作效率
  14. [物联网+云存储]-关于人工智能开关的学习思路
  15. win服务器系统设置休眠时间,win7系统电脑设置休眠时间的操作方法
  16. Apache Pulsar 生态项目 AoP 新增两位中国移动 Maintainer!
  17. 采用Resnet做UC Merced Land Use Dataset数据分类
  18. 如何取得从1970年1月1日0时0分0秒到现在的毫秒数?
  19. python发送短信验证码_python发送短信验证码
  20. 几个高质量无版权图库,还愁找不到配图?

热门文章

  1. 又到一年清明时,又是一年踏春季
  2. Fundamentals Of Computer Graphics (4th Ed)
  3. Go 为什么选择 Gopher 作为吉祥物?
  4. 解决Elasticsearch集群 master_not_discovered_exception 异常
  5. 虚拟机安装win7 64位教程
  6. 冰点还原忘记密码如何修改配置或卸载
  7. 裤子尺码对照表eur40_裤子尺寸对照表,衣服尺寸对照表,服装尺寸对照表 - 尺码对照表...
  8. 获取 IE 浏览器版本以及判断是否开启 cookie
  9. kubernets nodeport 无法访问
  10. python出现syntaxerror_python 报错syntaxerror怎么解决