文章目录
- 前言
- 准备工具
- 安装
-
- [1. 安装Termux](#1. 安装Termux)
- [2. 安装proot-distro](#2. 安装proot-distro)
- [3. 安装Ubuntu](#3. 安装Ubuntu)
- [4. 登录Ubuntu](#4. 登录Ubuntu)
- [5. 安装必要的包](#5. 安装必要的包)
- [6. 安装 LaTeX \LaTeX LATEX](#6. 安装 LaTeX \LaTeX LATEX)
- [7. 中文支持](#7. 中文支持)
- 测试
- 结尾
- 下载链接
本文由Jzwalliser原创,发布在CSDN平台上,遵循CC 4.0 BY-NC-SA协议。
因此,若需转载/引用本文,请注明作者并附原文链接,不得用于商业用途。
违者必究,谢谢配合。
个人主页:blog.csdn.net/jzwalliser
前言
最近突发奇想:能不能在安卓手机上跑 Manim?毕竟出门在外,手边只有手机的时候,要是能随手写个动画演示,岂不是美滋滋?
说干就干,开整!
准备工具
硬件(自己准备)
1. 一台手机(至少安卓5以上,安卓7以上会更好)
软件(我会在文末提供链接)
2. Termux(apk)
3. Ubuntu 容器镜像(.tar.xz)
4. 几个测试文件(zip)
安装
1. 安装Termux
首先,需要安装Termux。因此,上Github把termux的安装包下载下来:
自行寻找适合的版本。如果下载不了,也可以到文章末尾找链接。
2. 安装proot-distro
在Termux环境中直接安装manim很麻烦,因为缺少了各种依赖,所以很多东西编译不通过(不是我懒,而是真折腾不出来啊)。
所以,这里我"曲线救国",先安装Ubuntu容器,再在Ubuntu中安装manim(当然,如果你捣腾出来termux下直装manim的方法,也欢迎分享)。
所以,执行:
bash
pkg install python proot
pip install proot-distro
如果速度很慢,也可以先换国内镜像,再安装。执行:
bash
termux-change-repo
请使用上、下、空格、回车键操作。
3. 安装Ubuntu
下载完proot-distro之后,安装Ubuntu。运行:
bash
proot-distro install ubuntu
如果网络顺利,Ubuntu 会直接安装完成,那恭喜你,可以直接跳到下一节。
如果无法下载相应的ubuntu包,则请手动下载。然后,把ubuntu拷贝到手机内,接着执行:
bash
termux-setup-storage
这会打开文件授权的对话框。打开文件访问的开关即可,接着返回到termux,运行:
bash
proot-distro install /storage/emulated/0/.../ubuntu-noble-aarch64-pd-v4.18.0.tar.xz
其中,/storage/emulated/0/.../ubuntu-noble-aarch64-pd-v4.18.0.tar.xz就是Ubuntu包的路径,请替换为你的文件!
安装好后,可通过以下命令查看已安装的内容。
bash
proot-distro list
安装完后,我的手机上显示的是ubuntu-noble-aarch64-pd-v4.18.0。实在是很长,如果你也嫌长的话,可以重命名:
bash
proot-distro rename ubuntu-noble-aarch64-pd-v4.18.0 ubuntu
4. 登录Ubuntu
登录很简单:
bash
proot-distro login ubuntu
如果出错显示:
Error: container 'ubuntu' is not installed.
多半是因为容器名不一致。此时你有两个选择:
1. 返回上一步,把容器重命名为ubuntu,再登录
2. 运行:proot-distro login ubuntu-noble-aarch64-pd-v4.18.0也可以登陆(反正去查proot-distro list)
5. 安装必要的包
登录ubuntu后,就可以开始安装必要的包了。执行:
bash
apt update
apt install libswresample-dev libavutil-dev libpango1.0-dev fonts-noto-cjk ffmpeg libpangocairo-1.0-0 libavformat-dev pkg-config gir1.2-pango-1.0 libcairo2-dev libswscale-dev libfontconfig1-dev libavdevice-dev build-essential libfreetype6-dev python3-dev libavcodec-dev libavfilter-dev python3-pip libglib2.0-dev
必要的包安装完了,现在开始安装manim。
国内网络环境下建议使用国内 PyPI 镜像,例如清华、阿里云等。这里以腾讯云为例:
bash
pip install manim -i https://mirrors.cloud.tencent.com/pypi/simple/ --break-system-packages
解释一下--break-system-packages:Debian/Ubuntu 新版本 pip 默认禁止直接向系统 Python 安装pip包,不过可以--break-system-packages绕过这个机制。但是这会污染系统 Python 环境,所以如果计划在容器中做更多开发,强烈建议使用python -m venv。当然,如果整个容器内只运行manim的话问题也不大。
一般来说,到这一步就结束了,可以正常使用manim了。
6. 安装 LaTeX \LaTeX LATEX
这些操作是可选的。如果你有数学公式渲染的需求,就继续看下去吧,若无数学公式渲染需求,到这里就可以结束安装啦~
Texlive-full
如果手机空间足够大(例如你是土豪),不想倒腾想省心,那么安装texlive-full即可。
bash
apt install texlive-full
这会下载8GB的内容,然后一切都会自动配置好,不需要人工干预。
TinyTex
如果你觉得8GB太太太大了(我就是这么觉得的,显然我不是土豪),那么装TinyTex。不过,会比较麻烦。
执行:
bash
apt install wget
wget -qO- "https://tinytex.yihui.org/install-bin-unix.sh" | sh
自此,TinyTex安装完毕。接着,把TinyTex的LaTeX编译器加到环境变量中:
bash
echo export PATH="$HOME/.TinyTeX/bin/aarch64-linux:$PATH" >> ~/.bashrc
注意:该路径适用于 ARM64(aarch64)设备,但如果你的设备不是 aarch64,则可通过uname -m确认架构,并相应调整路径。
重新登录:
bash
logout
proot-distro login ubuntu
检查:
bash
which latex
如果有输出,那么配置正确。
接着,安装必要的包:
bash
tlmgr install standalone dvisvgm preview babel babel-english
mktexlsr
LaTeX \LaTeX LATEX就此安装完毕!
7. 中文支持
如果需要支持中文,那么还需要修改文件。(推荐,这样就一劳永逸了)
安装nano(熟悉vim的也可以使用vim):
bash
apt install nano
接着,用nano打开文件/usr/local/lib/python3.12/dist-packages/manim/utils/tex.py:
bash
nano /usr/local/lib/python3.12/dist-packages/manim/utils/tex.py
此时,你会看到文件长这个样子:
py
"""Utilities for processing LaTeX templates."""
from __future__ import annotations
__all__ = [
"TexTemplate",
]
import copy
import re
import warnings
from dataclasses import dataclass, field
from pathlib import Path
from typing import TYPE_CHECKING, Any
if TYPE_CHECKING:
from typing import Self
from manim.typing import StrPath
_DEFAULT_PREAMBLE = r"""\usepackage[english]{babel}
\usepackage{amsmath}
\usepackage{amssymb}"""
_BEGIN_DOCUMENT = r"\begin{document}"
_END_DOCUMENT = r"\end{document}"
#后面省略
翻到_DEFAULT_PREAMBLE,修改成这样:
py
#上面省略
_DEFAULT_PREAMBLE = r"""\usepackage[english]{babel}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{ctex}"""
#下面省略
然后,Ctrl+O保存,再Enter确认,最后Ctrl+X退出编辑。
接着,如果你安装的是tinytex(安装了texlive-full的忽略这一步),还要执行:
bash
tlmgr install ctex
测试
安装完成后,可以写一个Manim场景,保存到main.py:
py
from manim import *
import random
import numpy
class Congratulations(Scene):
def construct(self):
banner = ManimBanner().scale(0.5)
congratulation = Text("Congratulations!\nYour Manim installation was successful.").next_to(banner,DOWN).scale(0.8)
self.play(banner.create(),Write(congratulation))
confetti = VGroup()
colors = [RED,BLUE,GREEN,YELLOW,PURPLE,ORANGE,PINK,TEAL]
shapes = [Rectangle(width=0.08,height=0.08,fill_opacity=0.9,stroke_width=0),Circle(radius=0.04,fill_opacity=0.9,stroke_width=0),Triangle(radius=0.07,fill_opacity=0.9,stroke_width=0)]
for i in range(120):
p = shapes[random.randint(0,len(shapes) - 1)].copy().set_color(color=random.choice(colors))
p.move_to([random.uniform(-6,6),-3.5,0])
p.velocity = numpy.array([random.uniform(-0.6,0.6),random.uniform(1.8,2.8),0])
p.rotate(random.uniform(0,TAU))
p.angular_velocity = random.uniform(-2,2)
p.gravity = -0.6
p.fade_start = False
confetti.add(p)
def update_particles(mob,dt):
for p in mob:
p.shift(p.velocity * dt * 3)
p.velocity[1] += p.gravity * dt * 3
p.rotate(p.angular_velocity * dt * 3)
if p.velocity[1] < 0 and not p.fade_start:
p.fade_start = True
if p.fade_start:
p.set_opacity(max(0,p.get_fill_opacity() - 0.01))
confetti.add_updater(update_particles)
self.add(confetti)
self.play(banner.expand())
self.wait(3)
self.play(FadeOut(banner),FadeOut(congratulation))
接着运行以下命令测试:
manim -ql main.py
如果能成功生成视频,那么恭喜,你的manim可以正常使用了。
还可以继续测试 LaTeX \LaTeX LATEX,代码保存到latex.py:
py
from manim import *
class TestLaTeX(Scene):
def construct(self):
euler = MathTex(r"\text{Euler's Formula: }e^{i\pi} + 1 = 0")
binomial = MathTex(r"\text{Binomial Theroem: }(a+b)^n = \sum_{k=0}^n{\rm C}_n^ka^{n-k}b^k")
taylor = MathTex(r"\text{Taylor Expansion: }e^x = \sum_{n=0}^{\infty}\dfrac{x^n}{n!}")
gravity = MathTex(r"\text{Gravity: }F = G\dfrac{m_1 m_2}{r^2}")
integral = MathTex(r"\text{Integral: }\int e^{x} \,{\rm d}x = e^{x} + C")
formulae = VGroup(euler,binomial,taylor,gravity,integral).arrange(DOWN,aligned_edge=LEFT).center()
self.play(Write(formulae,lag_ratio=0.01))
self.wait(1)
self.play(FadeOut(formulae))
执行:
bash
manim -ql latex.py
如果能成功生成视频,那么恭喜,你的 LaTeX \LaTeX LATEX也可以正常使用了。
对于中文,代码保存到ctex.py:
py
from manim import *
class TestChineseLaTeX(Scene):
def construct(self):
euler = MathTex(r"\text{欧拉公式:}e^{i\pi} + 1 = 0")
binomial = MathTex(r"\text{二项式定理:}(a+b)^n = \sum_{k=0}^n{\rm C}_n^ka^{n-k}b^k")
taylor = MathTex(r"\text{泰勒展开:}e^x = \sum_{n=0}^{\infty}\dfrac{x^n}{n!}")
gravity = MathTex(r"\text{万有引力:}F = G\dfrac{m_1 m_2}{r^2}")
integral = MathTex(r"\text{不定积分}\int e^{x} \,{\rm d}x = e^{x} + C")
formulae = VGroup(euler,binomial,taylor,gravity,integral).arrange(DOWN,aligned_edge=LEFT).center()
self.play(Write(formulae,lag_ratio=0.01))
self.wait(1)
self.play(FadeOut(formulae))
执行:
bash
manim -ql ctex.py
如果依然能成功生成视频,那么恭喜,你的中文 LaTeX \LaTeX LATEX环境配置成功。
当然,如果遇到了什么问题也欢迎在评论区交流。
结尾
至此,你已经拥有了一个手机版的动画引擎啦!
当然,手机CPU肯定没有电脑CPU那么强悍,因此渲染视频没有电脑那么快,不要要求太高哦~
码字不易,记得点赞收藏哦!我们下期再见~
下载链接
| Termux (适用于Android 7+)下载 |
|---|
| 文件:termux-appv0.119.0-beta.3+apt-android-7-github-debuguniversal.apk |
| 百度网盘:https://pan.baidu.com/s/1DCpT4Vmb3hv6wFT54BLs0Q?pwd=0000 |
| Github:https://github.com/termux/termux-app/releases/download/v0.119.0-beta.3/termux-app_v0.119.0-beta.3+apt-android-7-github-debug_universal.apk |
| 其他版本可也可前往Github下载 |
| Termux (适用于Android 7+,arm64-v8a)下载 |
|---|
| 文件:termux-appv0.119.0-beta.3+apt-android-7-github-debugarm64-v8a.apk |
| 百度网盘:https://pan.baidu.com/s/1znolVwBiKcGSg5rGu_jbaw?pwd=0000 |
| Github:https://github.com/termux/termux-app/releases/download/v0.119.0-beta.3/termux-app_v0.119.0-beta.3+apt-android-7-github-debug_arm64-v8a.apk |
| 其他版本可也可前往Github下载 |
| Termux (适用于Android 7+,armeabi-v7a)下载 |
|---|
| 文件:termux-appv0.119.0-beta.3+apt-android-7-github-debugarmeabi-v7a.apk |
| 百度网盘:https://pan.baidu.com/s/1CJgzQcBCZzginUv8khWDZQ?pwd=0000 |
| Github:https://github.com/termux/termux-app/releases/download/v0.119.0-beta.3/termux-app_v0.119.0-beta.3+apt-android-7-github-debug_armeabi-v7a.apk |
| 其他版本可也可前往Github下载 |
| Termux (适用于Android 7+,x86_64)下载 |
|---|
| 文件:termux-appv0.119.0-beta.3+apt-android-7-github-debugx86_64.apk |
| 百度网盘:https://pan.baidu.com/s/1zlr9BQG3GWKYKyJ4rTwsFw?pwd=0000 |
| Github:https://github.com/termux/termux-app/releases/download/v0.119.0-beta.3/termux-app_v0.119.0-beta.3+apt-android-7-github-debug_x86_64.apk |
| 其他版本可也可前往Github下载 |
| Termux (适用于Android 5/6)下载 |
|---|
| 文件:termux-appv0.119.0-beta.3+apt-android-5-github-debuguniversal.apk |
| 百度网盘:https://pan.baidu.com/s/1UN78Kknhx92JyxeY8MiV7w?pwd=0000 |
| Github:https://github.com/termux/termux-app/releases/download/v0.119.0-beta.3/termux-app_v0.119.0-beta.3+apt-android-5-github-debug_universal.apk |
| 其他版本可也可前往Github下载 |
| Termux (适用于Android 5/6,arm64-v8a)下载 |
|---|
| 文件:termux-appv0.119.0-beta.3+apt-android-5-github-debugarm64-v8a.apk |
| 百度网盘:https://pan.baidu.com/s/1xb1cUFbxD0SgcrZBnqJB4A?pwd=0000 |
| Github:https://github.com/termux/termux-app/releases/download/v0.119.0-beta.3/termux-app_v0.119.0-beta.3+apt-android-5-github-debug_arm64-v8a.apk |
| 其他版本可也可前往Github下载 |
| Termux (适用于Android 5/6,armeabi-v7a)下载 |
|---|
| 文件:termux-appv0.119.0-beta.3+apt-android-5-github-debugarmeabi-v7a.apk |
| 百度网盘:https://pan.baidu.com/s/1nWw5E9Iq0TEjZNdPoksbUw?pwd=0000 |
| Github:https://github.com/termux/termux-app/releases/download/v0.119.0-beta.3/termux-app_v0.119.0-beta.3+apt-android-5-github-debug_armeabi-v7a.apk |
| 其他版本可也可前往Github下载 |
| Termux (适用于Android 5/6,x86_64)下载 |
|---|
| 文件:termux-appv0.119.0-beta.3+apt-android-5-github-debugx86_64.apk |
| 百度网盘:https://pan.baidu.com/s/1X-5JzUxKXNlIhRQWSk-k-w?pwd=0000 |
| Github:https://github.com/termux/termux-app/releases/download/v0.119.0-beta.3/termux-app_v0.119.0-beta.3+apt-android-5-github-debug_x86_64.apk |
| 其他版本可也可前往Github下载 |
| Ubuntu容器(适用于arm64-v8a)下载 |
|---|
| 文件:ubuntu-noble-aarch64-pd-v4.18.0.tar.xz |
| 百度网盘:https://pan.baidu.com/s/1CpuLVOsFQ5z_hp-SnFVekA?pwd=0000 |
| Github:https://github.com/termux/proot-distro/releases/download/v4.18.0/ubuntu-noble-aarch64-pd-v4.18.0.tar.xz |
| Ubuntu容器(适用于x86_64)下载 |
|---|
| 文件:ubuntu-noble-x86_64-pd-v4.18.0.tar.xz |
| 百度网盘:https://pan.baidu.com/s/1RjbBzGzWxhSgKLCQNy7VZA?pwd=0000 |
| Github:https://github.com/termux/proot-distro/releases/download/v4.18.0/ubuntu-noble-x86_64-pd-v4.18.0.tar.xz |
| Ubuntu容器(适用于armeabi-v7a)下载 |
|---|
| 文件:ubuntu-noble-arm-pd-v4.18.0.tar.xz |
| 百度网盘:https://pan.baidu.com/s/1merhqhqcUPGZIR3_8Vv_Ig?pwd=0000 |
| Github:https://github.com/termux/proot-distro/releases/download/v4.18.0/ubuntu-noble-arm-pd-v4.18.0.tar.xz |
| Manim测试文件下载 |
|---|
| 文件:Manim 可渲染脚本.zip |
| 百度网盘:https://pan.baidu.com/s/1g1A1sDSbqW3lvwGf5wGPVA?pwd=0000 |