Android studio 2.0--android增量更新的那些事
用了这么久的AS 2.0预览版本号。4.7日谷歌最终公布了android studio 2.0正式版,小编当日便下载了。玩了一下。感觉第二次build编译明显快了,并且好像并没有又一次部署apk。经过具体的分析以及谷歌官方资料显示,大致得出谷歌应该在android studio2.0中嵌入了增量更新的方法。增量更新这词第一次出现我面前是在好久好久曾经。还记得之前360推荐的一个升级apk的方式省流量升级,该方式就是採用增量更新的方法,对apk进行升级。
差点儿全部的软件都须要更新迭代,所以增量更新可能是一种趋势。先来讲讲增量更新的概念。
所谓的增量更新事实上就是当应用版本号要更新迭代时通常的做法是又一次下载新的版本号去覆盖旧版本号,但这样有个比較明显缺点,太浪费流量了。我们能不能仅仅更新新版本号添加的内容呢。增量更新就能够帮助我们实现这点,我们仅仅需对改变的部分进行升级与更新,节约用户流量。
那么增量更新是怎么做的呢?首先将应用的旧版本号Apk与新版本号Apk做差分,得到更新的部分的补丁.patch文件,获取到补丁文件之后用户下载该补丁在本地对apk以及补丁包进行组合形成一个新的apk文件。这个文件跟你之前的新版本号的apk基本上是一致的。
那我们来看看怎么生成差分文件吧。
下载http://download.csdn.net/detail/qq_29282475/9490983
使用该库生成差分文件,生成步奏请查看资源描写叙述
以下给一个简单代码来实现增量更新吧。
代码界面比較简单就一个button
activity_main
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@android:color/white"> <Button android:id="@+id/patch_update"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/patch_update"/> </LinearLayout>
增量更新主要是放在jni层进行的。
我们调用仅仅需一个增量更新类PatchUpdate
主activity
public class MainActivity extends Activity implements OnClickListener {
private final String SD_PATH = Environment.getExternalStorageDirectory().getAbsolutePath();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.findViewById(R.id.patch_update).setOnClickListener(this);
}
@Override
public void onClick(View v) {
//1.找老的APK包
String oldApkPath = SD_PATH+"/aOld.apk";
File file = new File(Environment.getExternalStorageDirectory(),"aOld.apk");
Log.v("rush_yu", oldApkPath);
if (!file.exists()) {
Toast.makeText(this, "找不到安装包位置", Toast.LENGTH_LONG).show();
return;
}
File patchFile = new File(Environment.getExternalStorageDirectory(),"a.patch");
if (!patchFile.exists()) {
Toast.makeText(this, "请先把patch文件放在SD卡根文件夹", Toast.LENGTH_LONG).show();
return;
}
//2.运行命令打新包
String newFilePath = SD_PATH + "/aNew.apk";
PatchUpdate.bspatch(oldApkPath, newFilePath, SD_PATH + "/a.patch");
//3.安装新包
File newApkFile = new File(newFilePath);
if (newApkFile.exists()) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(newApkFile), "application/vnd.android.package-archive");
startActivity(intent);
} else {
Toast.makeText(this, "新安装包不存在", Toast.LENGTH_LONG).show();
}
}
}
<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px; background-color: rgb(255, 255, 255);">还有详细的增量更新的代码。请查看后面的资源文件jni层。</span>
增量更新源代码地址 http://download.csdn.net/detail/qq_29282475/9491075
,这些是增量更新的一些基础,本文会随着学习程度不断更新。
Android studio 2.0--android增量更新的那些事的更多相关文章
- cordova+Android Studio 1.0+ionic+win7(转)
转自http://blog.csdn.net/fuyunww/article/details/42216125 目录(?)[-] 在项目目录下执行 a创建工程 b添加平台支持 c添加插件在Androi ...
- Android Studio 3.0 新特性
最新Android Studio版本是Android Studio 3.0,本文提供了所有新功能和更改的摘要. 所有这些功能都可以在最新的金丝雀版本中发布,但beta测试版本可能尚未提供. 核心IDE ...
- Android Studio 3.0 下载 使用新功能介绍
谷歌2017发布会更新了挺多内容的,而且也发布了AndroidStudio3.0预览版,一些功能先睹为快.(英语一般,有些翻译不太好) 下载地址 https://developer.android.g ...
- Android Studio 1.0.2项目实战——从一个APP的开发过程认识Android Studio
Android Studio 1.0.1刚刚发布不久,谷歌紧接着发布了Android Studio 1.0.2版本,和1.0.0一样,是一个Bug修复版本.在上一篇Android Studio 1.0 ...
- Android Studio 1.0.1 + Genymotion安卓模拟器打造高效安卓开发环境
我们开发安卓大多是使用Eclipse和安卓SDK中自带的安卓模拟器.当然,Google早就推出了自己的安卓开发环境——Android studio,在不久前,Google发布了Android Stud ...
- [Android] android studio 2.0即时运行功能探秘
即时运行instant Run是android studio 2中,开发人员最关心的特性之一 在google发布studio 2.0之后,马上更新体验了一把,然而发现,并没快多少,说好的即时运行呢? ...
- Windows环境下Android Studio v1.0安装教程
Windows环境下Android Studio v1.0安装教程 准备工具 JDK安装包. 要求:JDK 7以及以上版本. Android Studio安装文件. Windows: exe(包含SD ...
- 告别编译运行 ---- Android Studio 2.0 Preview发布Instant Run功能
以往的Android开发有一个头疼的且拖慢速度的问题,就是你每改一行代码要想看到结果必须要编译运行到手机或者模拟器上,而且需要从头(可能是登录界面)一直点击到你修改的界面为止.开发一个完整的Andro ...
- [Android Pro] 告别编译运行 ---- Android Studio 2.0 Preview发布Instant Run功能
reference to : http://www.cnblogs.com/soaringEveryday/p/4991563.html 以往的Android开发有一个头疼的且拖慢速度的问题,就是你每 ...
随机推荐
- vijos p1876 bfs+map
题意: Xiaodao是一位喜欢参加ACM比赛的孩子. 所谓ACM比赛, 是一种团队比赛. 每一次比赛, 每队需要由恰好三位选手组成. 现在, Xiaodao希望组建一支新的队伍, 在这之前, 他需要 ...
- the elements of computing systems 的读书笔记1
想转职程序猿,还真不是说懂一门语言就够的了,想要继续进步,必须懂其相关实现原理,比如这些底层的构造.最近看的就是这一本计算机入门级的书,但是对我这个纯自学的人来说真是能学到很多. 这本书从最基本的Na ...
- Alpha冲刺(1/10)——追光的人
1.队友信息 队员学号 队员博客 221600219 小墨 https://www.cnblogs.com/hengyumo/ 221600240 真·大能猫 https://www.cnblogs. ...
- LR监控Apache资源
前提本文使用的是lampp环境下自带的Apache服务 步骤1.修改Apache中Httpd.conf文件,添加如下代码:文件位置为:/opt/lampp/etc/httpd.conf,如下图: &l ...
- Git提交空文件夹的技巧
这个只能说是技巧不能说是方法,原理是在每个空文件夹新建一个.gitignore文件,然后提交. 快捷命令: find . -type d -empty -exec touch {}/.gitignor ...
- transform,transition,animation 的混合使用——进阶
今天我们来讲述css3能够做成动画的最小独立单元,并且讲述如何使用这些独立的单元来构成一个‘高大尚’的组合动画. 这是我在网上找的一个案例,修改后的效果图,虽说不是特别的‘高大尚’,但我认为这也跟高大 ...
- datagrid在MVC中的运用02-结合搜索
本文接着上一篇,来体验给datagrid加上搜索功能.主要涉及到: ※ 把一个div与datagrid相关起来 ※ datagrid接收查询参数 ※ 查询参数的封装 效果图: 查询参数封装 分页相关的 ...
- MFC中添加ToolTip提示框
PART 1 MFC 对话框中的 Buttton添加提示 例如我们想在一个对话框中的一个button控件添加tooltip,实现的方法如下: 1. 在该对话框的类中添加一个CToolTipCtrl类型 ...
- log4j.properties打印日志信息(1)
log4j.properties log4j.rootLogger=debug,stdout,logfile ### 把日志信息输出到控制台 ### log4j.appender.stdout=org ...
- C语言函数库
C语言函数库 分类函数目录函数进程函数诊断函数接口子程序输入输出 str字符串操作函数mem操作存贮数组 数学函数 时间日期函数 转换函数 分类函数,所在函数库为ctype.h[top] int is ...