目标

上一篇Flutter应用已经能在iOS,macOS和,chrome环境下正常运行了,这次把Android跑通。

环境

macOS 15.4.1

Visual Studio Code 1.99.3

Flutter 3.29.3 • channel stable • https://github.com/flutter/flutter.git
Framework • revision ea121f8859 (11 days ago) • 2025-04-11 19:10:07 +0000
Engine • revision cf56914b32
Tools • Dart 3.7.2 • DevTools 2.42.3

JDK 17
Gradle 8.10.2

环境搭建

Flutter的Android的工具链

  • Android SDK Platform, API 35.0.2
  • Android SDK Command-line Tools – 包括 ProGuard 等基本工具
  • Android SDK Build-Tools – 包含构建 Android 应用的工具(可以下多个)
  • Android SDK Platform-Tools – 包含 Android 平台所需的各种工具,包括 adb 工具。
  • Android Emulator – 模拟器

阅读更多

环境

macOS 15.4.1

Xcode Version 16.3 (16E140)

Visual Studio Code 1.99.3

Flutter 3.29.3 • channel stable • https://github.com/flutter/flutter.git
Framework • revision ea121f8859 (11 days ago) • 2025-04-11 19:10:07 +0000
Engine • revision cf56914b32
Tools • Dart 3.7.2 • DevTools 2.42.3

iPhone iOS(13.4.1)

iPhone iOS(18.0.1)

网络配置

网络原因对镜像做的一些处理

1
2
$ export PUB_HOSTED_URL="https://pub.flutter-io.cn"
$ export FLUTTER_STORAGE_BASE_URL="https://storage.flutter-io.cn"

下载后SDK镜像,我是放到/usr/local,所以在终端执行下面的代码

阅读更多

环境

JDK 13
IDEA Build #IC-243.26053.27, built on March 16, 2025

Demo

MP3Parser

MP3

MP3全称为MPEG Audio Layer 3,它是一种高效的计算机音频编码方案,它以较大的压缩比将音频文件转换成较小的扩展名为.mp3的文件,基本保持源文件的音质,MP3是ISO/MPEG标准的一部分,

ISO/MPEG标准描述了使用高性能感知编码方案的音频压缩,此标准一直在不断更新以满足“质高量小”的追求,现已形成MPEG Layer1、Layer2、Layer3三种音频编解码方案,分别对应MP1、MP2、MP3 这三种声音文件

阅读更多

对macho文件有一定理解后,了解下optool是如何给macho文件增加动态库等功能的

optool 源码

环境

macOS 13.4 (22F66)
Xcode 14.3.1

0x0 编译

下载源码

1
$ git clone --recurse-submodules https://github.com/alexzielenski/optool.git

修改下Deployment Target,比如改成11.0,不修改会报

阅读更多

Mach-O基本结构

  1. Header: :文件类型、目标架构类型等
  2. Load Commands:描述文件在虚拟内存中的逻辑结构、布局
  3. Data: 在Load commands中定义的Segment的数据

阅读更多

编译

环境

macOS Ventrua 13.4
ffmpeg 7.7.1
Visual Studio Code Version: 1.99.0 (Universal)

操作

FFmpeg 下载源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ cd ffmpeg-x.y.z
$ ./configure
nasm/yasm not found or too old. Use --disable-x86asm for a crippled build.

If you think configure made a mistake, make sure you are using the latest
version from Git. If the latest version fails, report the problem to the
ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.libera.chat.
Include the log file "ffbuild/config.log" produced by configure as this will help
solve the problem.

# 听劝 + 考虑到后面需要调试
$ mkdir build
$ ./configure --prefix=./build --disable-x86asm --enable-debug --disable-stripping
$ make

阅读更多

声音

物体在一定的振动频率下产生了声音。声音可以被分解为不同频率不同强度正弦波的叠加。

声音三要素

声调

音调: 由发声体振动的频率决定,频率越高(振动越快)则音调越高,听起来就越“刺耳”,反之音调越低、听起来就越低沉。

声音的音调,即音频频率或每秒的变化次数

阅读更多

Transition

<Transition> 会在一个元素或组件进入和离开 DOM 时应用动画。本章节会介绍如何使用它。

内置组件可以在任意的组件中被使用,无需注册。它可以将进入和和离开动画应用到传递给它的元素或组件上

进入或离开的触发条件

  • 由 v-if 所触发的切换
  • 由 v-show 所触发的切换
  • 由特殊元素 切换的动态组件
  • 改变特殊的 key 属性
1
2
3
4
<button @click="show = !show">Toggle</button>
<Transition>
<p v-if="show">hello</p>
</Transition>

阅读更多

介绍

插件 (Plugins) 是一种能为 Vue 添加全局功能的工具代码

1
2
3
4
5
6
7
import { createApp } from 'vue'

const app = createApp({})

app.use(myPlugin, {
/* 可选的选项 */
})

一个插件可以是一个拥有 install() 方法的对象,也可以直接是一个安装函数本身。安装函数会接收到安装它的应用实例和传递给 app.use() 的额外选项作为参数:

对象的写法

1
2
3
4
5
const myPlugin = {
install(app, options) {
// 配置此应用
}
}

阅读更多

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×