Android 使用updatefun 来自动更新

来源:互联网 发布:新网域名转出到阿里云 编辑:程序博客网 时间:2024/06/07 03:01

这几天研究了一下APP的自动更新,并且是那种最方便使用的,找了一下,找到一个框架:updatefun,使用方法比较简单,记录一下使用方法和遇到的问题。

使用步骤

1、使用Android studio 的依赖方式:

dependencies { compile 'cn.hugeterry.updatefun:updatefun:1.6.0' } 

版本好像到1.8.6以上了
2、在APP的的activity 代码的onCreate()中加上以下语句进行初始化(需要注意的是,代码放在 setContentView()方法的后面):

UpdateKey.API_TOKEN = "写上你 fir.im 账号的 API_TOKEN";UpdateKey.APP_ID = "写上 APP 的应用 ID";//下载方式://UpdateKey.DialogOrNotification=UpdateKey.WITH_DIALOG;通过 Dialog 来进行下载//UpdateKey.DialogOrNotification=UpdateKey.WITH_NOTIFITION;通过通知栏来进行下载(默认)UpdateFunGO.init(this);

在onCreate()里写完初始化后,就到onResume()和onStop()加入一下代码:

@Override    protected void onResume() {        super.onResume();        UpdateFunGO.onResume(this);    }  @Override     protected void onStop() {         super.onStop();         UpdateFunGO.onStop(this);     }

代码到处就算写完
4、fir.im 账号的 API_TOKEN和应用ID的来历
首先在fir.im 上注册账号,在fir.im的个人头像下找到API token,生成即可,记录下来,备用。
接着可在fir.im上传自己的未完成APP,获取到应用ID,记录下来备用。

5、获取完API token和 APP id后,就可以在代码用填入,并修改APP的版本号,打包上传到fir.im 。

defaultConfig {        applicationId "com.example."        minSdkVersion 15        targetSdkVersion 22        versionCode 1        versionName "1.3"        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"        resValue "string", "updatefun_provider_file_authorities", "com.example.administrator.myapplication.fileprovider"    }

6、手动更新的方法:
updatefun 的版本需 1.8.4 以上,依赖和加入token,APP id,参考上面
在需要调用更新的时候调用代码:

UpdateFunGO.manualStart(this);

和onResume()和onStop()的代码:

 @Override    protected void onResume() {        super.onResume();        UpdateFunGO.onResume(this);    }  @Override     protected void onStop() {         super.onStop();         UpdateFunGO.onStop(this);     }

7、在使用中遇到的问题
在安卓7.0 中由于新特性,报出: android.os.FileUriExposedException这个异常

android.os.FileUriExposedException: file:///sdcard/UpdateFun/com.example.administrator.myapplication.apk exposed beyond app through Intent.getData()                                                                                           at android.os.StrictMode.onFileUriExposed(StrictMode.java:1799)                                                                                           at android.net.Uri.checkFileUriExposed(Uri.java:2346)                                                                                           at android.content.Intent.prepareToLeaveProcess(Intent.java:8971)                                                                                           at android.content.Intent.prepareToLeaveProcess(Intent.java:8932)                                                                                           at android.app.Instrumentation.execStartActivity(Instrumentation.java:1517)                                                                                           at android.app.Activity.startActivityForResult(Activity.java:4252)                                                                                           at android.support.v4.app.BaseFragmentActivityApi16.startActivityForResult(BaseFragmentActivityApi16.java:54)                                                                                           at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:65)                                                                                           at android.app.Activity.startActivityForResult(Activity.java:4210)                                                                                           at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:711)                                                                                           at android.app.Activity.startActivity(Activity.java:4549)                                                                                           at android.app.Activity.startActivity(Activity.java:4517)                                                                                           at cn.hugeterry.updatefun.module.Download.installApk(Download.java:193)                                                                                           at cn.hugeterry.updatefun.module.Download.access$900(Download.java:36)                                                                                           at cn.hugeterry.updatefun.module.Download$1.handleMessage(Download.java:88)                                                                                           at android.os.Handler.dispatchMessage(Handler.java:102)                                                                                           at android.os.Looper.loop(Looper.java:154)                                                                                           at android.app.ActivityThread.main(ActivityThread.java:6119)                                                                                           at java.lang.reflect.Method.invoke(Native Method)                                                                                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:902)                                                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:792)

折腾了挺久,没搞定,后面就用了个笨方法,将 targetSdkVersion 降低到22,发现可以正常安装,勉为其难的用着吧。