更新SDK接入说明
1.接入说明
1.1 导入SDK
接入 aar 包
dependencies {
compile(name: 'dangbeiupdate-2.1.2-release', ext: 'aar')
}
添加aar包支持
android {
repositories {
flatDir {
dirs 'libs'
}
}
}
或者接入 jar 包
dependencies {
compile files('libs/dangbeiupdate-2.1.2-release.jar')
}
接入jar包时需要将res目录下的资源文件拷贝到本地工程对应目录下。
1.2 SDK所需权限
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
其中
INTERNET
和ACCESS_WIFI_STATE
为必选权限 ;
WRITE_EXTERNAL_STORAGE
为可选权限,填写上后会将apk包下载到 SD卡上 ;
如果必选权限有缺失,会 toast 提示:Missing necessary permissions !
1.3 AndroidManifest配置
<!-- dangbeiUpdate -->
<activity
android:name="com.dangbei.update.view.UpdateDialog"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"/>
<!-- dangbei download service -->
<service android:name="com.dangbei.downloader.core.DownloadService"/>
1.4 调用更新
// 后面的字符串为应用的appkey,由后台生成
Update update = new Update(MainActivity.this, "a72b20061474961418");
// 调用更新
update.startUpdate(false);
调用更新时传入的布尔值,一般传入false;如果传入true,意思是无视跳过此版本,即用户点击了跳过此版本后下次调用依旧会提示更新。
我们会获取 manifest 中的 UMENG_CHANNEL,来区分渠道,如果您的应用没有接入友盟或者您的渠道是在java代码中动态设置的,请在调用更新之前使用
update.setChannel("渠道");
来设置渠道号。
1.5 状态监听
如果您需要知道调用后是否会弹出更新,可以添加监听:
update.setUpdateLisener(new Update.UpdateCallback() {
@Override
public void whetherUpdate(boolean udb) {
if (udb) {
// 提示更新
} else {
// 不提示更新(包括网络错误,后台设置不更新等情况)
}
}
});
安装调用的是系统安装,如果系统不存在自带的安装器,可以添加监听获知:
update.setInstallLinsener(new Update.InstallCallback() {
@Override
public void installSucess() {
// 调起安装
}
@Override
public void installFail() {
// 安装器不存在
}
});
1.6 版本兼容
如果您的targetSdkVersion 大于等于 24 ,在7.0以上的设备上,安装路径的获取会有所变化,需要在Manifest文件中额外添加:
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.dangbei.update.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/db_update_paths" />
</provider>
另外要注意的是 android.permission.WRITE_EXTERNAL_STORAGE 这个权限在 6.0 以上是需要动态获取的。
2.混淆配置
-dontwarn com.dangbei.downloader.**
-keep class com.dangbei.downloader.** {*;}
-dontwarn com.dangbei.update.**
-keep class com.dangbei.update.** {*;}
-keep public class **.R$*{
public static final int *;
}
3.注意
SDK中使用的反射来获取资源文件,所以打包时不要混淆R文件,要确保资源文件打入到apk中,不要被第三方工具删除。
另外要注意 版本兼容。