当前位置: 首页 > 工具软件 > UpdateFun > 使用案例 >

Android 使用updatefun 来自动更新

焦博实
2023-12-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,发现可以正常安装,勉为其难的用着吧。

 类似资料: