一、生成增量包:
下载并解压文件bsdiff4.3-win32.rar,复制两个版本的APK文件,粘贴在解压后的文件同级目录中,从cmd进入解压文件目录,输入命令生成增量包。
增量包生成命令:bsdiff.exe ../old.apk ../new.apk ../xx.patch
二、导入jar包到Android工程并添加动态库:
导入e6gps-upgrade1.0.1.jar,eventbus-1.0.1.jar,添加动态库libE6Upgrade.so。
三、在AndroidManifest.xml中添加权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET"/>
四、在AndroidManifest.xml中添加activity及service:
<activity
android:name="com.e6gps.global.ui.E6UpgradeDialogActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<service android:name="com.e6gps.global.service.E6UpgradeService" />
五、添加资源文件:
将e6gps-upgrade1.0.1.工程下的res资源文件复制到你自己的项目中,包括drawable,layout,string资源。
六、启动版本检测及版本更新:
E6UpgradeInterface.setUrlExamineUpdate(downloadUrl);
E6UpgradeInterface.init(getApplicationContext());
七、接口调用API:
接口调用方法在E6UpgradeInterface类中。
1、public static void init(Context context)
@param context Application的实例,
备注:如果在activity中启动请调用getApplicationContext()获取。
2、public static void setUrlExamineUpdate(String urlExamineUpdate)
@param urlExamineUpdate 检测是否存在新版本的url
备注:此方法必须调用,且在init(content)方法前调用。
3、public static void setDeltaUpdate(boolean whetherUseDeltaUpdate)
@param whetherUseDeltaUpdate 是否使用增量更新。true为使用增量更新,false为全量更新。
备注:此方法为可选方法,如果调用请在init(content)方法前调用。默认使用全量更新,当服务器存在增量包请使用增量更新。
4、public static void setDebugMode(boolean isShowDebug)
@param isShowDebug 是否打印log调试日志
备注:此方法为可选方法,如果调用请在init(content)方法前调用。增量更新日志的tag为“E6UpgradeCore”。默认不打印log日志。
5、public static void setUpgradeListener(E6UpgradeListener listener)
@params listener 版本检测监听者
备注:此方法为可选方法,如果调用请在init(content)方法前调用。设置版本检测过程的监听者,并产生回调。
eg:E6UpgradeInterface.setUpgradeListener(new E6UpgradeListener() {
@Override
public void onUpgradeResult(int result) {
switch (result) {
case E6UpgradeInterface.HAS_NEW_VERSION: //存在新版本时回调。
Toast.makeText(this, "It has new version.", Toast.LENGTH_SHORT).show();
break;
case E6UpgradeInterface.FAILURE_GET_VERSION: //从服务器获取版本信息失败时回调。
Toast.makeText(mContext, "It has not new version.", Toast.LENGTH_SHORT).show();
break;
case E6UpgradeInterface.NO_NEW_VERSION: //用户使用的版本是最新版本时回调。
Toast.makeText(mContext, "It is latest.",Toast.LENGTH_SHORT).show();
break;
case E6UpgradeInterface.NO_SUPPORT_THIS_VERSION: //用户版本过低,并且放弃更新,执行此回调。可以在此退出应用。
finish();
break;
default:
break;
}
}
});
八、Http数据请求接口文档:
接口名称:AppUpgrade;
调用方式:POST;
输入参数:
versionCode APP当前版本号;
输出参数:
state 接口调用状态,0为成功,1为失败;
latestVersion 最新版本APP版本号;
minVersion 服务器支持的APP最低版本号;
fullUrl 最新版本的APP文件下载地址;
patchUrl 增量更新模式下的增量包下载地址;
patchSize 增量更新模式下的增量包大小;
characters 新版本特性列表,值为JSONArray,
eg:"'characters':[{'character':'消息推送功能'},{'character':'位置服务功能'}]}";
character 新版本特性,值为JSONObject。
备注:全量更新模式下patchUrl和patchSize给空字符串即可。不想提示新版本特性,characters给"[]"即可。