最近使用Flutter写的小软件要分发了,可是app升级还没有做好,怎么办...
通过我努力的...搜索,遇见了flutter_app_upgrade插件,看了下使用文档,功能满足需求,支持iOS跳转Appstore、Android内部下载.apk和应用市场更新,自带的升级弹窗UI默认还带有下载进度的水波动画,于是便决定使用它来做我这个小应用的Android内部下载更新。
到https://pub.flutter-io.cn/搜索flutter_app_upgrade就能看到教程了,作者写得很详细,但是...我在过程中遇到了两个问题,一个是表述,一个是遗漏信息,下面我做一下补充,希望跟我一样 笨头笨脑,不!是跟我一样单纯可爱的人顺利 偷懒,是顺利完成功能啦😀
重点在此
这是原文的Android配置文件./android/app/src/main/AndroidManifest.xml
的配置代码:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.flutter.laomeng.flutter_upgrade_example">
<application
android:name="io.flutter.app.FlutterApplication"
android:icon="@mipmap/ic_launcher"
android:label="flutter_upgrade_example">
...
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="com.flutter.laomeng.flutter_upgrade_example.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
tools:replace="android:resource"
android:resource="@xml/file_paths" />
</provider>
</application>
</manifest>
问题1:包名的修改
将android:authorities
配置中的.fileprovider
前面的内容替换为你自己的包名
android:authorities="自己应用的包名.fileprovider"
我不会告诉你我在这里直接把.fileprovider
也去掉了而导致编译出错懵了半分钟😓
问题2:xml文件的创建
在android:resource
配置中配置了@xml/file_paths
,配置指向了xml文件夹下的file_paths.xml文件,但是原教程中并没有提及要自己创建和配置,这可把我这种没做过Android原生开发的小可爱扔坑里了😟
所以用到这个包的小可爱们,咱先在./android/app/src/main/res
目录下,新建一个名为xml
的文件夹,然后再新建的目录下新建一个名为file_paths
的xml格式文件,并且在新建的file_paths.xml
中简单配置以下内容:
请Copy
以下xml
配置内容🙂:
<paths>
<external-path
name="external-path"
path="."/>
<external-cache-path
name="external-cache-path"
path="."/>
<external-files-path
name="external-files-path"
path="."/>
<files-path
name="files_path"
path="."/>
<cache-path
name="cache-path"
path="."/>
<root-path
name="name"
path="."/>
</paths>
完成以上两个配置,就可以继续按照原文的教程进行开发了。后台api我没有写,自己传了个.apk在Github上,亲测Android内部下载更新功能是没问题的。
❗❗❗ 这里还要注意一下:用于测试的手机上安装的和用于更新的.apk都要用release
正式版的,如果手机上是通过开发环境安装,会提示 与安装版本签名不一致
而导致无法完成安装。