歡迎光臨
每天分享高質量文章

如何Python寫一個安卓APP

前言:Python寫安卓APP肯定不是最好的選擇,但是肯定是一個很偷懶的選擇

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

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

kivy安裝

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

這裡僅介紹windows平臺安裝

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

更新pip,setuptools

1
python -m pip install --upgrade pip wheel setuptools

然後是安裝所需要的依賴

1
2
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

1
python -m pip install kivy

 

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

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


如果kivypython中應該就能匯入了。

按照“世界慣例”咱們來“hello”一下吧

新建一個py檔案

1
2
3
4
5
6
7
8
from kivy.app import App
from kivy.uix.button importButton
  
class TestApp(App):
    def build(self):
        return Button(text='Hello,kivy')
  
TestApp().run()

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

點擊視窗並按“F1”會這個視窗的一些屬性

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
##匯入App,然後讓TestApp這個類繼承
from kivy.app import App
##匯入一個Button,運維有這個button,當你點擊的時候才會有所反應
from kivy.uix.button importButton
  
###定義類,名字必須是xxxApp
class TestApp(App):
    ###build一個Button
    def build(self):
        ###傳回一個Button,文字內容是“Hello,kivy”
        return Button(text='Hello,kivy')
  
##運行,因為繼承了App,所以才有的run這個方法
TestApp().run()

windows上運行當然沒有什麼太大的意義,怎麼在安卓手機上運行才是我們想要的,這時我們需要一個編譯環境。

官方說明的環境,如下:

You’ll need:

  • A     linux computer or a virtual machine

  • Java

  • Python     2.7 (not 2.6.)

  • Jinja2     (python module)

  • Apache     ant

  • Android     SDK

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

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


:virtualboxvmware需自行下載

root密碼:kivy

預設使用賬戶kivy,密碼:kivy123

 

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

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

1
cd Desktop/dev_and/

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

1
buildozer init

###修改buildozer.spec檔案

1
vi buildozer.spec

至少修改下麵三項

1
2
3
4
5
6
7
8
# (str) Title of your application
title = helloworld
  
# (str) Package name
package.name = helloapp
  
# (str) Package domain (needed for android/ios packaging)
package.domain = youer.com

然後註釋

1
2
3
# (str) Application versioning (method 1)
#version.regex = __version__ = ['"](.*)['"]
#version.filename = %(source.dir)s/main.py
1
2
下麵這行改為非註釋
version = 1.2.0

 最後我們生成我們需要的apk檔案

1
buildozer -v android debug

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

1
helloapp-1.2.0-debug.apk

效果圖


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

Python代碼的檔案名一般命名為main.py

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

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

比如設定一個標簽

1
2
3
4
Label:
        idtime
        text: 'xxxx'
        font_size: 60

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

End

作者:youerning

源自:http://blog.51cto.com/youerning/1733534

宣告:文章著作權歸作者所有,如有侵權,請聯繫小編刪除

原始碼:https://github.com/mvasilkov

赞(0)

分享創造快樂