- 博客(187)
- 资源 (4)
- 收藏
- 关注
原创 flutter web 路由问题
此时不会返回到上一个flutter页面,而是跳转到了首页。因为flutter应用已经关闭了,再次进来就会重启应用了,所以就会是首页。记录上次非空Path的链接到 localStorage 中,下次进来如果是首页或者path为 / , 则进入上次的链接。解决方案:其他页面在使用Get.back 返回之前调用一下 history.back.这样就不会出现back forward 返回到首页的问题,但是又回出现新的问题,flutte 项目中开发网页暴露出来供外部的 网页调用,
2025-01-07 17:17:23
605
原创 Flutter Web 中使用 img 标签
因为想要在微信中使用 Flutter Web 实现 长按扫码的功能,但是 flutter web并不是 <img> 标签 ,微信无法识别二维码。所以需要使用 ImageElement 代替 flutter Image 进行实现。
2025-01-07 15:50:50
255
原创 【已解决】ADB failed to connect to ‘xxx.xxx.xx.xx:5555‘: No route to host
此时可以拔掉数据线,正常情况下是能连接上的。经过重启ADB、电脑、设备 都无效。
2024-12-03 11:57:09
1118
原创 Android 常见的缩写名词
与ROM不同,RAM的内容可以随时读写,但在设备断电后,RAM中的数据会丢失。:Application Binary Interface 的缩写,应用程序二进制接口,是一个定义了应用程序和操作系统之间,或不同软件组件之间如何交互的规范。在Android开发中,存在许多常见的缩写名词,这些缩写不仅简化了术语的表达,还提高了开发过程中的沟通效率。(Window Manager Service)作为窗口管理器服务,它主要负责管理Android设备上的窗口视图,并控制应用程序的界面和正确的显示和输入。
2024-08-14 16:29:00
972
原创 自定义View和自定义ViewGroup的区别
自定义View和自定义ViewGroup在Android开发中各有其独特的作用和优势。自定义View侧重于实现个性化的绘制效果和交互逻辑,而自定义ViewGroup则侧重于管理子视图的布局和绘制逻辑。开发者可以根据具体的需求和场景选择使用自定义View或自定义ViewGroup来创建满足要求的界面元素。
2024-07-12 10:06:07
608
原创 View 面试常见问题
ViewRootImpl是Android系统中的一个重要类,它用于管理视图层级结构的根节点,是View与WindowManager之间联系的桥梁。
2024-07-12 10:03:41
669
原创 startActivity 流程
在 Android 系统中,startActivity 方法是 Android 应用中用于启动另一个 Activity 的关键方法。一旦 Activity 的启动配置完成,AMS 会通知 WindowManager 来准备显示新的 Activity。在 Activity 显示给用户之前,系统会按照 Activity 的生命周期回调方法(如 onCreate(), onStart(),在 Activity 类中,startActivity 方法实际上是一个封装方法,它最终会调用 Activity 的。
2024-07-12 10:02:37
371
原创 setContentView 流程
如果是使用 AppCompatActivity, 还会多一步设置 mSubDecor。它是在DecorView 上又加了一层,主要用于设置主题。此时UI绘制流程基本结束,页面也展示出来了。
2024-07-12 10:01:49
547
原创 onCreate和onResume为什么不能直接获取宽高
这里要结合Handler的消息机制,我们post到Handler中的消息,并不是立刻执行,不要认为我们是先dispatchAttachedToWindow的,后执行的测量和绘制,就没办法拿到宽高。实则不是,我们只是将Runnable放到了handler的消息队列,然后继续执行后面的内容,也就是绘制流程,结束后,下一个主线程任务才会去取Handler中的消息,并执行。,执行队列里面的任务, 就可以获取view的宽高了。会把任务添加到队列中,在当绘制完成之后会执行。,创建了各个控件的对象;
2024-07-12 10:00:25
428
原创 Activity 、Window、PhoneWindow、View、ViewRootImpl 之间的关系
在Android系统中,ActivityWindowView这几个组件扮演着至关重要的角色,它们之间有着紧密的联系和明确的分工。
2024-07-12 09:59:07
501
原创 解决 kex_exchange_identification 报错
在 ~/.ssh/config (没有就新建一个)文件中添加下面的配置即可,之后就可以正常操作了。GIT Clone 报错。
2024-06-03 09:12:23
2691
原创 Flutter Android 热修复方案(3.22.0)
本文基于Flutter 3.22.0 实现Flutter 在 Android 的Release编译产物为 libapp.so,我们只需要把它换成我们要修复的so即可。
2024-05-30 11:02:24
958
原创 切换Flutter版本后运行 Android 报错
flutter 版本从 3.22.0 切换到 3.19.6 后,clean get 之后运行Android 后,报错。
2024-05-28 09:32:48
730
原创 Build Dart SDK 遇到的问题
不然克隆不下来的,尽量不要使用别人开源的 depot_tools 因为使用的时候还是会版本升级, 还是要翻墙。这个时候首先检查网络,如果网络连接和翻墙都是正常的,可能是网络不稳定造成的。这个错误时说明没配置好翻墙,继续检查下看是哪里出现了问题。执行 proxy_test 测试是否可以访问成功。下载 depot_tools 需要科学上网。我也是尝试了两天跳过各种坑才解决的。这个上网还算稳定,可以考虑下。把上面的配置移除掉就好了。然后执行 proxy。
2024-05-22 17:06:39
319
原创 ANDROID OLLVM 混淆配置
其实是存在的,为了解决只好打开。当我打开对应的文件夹,发现。这时就可以进行打包测试了,编译过程中我的报了错误。,然后再编译就好了。
2024-05-20 18:45:51
690
原创 React Native Hermes 反编译
对于很多应用来说,启用 Hermes 引擎可以优化启动时间,减少内存占用以及空间占用。Hermes官方提供了hbcdump工具,可以进行反编译,但使用起来比较麻烦,有另一个开源工具hbctool可以对hermesbytecode进行反编译与回编译。也就说在0.70 后基本上 index.android.bundle是Hermes的bytecode,没办法直接查看源码,需要借助其他工具进行反编译。提供了59, 62, 74, 76版本的反编译。安装可以反编译84版本的hbctool。并没有自动配置全局命令。
2024-01-19 17:16:05
1531
原创 Flutter BottomSheet 拖动分两段展示
的 Drag 方法,动态改变Dialog的高度,通过设置一个最大高度和最小高度分成两层进行展示。因为上面我们隐藏了自带的 DragHeader ,这里自定义一个可拖动的Header。常用的展示BottomSheet的方法为。
2023-12-29 18:05:14
1079
原创 Flutter IOS 前后台切换主题自动变化的问题
首先在获取 lightTheme 和 darkTheme 进行断点,发现在切换到后台的时候会重新获取,猜测它应该是在进入后台的时候对主题进行了保存,但是存储机制可能是错误的。此时如果把App前后台切换,使用Obx包括起来的内容会跟谁异常主题变换,未使用Obx的颜色不会变化。既然存储异常了,就在进入后台之前再重新设置一遍主题好了;重新测试一下,问题解决。
2023-11-08 14:46:30
967
原创 NewGlobalRef 无法传入jclass的解决办法
使用NewGlobalRef 对jobject全局引用,然后通过 GetObjectClass,得到jclass。
2023-09-25 15:41:22
137
原创 TabController 回调两次处理
通过打印发现 两次的 index 是相同的,然后发现还有一个参数就是 indexIsChanging 结合打印发现 indexIsChangeing 两次 只有一次为false。使用 TabController 的 addListener 方法监听,发现每次都会回调两次,对于同步操作还好处理,如果是异步操作就比较难处理了。
2023-09-21 09:50:56
254
原创 Flutter TabBar 自定义 indicator 的宽、高、圆角
Flutter TabBar indicator 提供了高度和形状的设置,没法直接设置其宽度;参数来重新绘制indicator来实现;
2023-09-20 15:44:43
774
转载 nodeJs xxx is not a constructor 报错原因
这里举个例子说明下,假如在A文件中引入了B文件,B文件中引入了C文件,此时是没问题的,但是如果在C文件中再引入A文件或者B文件,就会出问题。
2023-07-19 11:27:16
2091
原创 如何监听inflate方法
});} // 创建AppCompatDelegate public static AppCompatDelegate create(@NonNull Activity activity , @Nullable AppCompatCallback callback) {
2023-07-08 10:37:26
164
原创 发布Android Lib 到 MavenCentral
上面的问题修改完成后,为了加快进度,可以用一句优美的英文评论下。点击 Staging Repositories 菜单,点击 Release 进行发布即可。创建完成后下面很快会有回应,具体你的表单有什么问题,下一步怎么操作都会列举出来。然后可以集成到自己的项目中测试一下能不能正常下载。然后在上面的搜索中搜索你的项目名称即可以看到了。如果Tasks下面没有这么多菜单,而是出现。:如果是github上面的项目,不要使用。这里注册不需要什么验证码,很简单。:自定义,写项目名称即可。插件,配置比较简单。
2023-06-15 20:04:25
834
原创 使用FFmpeg实现最简单的视频播放
/ 加载so库init {// 定义接口方法布局使用设置) {})我这里直接在data/data/{packageName}/files/ 下面放了一个MP4格式的视频。
2023-06-06 17:56:16
1045
原创 FFmpeg入门基础
FFmpeg 提供了多种媒体格式的封装和解封装,包括多种音视频编码、多种协议的流媒体、多种色彩格式转换、多种采样率转换、多种码率转换等;尽管 FFmpeg 功能强大,但是由于其采用的是带有传染性的 LGPL/GPL 开源协议,所以一些大厂基本上都是自己独立开发类似的音视频处理库,甚至在接口和组织模块上模仿 FFmpeg。FFmpeg 既是一款音视频编解码工具,同时也是一组音视频编解码开发套件,作为编解码开发套件,他为开发者提供了丰富的音视频处理的调用接口。主要通过命令的方式进行对FFmpeg的调用。
2023-05-31 15:04:36
1119
原创 音视频基础知识
YUV模式下,色彩分量被分开表示,人眼感知亮度和颜色不同,YUV模式将图像的亮度和颜色分开处理,不仅可以节省存储空间,而且适合人眼的视觉特性,优化了图像的压缩,常用于数字电视、DVD、视频编码等应用中。有些超高帧率的视频达到60fps。RGB即红绿蓝三个通道的颜色模型,每个像素由三个颜色通道的取值组成,代表了像素的红、绿、蓝三个基本颜色成分的浓度,RGB模式下每个像素需要占用三个字节的存储空间,而且强调颜色分量之间的独立性,对于色调、亮度、色彩鲜艳、清晰度要求高的场合使用比较多,如显示器、电视、摄像机等。
2023-05-31 14:58:12
3025
原创 Jetpack StartUp
实际开发中大部分三方的SDK都是需要application作为依赖的,所以使用StartUp的机会并不多。如果是不依赖的建议使用这种方式,毕竟我们使用的jetpack都已经用它初始化了,我们在里面多加一条,相当于搭了顺风车,省时省力。
2023-05-17 14:59:36
620
原创 ViewBindingKtx
在Android SDK中提供了里面包含的对viewModel的扩展方法,可以直接获取viewModel在MVVM架构模式中主要使用的就是viewModel和(dataBinding 要在xml布局写逻辑,个人很不喜欢)。官方并没有提供相关扩展,所以就自己造一个。原理基本上都是使用反射来实现的,我之前是写在BaseActivity中的,但是这样就有点耦合。所以使用委托的方式实现。
2023-05-06 18:41:25
248
MiPush_Server_Java_20190420.zip
2020-02-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人