用Python寫安卓APP肯定不是最好的選擇,但是肯定是一個(gè)很偷懶的選擇。我們使用kivy開發(fā)安卓APP,Kivy是一套專門用于跨平臺(tái)快速應(yīng)用開發(fā)的開源框架,使用Python和Cython編寫,對(duì)于多點(diǎn)觸控有著非常良好的支持,不僅能讓開發(fā)者快速完成簡(jiǎn)潔的交互原型設(shè)計(jì),還支持代碼重用和部署,絕對(duì)是一款頗讓人驚艷的NUI框架。 (推薦學(xué)習(xí):Python視頻教程)
十余年的東昌網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。全網(wǎng)營(yíng)銷推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整東昌建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)公司從事“東昌網(wǎng)站設(shè)計(jì)”,“東昌網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
因?yàn)榭缙脚_(tái)的,所以只寫一遍代碼,就可以同時(shí)生成安卓及IOS的APP,很酷吧。
新建一個(gè).py文件
運(yùn)行:
然后會(huì)彈出一個(gè)框,大概如下,點(diǎn)擊”hello,kivy”會(huì)變顏色
以上就是小編分享的關(guān)于python開發(fā)安卓app可行嗎的詳細(xì)內(nèi)容希望對(duì)大家有所幫助,更多有關(guān)python教程請(qǐng)關(guān)注環(huán)球青藤其它相關(guān)文章!
python可以開發(fā)手機(jī)app,因?yàn)檫@也是一款編程的軟件,如果你用這款軟件去開發(fā)手機(jī)APP的話,就有一點(diǎn)大材小用的感覺了。這也說明這款軟件的強(qiáng)大性。
開發(fā)一個(gè)完整app需要掌握哪些知識(shí)
1、前期需求規(guī)劃與信息——你需要制定出一個(gè)完整的需求文檔,功能文檔,流程圖,時(shí)序圖。
2、交互設(shè)計(jì)、UI設(shè)計(jì)——設(shè)計(jì)出基本且完善的原型圖和app基礎(chǔ)的交互設(shè)計(jì)效果,之后再根據(jù)這些設(shè)計(jì)出完整的UI界面并學(xué)會(huì)切圖,一些需要做自適應(yīng)的素材圖片需要做點(diǎn)9patch。 這里還需要你懂得px,pt和dp之間的換算,屏幕密度的換算和相互之間的系數(shù),以便你的app能完美適應(yīng)不同分辨率設(shè)備。其中交互設(shè)計(jì)需要你懂得很多人機(jī)操作的技巧經(jīng)驗(yàn),掌握Axure等交互工具的使用,UI設(shè)計(jì)需要你掌握Photoshop和Illustrator等操作。
3、使用ADT之類的開發(fā)環(huán)境進(jìn)行app軟件開發(fā),你最基本的也得掌握java語言,熟悉android環(huán)境和機(jī)制。
4、如果不是單機(jī)版的app,需要用到服務(wù)器,那你還得掌握WebService相關(guān)知識(shí)和開發(fā)語
言,常用的有ASP.Net,PHP,JSP等。
5、熟悉并能開發(fā)數(shù)據(jù)庫。
6、某些功能需要做算法,這還需要一定得專業(yè)知識(shí),尤其是數(shù)學(xué)基礎(chǔ)。
7、熟悉API接口開發(fā),這里包括你自行開發(fā)API的能力以及調(diào)用第三方API的經(jīng)驗(yàn)。
8、熟悉TCP/IP,socket等網(wǎng)絡(luò)協(xié)議和相關(guān)知識(shí)。
9、熟練掌握App發(fā)布的流程,真機(jī)調(diào)試技巧,證書,打包,上架。 App開發(fā)其實(shí)不一定適合一個(gè)人搞,太費(fèi)勁,除非是一個(gè)單機(jī)版的小應(yīng)用,或者利用現(xiàn)成的app開發(fā)簡(jiǎn)單的第三方應(yīng)用,否則還是讓一個(gè)團(tuán)隊(duì)來完成各自擅長(zhǎng)的領(lǐng)域。
QPython入門
QPython WebApp應(yīng)用框架能夠讓具有Web開發(fā)背景的開發(fā)者快速構(gòu)建Android本地應(yīng)用. 作為開發(fā)者,充分掌握你手中的利器,才能做到庖丁解牛,游刃有余地推動(dòng)項(xiàng)目,接下來,你只需要30分鐘,即可掌握QPython以及WebApp應(yīng)用框架.
QPython的使用
QPython是我們項(xiàng)目的運(yùn)行容器,我們所開發(fā)的項(xiàng)目需要運(yùn)行在QPython之上(當(dāng)然QPython也提供其他不同定位的程序開發(fā)支持,可以在以后的Codelab教程中逐一展示),因此你需要掌握以下使用技巧:
了解QPython的基本功能,能使用開始按鈕以及開發(fā)者工具面板
你需要知道如何把項(xiàng)目上傳或更新到QPython中
你需要掌握如何使用QPython運(yùn)行項(xiàng)目
程序運(yùn)行出錯(cuò),如何查看錯(cuò)誤信息,這個(gè)是作為開發(fā)者必備的技能
有些小的改動(dòng),比起上傳或者更新整個(gè)項(xiàng)目而言,使用自帶的QEdit方便第修改源代碼可能會(huì)更簡(jiǎn)單
如果你想使用第三方庫,你需要知道如何使用QPython來安裝第三方庫
更多詳情可以參考如何使用QPython,以及如何使用QPython開發(fā)第一個(gè)HelloWorld
QPython的WebApp框架
為了讓W(xué)eb開發(fā)者能夠快速上手Android應(yīng)用開發(fā),QPython推出了WebApp框架,它包括兩個(gè)部分 - 基于Bottle框架的可定制本地Web服務(wù)器 - 構(gòu)建于Android系統(tǒng)的WebView容器,
實(shí)現(xiàn)上述兩個(gè)特性,就我們能夠輕松地讓QPython運(yùn)行本地WebApp,避免傳統(tǒng)服務(wù)端WebApp的網(wǎng)絡(luò)傳輸瓶頸問題,獲得更佳用戶體驗(yàn),此外,通過讓Python能作為Backend語言,擁有更強(qiáng)大的包括網(wǎng)絡(luò),圖像,運(yùn)算等多種處理能力. 再加上強(qiáng)大的Python第三方庫支撐,擁有Python/Web開發(fā)經(jīng)驗(yàn)的人即可輕松開發(fā)體驗(yàn)良好的WebApp
更多詳情可以參考QPython WebApp幫助
應(yīng)用設(shè)計(jì)
掌握了QPython基礎(chǔ)使用以及其WebApp框架后,我們可以開始針對(duì)我們的項(xiàng)目目標(biāo)設(shè)計(jì)應(yīng)用系統(tǒng)
應(yīng)用的使用流程分析
輸入:輸入部分及為根據(jù)用戶地理位置
輸出:用戶所在城市的PM2.5數(shù)值以及對(duì)應(yīng)的防護(hù)措施建議
業(yè)務(wù)處理:通過地理位置坐標(biāo)獲得所在城市,通過請(qǐng)求PM2.5接口數(shù)據(jù)源獲得PM2.5數(shù)值,再根據(jù)等級(jí)區(qū)分展示對(duì)應(yīng)的防護(hù)措施建議
關(guān)鍵數(shù)據(jù)來源
地理位置信息:通過QPython的SL4A接口可輕易獲得
根據(jù)地理位置查詢所在城市
PM2.5數(shù)據(jù)來源:根據(jù)PM2.5API可以查詢到所在城市的PM2.5數(shù)值情況
了解QPython的地理位置的SL4A接口,掌握PM2.5的數(shù)據(jù)來源接口,Google的根據(jù)地理坐標(biāo)查詢所在城市
應(yīng)用的交互設(shè)計(jì)
主要為根據(jù)不同的PM2.5展示做不同的預(yù)警展示,并能滿足用戶查看詳情的需求
技術(shù)實(shí)現(xiàn)方面我們選定使用Bootstrap作為前端框架:Bootstrap能根據(jù)設(shè)備的寬度的不同提供適配的界面框架.
推進(jìn)過程以及FAQ
如何開始
在開發(fā)機(jī)器上安裝bootstrap, bottle,象Web開發(fā)一樣去開發(fā), 本地調(diào)試后
以上傳到QPython運(yùn)行目錄/sdcard/com.hipipal.qpyplus/projects/
通過QPython的運(yùn)行按鈕運(yùn)行查看效果
將在個(gè)人電腦上開發(fā)的項(xiàng)目上傳到手機(jī)上有以下方法 - 啟動(dòng)QPython自帶的FTP服務(wù):在設(shè)置中可以看到FTP服務(wù),開啟FTP服務(wù)后會(huì)顯示當(dāng)前偵聽的地址,端口以及帳號(hào),你可以通過FTP客戶端將項(xiàng)目目錄上傳到QPython運(yùn)行目錄 - 如果你的電腦安裝了Android開發(fā)套件,你也可以連接手機(jī)到開發(fā)機(jī)后,執(zhí)行 adb push 本地目錄 /sdcard/com.hipipal.qpyplus/projects/PM2.5 來把項(xiàng)目上傳到QPython的項(xiàng)目目錄
用Web開發(fā)模式開發(fā)QPython WebApp
我們可以使用標(biāo)準(zhǔn)的本地Web開發(fā)流程去推進(jìn)應(yīng)用開發(fā),左側(cè)為瀏覽器, 中間為VIM窗口,右側(cè)我們啟動(dòng)bottle開發(fā)的Web進(jìn)程(QPython內(nèi)建支持Bootle Web框架)
在你的開發(fā)機(jī)上下載Bootstrap, 并配置Python+bottle運(yùn)行環(huán)境,按照QPython WebApp的規(guī)范建立項(xiàng)目目錄
獲得Bootstrap,獲得Bottle
了解QPython中WebApp中文件的結(jié)構(gòu)
上傳到QPython運(yùn)行
你可以將項(xiàng)目上傳到手機(jī)的QPython項(xiàng)目目錄
點(diǎn)擊開始按鈕即可看到PM2.5選項(xiàng)
啟動(dòng)后可以看到運(yùn)行效果
功能開發(fā)
在UI開發(fā)的基礎(chǔ)上進(jìn)行能攻開發(fā),即可得到我們最終的版本,下列為幾個(gè)關(guān)鍵過程的參考代碼:
獲得地理坐標(biāo)
Droid = androidhelper.Android()
location = Droid.getLastKnownLocation().result
location = location.get('network', location.get('gps'))
獲得所在城市示范代碼
ud ?= urllib.urlopen(';sensor=true' % location)
json_result = ud.read()
ud.close()
""" process json_result """
獲得所在城市PM2.5
ud = urllib.urlopen(';token=%s' % (city, token))
json_result = ud.read()
ud.close()
""" process json_result """
根據(jù)PM2.5數(shù)值給出建議
if pm25_quality == '優(yōu)':
...
elif pm25_quality == '良好':
...
elif pm25_quality == '不好':
...
elif pm25_quality == '差勁':
...
else:
...
將關(guān)鍵代碼實(shí)現(xiàn)后輸出即可實(shí)現(xiàn)我們本次的目標(biāo)
你可以獲得PM2.5早知道項(xiàng)目源代碼源代碼
此外,你還想增加什么功能?天氣預(yù)報(bào), PM2.5變化趨勢(shì)圖以及預(yù)測(cè) ?Just do IT !
Python是動(dòng)態(tài)語言,比較簡(jiǎn)潔。Android不直接支持使用python開發(fā)應(yīng)用,需要使用其它中間件或者庫。PythonForAndroid提供了在android平臺(tái)上對(duì)python語言的支持;CLE支持python和java之間的交互,同時(shí)提供了一個(gè)通用的接口,可用于其它多種語言。Wrapandroid project將android類封裝為CLE對(duì)象,從而可以使多種語言可以調(diào)用android類。使用這三個(gè)組件,可以在android平臺(tái)上直接使用python開發(fā)界面應(yīng)用程序。Wrapandroid項(xiàng)目在進(jìn)行中,目前的0.8.5版本已經(jīng)提供了除SQlite,OpenGL之外大部分android類的封裝。完全可以編寫一個(gè)獨(dú)立的python應(yīng)用程序。
22點(diǎn)24分準(zhǔn)時(shí)推送,第一時(shí)間送達(dá)
編輯:技術(shù)君 | 來源:youerning
上一篇:
正文
前言
用 Python 寫安卓 APP 肯定不是最好的選擇,目前用Java和 kotlin 寫的居多,但是肯定也是一個(gè)很偷懶的選擇,而且實(shí)在不想學(xué)習(xí) Java,再者,就編程而言已經(jīng)會(huì)的就 Python與Golang(注:Python,Golang水平都一般),那么久Google了一下Python 寫安卓的 APP 的可能性,還真行。
既然要寫個(gè)APP,那么總得要有個(gè)想法吧。其實(shí)想做兩個(gè)APP來著,一個(gè)是自己寫著好玩的,一個(gè)是關(guān)于運(yùn)維的。關(guān)于運(yùn)維的APP,設(shè)計(jì)應(yīng)該如下
可能長(zhǎng)這樣
然后設(shè)計(jì)應(yīng)該是這樣。
如果覺得可行的話,評(píng)論留言一下你覺得應(yīng)該寫進(jìn)這個(gè)APP的運(yùn)維常用命令吧^_^,筆者暫時(shí)想到的是top,free -m,df –h,uptime,iftop,iotop,如果有什么好的想法就狠狠的砸過來吧,筆者到時(shí)應(yīng)該也會(huì)把這個(gè)寫成一個(gè)項(xiàng)目放到github上,大家一起用嘛,開源才是王道,哈哈。
開發(fā)安卓APP
我們使用kivy開發(fā)安卓APP,Kivy是一套專門用于跨平臺(tái)快速應(yīng)用開發(fā)的開源框架,使用Python和Cython編寫,對(duì)于多點(diǎn)觸控有著非常良好的支持,不僅能讓開發(fā)者快速完成簡(jiǎn)潔的交互原型設(shè)計(jì),還支持代碼重用和部署,絕對(duì)是一款頗讓人驚艷的NUI框架。
因?yàn)榭缙脚_(tái)的,所以只寫一遍代碼,就可以同時(shí)生成安卓及IOS的APP,很酷吧。
本文會(huì)帶大家寫一個(gè)Hello world并瞧一瞧 Python 版的2048的代碼
kivy安裝
環(huán)境說明:筆者在用的是Python2.7.10
這里僅介紹windows平臺(tái)安裝
所有平臺(tái)參考:
更新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
值得注意的是,上面的安卓需要訪問Google,所以請(qǐng)自備梯子,而且kivy.deps.gstreamer這個(gè)包比較大(95MB),可以單獨(dú)本地安裝,
然后就是安裝kivy了
python -m pip install kivy
至此,安裝就已經(jīng)完畢了,值得注意的是64位系統(tǒng)沒有開啟虛擬化支持,在導(dǎo)入kivy的時(shí)候會(huì)報(bào)錯(cuò),如果是64位系統(tǒng)就設(shè)置一下機(jī)器的BIOS,開啟虛擬化支持吧。
注:這里只是kivy的運(yùn)行環(huán)境,這樣我就能直接在windows機(jī)器上直接調(diào)試了,怎么將代碼編譯成APK文件我們會(huì)在后面講到。
如果kivy在python中應(yīng)該就能導(dǎo)入了。
按照世界慣例,我們”hello”一下吧。
新建一個(gè).py文件
from kivy.app import Appfrom kivy.uix.button importButton
class TestApp(App):
def build(self):
return Button(text='Hello,kivy')
TestApp().run()
運(yùn)行
然后會(huì)彈出一個(gè)框,大概如下,點(diǎn)擊”hello,kivy”會(huì)變顏色
點(diǎn)擊窗口并按“F1”會(huì)這個(gè)窗口的一些屬性
然后我們回過頭看一看代碼。
##導(dǎo)入App,然后讓TestApp這個(gè)類繼承
from kivy.app import App##導(dǎo)入一個(gè)Button,運(yùn)維有這個(gè)button,當(dāng)你點(diǎn)擊的時(shí)候才會(huì)有所反應(yīng)
from kivy.uix.button
importButton
###定義類,名字必須是xxxAppclass TestApp(App):
###build一個(gè)Button
def build(self):
###返回一個(gè)Button,文字內(nèi)容是“Hello,kivy”
return Button(text='Hello,kivy')
##運(yùn)行,因?yàn)槔^承了App,所以才有的run這個(gè)方法TestApp().run()
上面就是我們的Hello了
在windows上運(yùn)行當(dāng)然沒有什么太大的意義,怎么在安卓手機(jī)上運(yùn)行才是我們想要的,
這時(shí)我們需要一個(gè)編譯環(huán)境。
官方說明的環(huán)境,如下:
You’ll need:
A linux computer or a virtual machine
Java
Python 2.7 (not 2.6.)
Jinja2 (python module)
Apache ant
Android SDK
雖然官方提供了一個(gè)似乎還不錯(cuò)的虛擬機(jī)鏡像,但是還是有很多內(nèi)容需要翻出去,所以筆者在這里提供相對(duì)而言更加完善的鏡像
下載地址:
注:virtualbox,vmware需自行下載
root密碼:kivy
默認(rèn)使用賬戶kivy,密碼:kivy123
當(dāng)然你也可以下載官方鏡像,因?yàn)榈谝淮尉幾g需要去國(guó)外下一大堆東西,所以請(qǐng)自行去下載。
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
在筆者提供的鏡像里,桌面上有一個(gè)dev_and,只要將上面寫的代碼,放入這個(gè)文件夾即可(當(dāng)然也可以在其他目錄,后面會(huì)講到)。
在公眾號(hào)Python人工智能技術(shù)后臺(tái)回復(fù)“面試”,獲取騰訊Python面試題和答案。
cd Desktop/dev_and/
初始化會(huì)在當(dāng)前目錄生成一個(gè)buildozer.spec文件 用于配置生成的apk相關(guān)信息
buildozer init
###修改buildozer.spec文件
vi buildozer.spec
至少修改下面三項(xiàng)
# (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更詳細(xì)的相關(guān)參數(shù)配置參考:
buildozer命令會(huì)在當(dāng)前文件夾創(chuàng)建一個(gè)bin,該文件夾里面有我們想要的apk文件
helloapp-1.2.0-debug.apk
helloapp-1.2.0-debug.apk
安裝以后是這樣:
話說在編譯的時(shí)候可能出現(xiàn)空間不足的情況,根據(jù)虛擬機(jī)的不同(vmware或virtualbox)自行擴(kuò)容吧。
最后我們來瞧瞧簡(jiǎn)易版Python開發(fā)的2048這個(gè)游戲的源代碼。
代碼:
先看效果圖:
試玩了一下,還是蠻流暢的,有興趣的可以下載玩一下
下載地址:
這個(gè)游戲代碼雖然不長(zhǎng),但是還是蠻占篇幅的,所以簡(jiǎn)要的說明一下流程。
主要由三部分組成,一是素材,圖片音頻之類的文件,二是Python代碼,三是kv文件,這個(gè)kv文件有點(diǎn)像 html 中的css。
Python代碼的文件名一般命名為 main.py
然后一定有一個(gè)叫做 XXXApp 的類,并繼承 App。
比如該類叫做GameApp,那么該目錄下的kv文件則必須為Game,如上圖所示,如果不是,那么kv文件中的一些設(shè)定就不會(huì)生效。
比如設(shè)定一個(gè)標(biāo)簽
Label:
id: time
text: 'xxxx'
font_size: 60
id為time,text文本內(nèi)容為'xxxx',然后字體為60
好吧,點(diǎn)到為止吧,不過似乎什么都沒點(diǎn)到~~~
你還有什么想要補(bǔ)充的嗎?
你在看嗎?一起成長(zhǎng)
本文標(biāo)題:python開發(fā)android應(yīng)用,python 開發(fā)android
標(biāo)題路徑:http://muchs.cn/article20/phepco.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、定制網(wǎng)站、軟件開發(fā)、面包屑導(dǎo)航、品牌網(wǎng)站設(shè)計(jì)、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)