如何用 Python 寫一個安卓 APP ?

2021-01-10 網易

  22點24分準時推送,第一時間送達

  

編輯:技術君 | 來源:youerning

  上一篇:

  正文

  
前言

  用 Python 寫安卓 APP 肯定不是最好的選擇,目前用Java和 kotlin 寫的居多,但是肯定也是一個很偷懶的選擇,而且實在不想學習 Java,再者,就編程而言已經會的就 Python與Golang(註:Python,Golang水平都一般),那麼久Google了一下Python 寫安卓的 APP 的可能性,還真行。

  既然要寫個APP,那麼總得要有個想法吧。其實想做兩個APP來著,一個是自己寫著好玩的,一個是關於運維的。關於運維的APP,設計應該如下

  可能長這樣

  

  然後設計應該是這樣。

  

  如果覺得可行的話,評論留言一下你覺得應該寫進這個APP的運維常用命令吧^_^,筆者暫時想到的是top,free -m,df –h,uptime,iftop,iotop,如果有什麼好的想法就狠狠的砸過來吧,筆者到時應該也會把這個寫成一個項目放到github上,大家一起用嘛,開源才是王道,哈哈。

  開發安卓APP

  我們使用kivy開發安卓APP,Kivy是一套專門用於跨平臺快速應用開發的開源框架,使用Python和Cython編寫,對於多點觸控有著非常良好的支持,不僅能讓開發者快速完成簡潔的交互原型設計,還支持代碼重用和部署,絕對是一款頗讓人驚豔的NUI框架。

  因為跨平臺的,所以只寫一遍代碼,就可以同時生成安卓及IOS的APP,很酷吧。

  本文會帶大家寫一個Hello world並瞧一瞧 Python 版的2048的代碼

  kivy安裝

  環境說明:筆者在用的是Python2.7.10

  這裡僅介紹windows平臺安裝

  所有平臺參考: https://kivy.org/#download

  更新pip,setuptools

  python -m pip install --upgrade pip wheel setuptools

  然後是安裝所需要的依賴

  python -m pip install docutils pygmentspypiwin32 kivy.deps.sdl2 kivy.deps.glew \
kivy.deps.gstreamer --extra-index-url https://kivy.org/downloads/packages/simple/

  值得注意的是,上面的安卓需要訪問Google,所以請自備梯子,而且kivy.deps.gstreamer這個包比較大(95MB),可以單獨本地安裝,http://pan.baidu.com/s/1o7mlxNk

  然後就是安裝kivy了

  python -m pip install kivy

  至此,安裝就已經完畢了,值得注意的是64位系統沒有開啟虛擬化支持,在導入kivy的時候會報錯,如果是64位系統就設置一下機器的BIOS,開啟虛擬化支持吧。

  註:這裡只是kivy的運行環境,這樣我就能直接在windows機器上直接調試了,怎麼將代碼編譯成APK文件我們會在後面講到。

  如果kivy在python中應該就能導入了。

  

  按照世界慣例,我們」hello」一下吧。

  新建一個.py文件

  from kivy.app import Appfrom kivy.uix.button importButton
class TestApp(App):
def build(self):
return Button(text='Hello,kivy')
TestApp().run()

  運行

  

  然後會彈出一個框,大概如下,點擊」hello,kivy」會變顏色

  

  點擊窗口並按「F1」會這個窗口的一些屬性

  

  然後我們回過頭看一看代碼。

  ##導入App,然後讓TestApp這個類繼承
from kivy.app import App##導入一個Button,運維有這個button,當你點擊的時候才會有所反應
from kivy.uix.button
importButton
###定義類,名字必須是xxxAppclass TestApp(App):
###build一個Button
def build(self):
###返回一個Button,文字內容是「Hello,kivy」
return Button(text='Hello,kivy')
##運行,因為繼承了App,所以才有的run這個方法TestApp().run()

  上面就是我們的Hello了

  在windows上運行當然沒有什麼太大的意義,怎麼在安卓手機上運行才是我們想要的,

  這時我們需要一個編譯環境。

  官方說明的環境,如下:

  You』ll need:

  

  雖然官方提供了一個似乎還不錯的虛擬機鏡像,但是還是有很多內容需要翻出去,所以筆者在這裡提供相對而言更加完善的鏡像

  下載地址:http://pan.baidu.com/s/1geyAY7x

  注:virtualbox,vmware需自行下載

  root密碼:kivy

  默認使用帳戶kivy,密碼:kivy123

  當然你也可以下載官方鏡像,因為第一次編譯需要去國外下一大堆東西,所以請自行去下載。

  Virtual Machine

  A Virtual Machine with Android SDK and NDK and all otherpre-requisites pre installed to ease apk generation:

  

  Kivy Buildozer VM

  

  Or select the Torrent

  

  在筆者提供的鏡像裡,桌面上有一個dev_and,只要將上面寫的代碼,放入這個文件夾即可(當然也可以在其他目錄,後面會講到)。

  在公眾號Python人工智慧技術後臺回復「面試」,獲取騰訊Python面試題和答案。

  cd Desktop/dev_and/

  初始化會在當前目錄生成一個buildozer.spec文件 用於配置生成的apk相關信息

  buildozer init

  ###修改buildozer.spec文件

  vi buildozer.spec

  至少修改下面三項

  # (str) Title of your applicationtitle = helloworld
# (str) Package namepackage.name = helloapp
# (str) Package domain (needed for android/ios packaging)package.domain = youer.com

  然後注釋

  # (str) Application versioning (method 1)#version.regex = __version__ = ['"](.*)['"]#version.filename = %(source.dir)s/main.py

  下面這行改為非注釋
version = 1.2.0

  最後我們生成我們需要的apk文件

  buildozer -v android debug

  buildozer.spec更詳細的相關參數配置參考:

  http://buildozer.readthedocs.org/en/latest/specifications.html

  buildozer命令會在當前文件夾創建一個bin,該文件夾裡面有我們想要的apk文件

  helloapp-1.2.0-debug.apk

  helloapp-1.2.0-debug.apk

  安裝以後是這樣:

  

  話說在編譯的時候可能出現空間不足的情況,根據虛擬機的不同(vmware或virtualbox)自行擴容吧。

  最後我們來瞧瞧簡易版Python開發的2048這個遊戲的原始碼。

  代碼:

  https://github.com/mvasilkov/kb/tree/master/6_2048

  先看效果圖:

  

  

  試玩了一下,還是蠻流暢的,有興趣的可以下載玩一下

  下載地址:http://pan.baidu.com/s/1eQZACDW

  這個遊戲代碼雖然不長,但是還是蠻佔篇幅的,所以簡要的說明一下流程。

  

  主要由三部分組成,一是素材,圖片音頻之類的文件,二是Python代碼,三是kv文件,這個kv文件有點像 html 中的css。

  Python代碼的文件名一般命名為 main.py

  然後一定有一個叫做 XXXApp 的類,並繼承 App。

  比如該類叫做GameApp,那麼該目錄下的kv文件則必須為Game,如上圖所示,如果不是,那麼kv文件中的一些設定就不會生效。

  比如設定一個標籤

  
Label:
id: time
text: 'xxxx'
font_size: 60

  id為time,text文本內容為'xxxx',然後字體為60

  好吧,點到為止吧,不過似乎什麼都沒點到~~~

  你還有什麼想要補充的嗎?

  你在看嗎?一起成長

特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺「網易號」用戶上傳並發布,本平臺僅提供信息存儲服務。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關焦點

  • python + appium + 模擬器 搭建app自動點擊系統
    摘要本文主要介紹犀光科技app自動控制系統的搭建,利用python腳本驅動appium從而控制模擬器中app的行為。基本關係圖環境搭建一、python3 安裝直接登錄Python官網[https://www.python.org],下載最新版本即可。
  • Python實戰-編寫Web App-Day2-編寫Web App骨架
    我們的webapp基於aiohttp建立,寫一個簡單的app.py把網絡環境先運行起來:# -*- coding: UTF-8 -*-# Filename : app.py</h1>', content_type='text/html')def init(): app = web.Application() app.add_routes([web.get('/', index)])
  • 聊聊學python轉行、具體學習方法、自學python用於辦公、寫爬蟲等...
    我朋友還和我說過一個例子,說某在線旅遊公司的一個數據分析師,一開始根本就不會python,就只是用excel做的分析,python是後來在崗位上一邊做一邊學的。因為部門有這一塊的業務需要嘛,他又是部門裡面的人,做這個職位自然就是順理成章的事情了。反面的例子呢,比如說辭職脫產學習幾個月甚至半年都找不到工作的,都有。
  • 當python遇到Andriod手機 那麼,萬物皆可盤!
    No,看過了今天的內容,你python的裝13指數,至少上升1w+,並附帶暴擊、濺射、眩暈、致盲效果。沒錯,就是這麼囂張當python遇到安卓手機我們日常的python學習和使用都是在電腦上的,會寫Linux下的python腳本、搞一些爬蟲的項目、開發幾個好玩的web網站,用python做數據分析。可如果脫離了電腦,就成了零。如何讓我們的python,隨時隨地的裝13?
  • 安卓手遊平臺哪個好用 2021安卓手遊平臺十大app_18183專區
    18183首頁 安卓手遊平臺哪個好用 2021安卓手遊平臺十大app 點擊領取
  • 用Python程序自動賺支付寶積分
    本文介紹如何利用Python+uiautomator2 每日自動賺取支付寶積分。支付寶的積分有啥用?誘惑誘惑你: Tushare是一個免費、開源的python財經數據接口包,功能十分強大。這裡我們只用一點點指數查詢功能。
  • 職場人士如何一小時學會從0到1用Python
    安裝Python運行環境很多人會推薦直接安裝Anaconda(一個可以集中管理不同python版本、軟體包的python發行版本,可以理解為包含了python環境、python模塊、開發環境等的python大禮包)。
  • pixiv安卓app下載
    pixiv安卓app匯集海量的漫畫、小說、插畫資源,你想看的都只能在這裡找到!這裡的插畫非常的精彩豐富,還可以分享自己的作品,還有專屬的互動交流社區,給你別樣的社交新體驗!
  • Python程式設計師用文字加密方式,給女程式設計師寫情書,一周後牽手回家
    在某公司,有這樣一位Python程式設計師,我們叫他小福,由於性格比較內向,一直沒有女朋友,直到今年6月來了一位女程式設計師,莫名心動的小福,突發奇想,用文字加密的方式嘗試寫情書給那位女程式設計師,這樣即使情書被別人看到,或被拒絕了也不會丟面子。
  • 使用python實現一個簡單計算器
    之前寫過一系列的tkinter庫控制項的使用方法以及tkinter的三種布局方法。但是並沒有做過什麼實際的案例,主要原因是因為使用tikinter做界面比較麻煩,沒有可視化的設計來的快,就像我之前用的QT設計工具,就非常方便。
  • 乾貨| 如何寫一個更好的Python函數?
    乾明 編譯整理自 Medium 量子位 報導 | 公眾號 QbitAIPython雖然好用,但用好真的很難。尤其是函數部分,只要寫不好,後面的一連串人都會遭殃。看又看不懂,測試起來也麻煩,維護又維護不動,真是讓人頭疼。那怎麼寫好一個Python函數呢?
  • 破解遊戲安卓版大全 安卓手機破解遊戲app
    破解遊戲安卓版大全 安卓手機破解遊戲app 來源:www.18183.com作者:wer時間:2020-12-09 破解遊戲安卓版大全,安卓手機破解遊戲app.有了手遊盒子破解版
  • 魔術app是如何寫出來的?
    大量下載並試玩其他魔術app,看看別人的門子是如何設計的,設置界面是怎麼擺放的。這些操作在魔術app裡至關重要。例如需要打一個響指將手機裡的硬幣變消失,則需要將圖片做透明度變更的動畫,從手機裡取出硬幣,則需要用到移動動畫。搖一搖手機,硬幣變大了,則需要用到放大動畫。
  • python開發web服務 bottle框架
    作為這幾種語言都使用過的我來說,用過java就儘量不用C++,用過Python就儘量不用java,真的不堪回首。使用bottle框架首先安裝。一個指令搞定。# pip install bottle分享一個遇到的pip的問題,我Python版本很低2.6.6。本來通過安裝yum的epel,已經成功安裝了好用的pip。
  • 如何自學成 Python 大神?這裡有些建議
    從我個人經驗來講,學習一門程式語言最好的方法就是挑選一個問題,然後用程式語言來解決它。想要解決一個問題,你需要非常清楚地了解問題本身。我的意思是你需要了解輸入、輸出、約束條件、規則和許多其他的東西。以下是我推薦的一些步驟: 了解 Python 的基礎知識掌握任何一門程式語言的基礎都是非常重要的。你至少首先應該明白如何輸入和輸出。
  • 安卓破解手遊平臺大全 安卓破解版手遊app排名
    安卓破解手遊平臺大全 安卓破解版手遊app排名 來源:www.18183.com作者:wer時間:2020-11-25 安卓破解手遊平臺大全,安卓破解版手遊app排名.對於遊戲玩家來說是必備的
  • 安卓變態版手遊盒子大全 安卓版變態手遊app
    安卓變態版手遊盒子大全 安卓版變態手遊app 來源:www.18183.com作者:wer時間:2020-11-27 安卓變態版手遊盒子大全,安卓版變態手遊app.在這裡你可以每天都能看到最新破解遊戲資源下載
  • 安卓無限金幣遊戲平臺 十大安卓無限金幣手遊app
    安卓無限金幣遊戲平臺 十大安卓無限金幣手遊app 來源:www.18183.com作者:wer時間:2020-11-18 安卓無限金幣遊戲平臺,十大安卓無限金幣手遊app.這是專為遊戲愛好者開發出來的手遊盒子
  • 安卓無限內購破解遊戲大全 十大安卓破解遊戲app
    安卓無限內購破解遊戲大全 十大安卓破解遊戲app 來源:www.18183.com作者:wer時間:2020-11-18 安卓無限內購破解遊戲大全,十大安卓破解遊戲app.在這裡你可以每天都能看到最新破解遊戲資源下載
  • 十大安卓內購破解遊戲網站 安卓手遊破解網站app
    十大安卓內購破解遊戲網站 安卓手遊破解網站app 來源:www.18183.com作者:wer時間:2020-11-27 十大安卓內購破解遊戲網站,安卓手遊破解網站app.每一款破解版遊戲軟體應用功能都非常強大