个人做笔记用
由于每次解决过的错误,过很久后不记得,导致再次遇到又要花很久才能找到解决方案,故此每次解决的问题,或者看到的很好的想法都记录下来,方便自己查阅
release模式下运行报错:
[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: PlatformException(error, Field state_ for o.r not found. Known fields are [private int o.r.h, private static final o.r o.r.i, private static volatile q.a1 o.r.j], null, java.lang.RuntimeException: Field state_ for o.r not found. Known fields are [private int o.r.h, private static final o.r o.r.i, private static volatile q.a1 o.r.j]
E/flutter (23106): at q.v0.n0(Unknown Source:72)
E/flutter (23106): at q.v0.T(Unknown Source:655)
E/flutter (23106): at q.v0.R(Unknown Source:12)
E/flutter (23106): at q.k0.e(Unknown Source:60)
E/flutter (23106): at q.k0.a(Unknown Source:49)
E/flutter (23106): at q.d1.d(Unknown Source:17)
E/flutter (23106): at q.d1.e(Unknown Source:4)
E/flutter (23106): at q.z.A(Unknown Source:4)
E/flutter (23106): at q.z$a.q(Unknown Source:9)
E/flutter (23106): at q.z$a.p(Unknown Source:0)
E/flutter (23106): at o.i.onMethodCall(Unknown Source:800)
E/flutter (23106): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(Unknown Source:17)
E/flutter (23106): at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(Unknown Source:18)
E/flutter (23106): at io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0(Unknown Source:40)
E/flutter (23106): at io.flutter.embedding.engine.dart.DartMessenger.a(Unknown Source:0)
E/flutter (23106): at io.flutter.embedding.engine.dart.a.run(Unknown Source:12)
E/flutter (23106): at android.os.Handler.handleCallback(Handler.java:966)
E/flutter (23106): at android.os.Handler.dispatchMessage(Handler.java:110)
E/flutter (23106): at android.os.Looper.loopOnce(Looper.java:205)
E/flutter (23106): at android.os.Looper.loop(Looper.java:293)
E/flutter (23106): at android.app.ActivityThread.main(ActivityThread.java:9596)
E/flutter (23106): at java.lang.reflect.Method.invoke(Native Method)
E/flutter (23106): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:586)
E/flutter (23106): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1204)
E/flutter (23106): )
E/flutter (23106): #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:653)
E/flutter (23106): #1 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:315)
E/flutter (23106): <asynchronous suspension>
E/flutter (23106): #2 FlutterBluePlus.state (package:flutter_blue_plus/src/flutter_blue_plus.dart:91)
E/flutter (23106): <asynchronous suspension>
E/flutter (23106): #3 Stream.last.<anonymous closure> (dart:async/stream.dart:1605)
E/flutter (23106): <asynchronous suspension>
E/flutter (23106):
解决方法有两种:
- 修改项目下android目录下 build.gradler
修改配置如下:
buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig signingConfigs.release
// minifyEnabled true
shrinkResources false
minifyEnabled false
// useProguard true
// proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
此修改不是特别好
- 通过修改proguard-rules.pro*文件,此文件也是项目下android目录下,修改配置如下:
#Flutter Wrapper
-keep class io.flutter.app.** { *; }
-keep class io.flutter.plugin.** { *; }
-keep class io.flutter.util.** { *; }
-keep class io.flutter.view.** { *; }
-keep class io.flutter.** { *; }
-keep class io.flutter.plugins.** { *; }
-keep class com.boskokg.flutter_blue_plus.** { *; }
最后一行就是解决这次的错误,根据使用的组件报错信息,添加配置信息
升级gitea
- 停止正在运行的容器
docker stop {containerId} //{containerId} 换成实际的容器ID
备份数据这步,正常用不到,只要不是跨太多版本,不会有问题
- 删除容器
docker rm {containerID} //{containerID}换成实际容器ID
这里不删除的话会导致后面启动容器失败
- 拉取最新版本镜像
docker pull gitea/gitea:latest
- 运行最新版的gitea
docker run -e 'USER_UID=1000' -e 'USER_GID=1000' -d --restart always -p "3000:3000" --name gitea_code_server -v /home/gitea/data:/data -v /etc/timezone:/etc/timezone:ro -v /etc/localtime:/etc/localtime:ro gitea/gitea:latest
上面如果不删除容器,名称就会重复,如果不想删的话,可以这里改下名字
注意:如果数据比较重要,还是删除停止容器前先备份一下,步骤如下:
- 找到容器在本机的位置:
docker inspect {containerName}//{containerName} 替换成容器名称
执行上面的指令会出现json结构文本,地址就在Mounts下Source属性里
- 执行复制指令
cp -r /root/.gitea/gitea /root/.gitea/gitea:2023 # 备份并重命名为gitea:2023
升级后发现报错 Unable to render this definition
查看控制台发现返回的内容是byte数组,经过查看github issues需要添加针对byte转换器
解决方法如下
在 ConfigurerAdapter 类文件的 configureMessageConverters 方法里加入
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
// 使用 fastjson 序列化,会导致 @JsonIgnore 失效,可以使用 @JSONField(serialize = false) 替换
FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
List<MediaType> supportMediaTypeList = new ArrayList<>();
supportMediaTypeList.add(MediaType.APPLICATION_JSON);
supportMediaTypeList.add(MediaType.TEXT_PLAIN);
FastJsonConfig config = new FastJsonConfig();
config.setWriterFeatures(JSONWriter.Feature.WriteEnumsUsingName, JSONWriter.Feature.NotWriteRootClassName);
config.setDateFormat("yyyy-MM-dd HH:mm:ss");
converter.setFastJsonConfig(config);
converter.setSupportedMediaTypes(supportMediaTypeList);
converter.setDefaultCharset(StandardCharsets.UTF_8);
converters.add(new ByteArrayHttpMessageConverter());//主要添加这一行
converters.add(converter);
}