一、生成增量包:
下载并解压文件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中添加权限:
四、在AndroidManifest.xml中添加activity及service:
android:name="com.e6gps.global.ui.E6UpgradeDialogActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> 五、添加资源文件: 将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给"[]"即可。