使用NDK编译ffmpeg

最近研究音视频,ffmpeg 是一个非常著名的开源项目,分享一下自己从 0 到编译 ffmpeg 的过程,希望能帮助其他人趟坑。

很多的帖子都推荐编译 3.3.6 的版本,因为提到高版本都有编译不过的坑,所以我也是编译 3.3.6,NDK 是 android-ndk-r15c,其实编译部分的坑不多,不过,有些帖子的编译脚本编译出来时会少文件的,引入到 android 项目里面就各种报错。

阅读更多

开源一个Flutter编写的完整终端模拟器

上次开源了一个简易的终端模拟器,我也知道并不是标准的,但自己也一直在用,然后就发现了一些棘手的问题,就又跑去研究了一些完整终端的源码,termux,Android Terminal,最后成功的将他们的原理在 Flutter 实现

其实这个源也可能会是你学习使用 dart:ffi 的一个例子,其中用到的 char **,也就是二级指针的传递在也很少能在官方的 example 中也很难找到直接的例子,也是我处理这种类型遇见的比较麻烦的坑,主要就是没有案例。我将 termux 的 C 语言部分完全重构以供 Flutter 使用,由于 UI 框架使用的 Flutter 经过测试可以在 Macos 上跑起来!!!

阅读更多

Dart:ffi上手二:C语言基本函数的调用

Dart 对 C 语言的调用我个人感觉比 Java 的 jni 要简单得多,用不着还在 C 语言中创建出对应的函数才能调用,Dart 都能直接调用 C 语言原有的那些函数,因为 java jni 调用 C 语言的完整流程我也上手写过,Dart 还是简易多了,不用打乱已有 C 语言的结构

阅读更多

Dart:ffi上手一:So库编译篇

我是首先去看了官方的前两个 example,都上手来跑了,然后对应理解每一部分,dart:ffi 的例子是在 pc 端,所以一系列的编译也是在 pc 端,可我是安卓端的 app,于是就遇见了第一个坑,交叉编译.c,.h 到 so 库

阅读更多

Dart处理Tcp中的粘包问题-utf8

在tcp通信中,粘包是极其常见的事情,
下面我分享一个再实际开发的时候遇见的粘包问题,虽然它的实际触发场景不是tcp通信,但能应用于一些类似的粘包情况
由于我对计算机网路还没有过系统的学习,根据我看过的文献说一下我自己的理解

阅读更多

Dart学习笔记

  • 自从把Flutter SDK中的analysis_options.yaml copy到项目根目录后就***,当时是700多个error,警告记不清了,提示信息有7k个,总共花了一天半全部改完。

  • 所以还是得养成良好的代码编写习惯

阅读更多

开源一个Flutter编写的简易终端模拟器

在 Android 原生中执行 shell 可以使用 Runtime 的这些类,更多的会选择第三方开发者封装好的库来调用 shell,完整的终端模拟器,如 termux,Android Terminal 等都涉及到一些 jni 通信,C 语言中 system 函数可以执行命令行命令,python 中则是 os.system 函数,各类语言都有执行命令行的函数与方法,在 dart 中,我们通过 Process 类来实现这些功能

阅读更多

Flutter炫酷的波纹路由动画

  写这个的一切起因都得从我某天切换了酷安 App 的夜间模式说起,看个 Gif,忽略图中其他无关项。
Gif
这种的动画在 awesome-Flutter 上好像见到过,但是记得只是类似,有一个 App 的首次引导页跟这个有点像,不过那个是在一个 PageView 切换的时候的动画。上图的酷安 App 是原生应用,可以看到我在第三次切换主题的时候滑动了一个横向的类似于 Flutter ListView 的东西,再次点击切换主题,ListView 的状态变化了,所以我怀疑酷安是用 StartActivity 的方式(太久没碰原生 UI 了,所以只是猜测)

阅读更多