編寫qt到安卓手機(jī)的一些小心得
時(shí)隔一段時(shí)間,自己負(fù)責(zé)的APP已經(jīng)有了落幕,從開始的不懂到現(xiàn)在的約略感悟,也算是積累了一些小經(jīng)驗(yàn),
剛開始寫了一些很淺顯的心得體會(huì),現(xiàn)在回頭來看還是有點(diǎn)小價(jià)值的,在當(dāng)時(shí)因?yàn)檫@些問題也是費(fèi)了不少時(shí)間,
好了。廢話不多說!
qt使用jni與安卓手機(jī)系統(tǒng)的交互,對(duì)于很多不會(huì)java的人來說,很多人可能會(huì)寫jni交互,而不是直接用java來與手機(jī)交互嗎,所以使用jni交互的最大坑是容易導(dǎo)致程序崩潰,在我這邊的實(shí)例是,請(qǐng)求查看并選擇系統(tǒng)相冊(cè)和照相結(jié)合后,反復(fù)3次左右,程序就會(huì)莫名死掉,后來改用原生java代碼寫,不僅流暢很多,一點(diǎn)問題都沒有,所以與手機(jī)交互能寫java就直接用原生java。
返回按鍵的退出程序問題,很多人都是監(jiān)控qt的back返回按鍵,然后調(diào)用Qml的Qt.quit退出程序,根據(jù)我之前的測(cè)試,
Qt的back按鍵我沒監(jiān)控成功,而是改寫的java返回按鍵的監(jiān)控,當(dāng)調(diào)用qml的Qt.quit退出程序的時(shí)候明顯出現(xiàn)閃退和程序內(nèi)存
釋放不徹底的打印,給用戶一種退出很奇怪的感覺,至于是為什么,我也沒去深究,而是改用了java的退出程序方式System.exit(0);
也就沒出現(xiàn)閃退的感覺。
至于上面說的基本都是跟手機(jī)交互的問題,所以也充分說明了,java能解決的,qt還不一定能完美解決,這里要說一下,我之前出現(xiàn)問題的開發(fā)版本是Qt5.6,后面改成了5.9,不清楚高版本有沒有優(yōu)化我現(xiàn)在記錄的問題,因?yàn)槲乙恢笔褂胘ava原生交互,所以更好的體驗(yàn)出原生交互在哪個(gè)版本都不受影響。
除了手機(jī)交互,還有一點(diǎn)比較重要的就是手機(jī)權(quán)限,在開發(fā)相機(jī)功能時(shí),需要打開添加android.permission.CAMERA,添加權(quán)限的地方再 AndroidManifest.xml ,這個(gè)文件生成在開發(fā)qt中是很重要的,默認(rèn)是沒有的,需要自己手動(dòng)創(chuàng)建,創(chuàng)建的方式等下再說,先說權(quán)限的添加地方就是在這這個(gè)xml文件中的General中的Permission一欄中,當(dāng)然也可以在XML Source中手動(dòng)添加代碼,添加方式如下: 。根據(jù)網(wǎng)上的傳言說安卓6.0后面要使用動(dòng)態(tài)權(quán)限,當(dāng)然動(dòng)態(tài)權(quán)限我沒有去做,至于做的方法還是一樣,不過是用java代碼來寫,根據(jù)上面方法添加權(quán)限目前為止我是沒有遇見什么問題。下面開始說下如何創(chuàng)建 AndroidManifest.xml 文件,創(chuàng)建的方式很簡(jiǎn)單只要點(diǎn)擊下圖的按鈕,一直默認(rèn)下一步操作即可,
如圖所示:
好了,基本上只要掌握這些東西,并結(jié)合我之前的文章的要點(diǎn),使用Qt開發(fā)安卓基本沒有問題,至于實(shí)現(xiàn)途中遇見的難點(diǎn),可以查看我其他的詳細(xì)博客記錄。這里只記錄如何去做,避免哪些方式走彎路。