![]()  | 
|---|
| © dotmodus | 
由於語法渲染問題而影響閱讀體驗, 請移步博客閱讀~
本文GitPage地址
Prerequisite: Java Home
Download openJDK 8 from here.
sudo apt-get install build-essential libsqlite3-dev sqlite3 bzip2 libbz2-dev zlib1g-dev libssl-dev openssl libgdbm-dev libgdbm-compat-dev liblzma-dev libreadline-dev libncursesw5-dev libffi-dev uuid-devsudo apt install -y git zip unzip openjdk-8-jdk python3-pip autoconf libtool pkg-config zlib1g-dev libncurses5-dev libncursesw5-dev libtinfo5 cmake libffi-dev libssl-devsudo apt install cython
1 install Buildozer
## install pythonsudo apt install python3.7## install pipsudo apt install python3-pip##sudo python3.7 -m pip install --user --upgrade Cython==0.29.19 virtualenvsudo python3.7 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple buildozersudo apt updatesudo apt install -y git zip unzip openjdk-8-jdk python3-pip autoconf libtool pkg-config zlib1g-dev libncurses5-dev libncursesw5-dev libtinfo5 cmake libffi-dev libssl-devpip3 install --user --upgrade Cython==0.29.19 virtualenv # the --user should be removed if you do this in a venvor you can go and Check: [kivy-buildozer-installer.sh](https://github.com/zaemiel/kivy-buildozer-installer/blob/master/kivy-buildozer-installer.sh)## add the following line at the end of your ~/.bashrc fileexport PATH=$PATH:~/.local/bin/
If you come with error buildozer debug error "[WARNING]" when i run buildozer andriod debug, please install lib below
sudo apt-get install build-essential libsqlite3-dev sqlite3 bzip2 libbz2-dev zlib1g-dev libssl-dev openssl libgdbm-dev libgdbm-compat-dev liblzma-dev libreadline-dev libncursesw5-dev libffi-dev uuid-dev
链接安卓手机, 开启USB debug模式;
进入 kivy 项目目录
测试项目:https://github.com/sevvalbrt/Todolist
buildozer initbuildozer android debug deploy run
手机有什么提示, 记得选择
可能会下一些东西. 等一下就好了

更多参考:
https://cycleuser.gitbooks.io/kivy-guide-chinese/content/15-Kivy-Pack-Android.html
Quick Test
Download a Kivy example
git clone https://github.com/sevvalbrt/Todolist.gitcd ToDolistbuildozer initbuildozer android debug deploy run

As this photo above, it’ll take a while…
The problem is you’ll download a bunch of libs and you’ll fail if one of the packages download fail.
[‘hostpython3’, ‘libffi’, ‘openssl’, ‘sdl2_image’, ‘sdl2_mixer’, ‘sdl2_ttf’, ‘sqlite3’, ‘python3’, ‘sdl2’, ‘setuptools’, ‘six’, ‘pyjnius’, ‘android’, ‘kivy’]
- android-ndk-r19c-linux-x86_64.zip
 
## Buildozer failed to execute the last command## The error might be hidden in the log above this error## Please read the full log, and search for it before## raising an issue with buildozer itself.## In case of a bug report, please add a full log with log_level = 2
I got an error and it says I need to read the error code in full log file…
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
reference: lplj717 2019
It seems like I got a wrong version of jave.
So, I removed the new version and keep the jdk8.
And then, a new error arise:
WARNING: Received a --sdk argument, but this argument is deprecated and does nothing.BUILD FAILURE: No main.py(o) found in your app directory. Thisfile must exist to act as the entry point for you app. If your app isstarted by a file with a different name, rename it to main.py or add amain.py that loads it.
So… mv Main.py to main.py
and then:
Could not find tools.jar. Please check that /home/ken/Soft/jre1.8.0_231 contains a valid JDK installation
reference: CUFFS 2017
So, there are some thing wrong with my JAVA environment, I download it from https://adoptopenjdk.net and export them in ~/.bashrc
Success
When the code shows as below, it means everything is down and you can upload apk file from bin to your Android phone:
WARNING: Received a --sdk argument, but this argument is deprecated and does nothing.No setup.py/pyproject.toml used, copying full private data into .apk.Applying Java source code patches...Applying patch: src/patches/SDLActivity.java.patchWarning: failed to apply patch (exit code 1), assuming it is already applied: src/patches/SDLActivity.java.patch## Android packaging done!## APK myapp-0.1-armeabi-v7a-debug.apk available in the bin directory
ummmm… I fail to open this app in Huawei p30 pro. But I tried another more simple app and it succeed.
sudo apt install install python3-dev
Erros
RAN: /bin/tar xf /media/ken/Data/Kivy_env/Kivy2Py3.8.1MD0.104.2.dev0/.buildozer/android/platform/build-armeabi-v7a/packages/cython/0.29.15.tar.gzSTDOUT:STDERR:/bin/tar: This does not look like a tar archivegzip: stdin: unexpected end of file/bin/tar: Child returned status 1/bin/tar: Error is not recoverable: exiting now
cypython file is damaged. Delete .buildozer/android/platform/build-armeabi-v7a/packages/cython to download it again
def Seq_clean():F = open("clusttmp/result.aln-clustal_num.clustal_num").read()F = F.replace("\n\n\n","\n\n")F = F.split("\n\n")[1:]Result = ""Num = 0for head in F[0].split("\n"):for Seq in F:tmp = Seq.split("\n")[Num].split("\t")[0]if head !=Seq.split("\n")[Num]:tmp = tmp.split(" ")[-1]Result += tmpResult += "\n"Num +=1print(Result)Mark_list = []for i in Result.split('\n'):Mark_list += [i.split(" ")[-1]]while "" in Mark_list:Mark_list.remove("")Marked_list = []for seq in Mark_list:Marked_list += [MarkDown(seq)]for i, ii in zip(Mark_list, Marked_list):Result= Result.replace(i, ii)return Resultdef MarkDown(Text):Result = ""for i in list(Text):if i == "a" or i == "A":i = "[color=#fa937f]A[/color]"if i == "t" or i == "T":i = "[color=#1193ee]T[/color]"if i == "c" or i == "C":i = "[color=#51d673]C[/color]"if i == "g" or i == "G":i = "[color=#edcf1d]G[/color]"if i == "-" or i == " ":i = "[color=#ffffff]G[/color]"Result += ireturn Result
Enjoy~
由於語法渲染問題而影響閱讀體驗, 請移步博客閱讀~
本文GitPage地址
GitHub: Karobben
Blog:Karobben
BiliBili:史上最不正經的生物狗

