我是初學(xué)者小白劫谅,所以很多看法不深,理解也不夠透徹。但是很適合小白們一起從低角度往高處探索捏检。文中有錯(cuò)誤的荞驴,感謝指正,一起進(jìn)步贯城。
趁著假期做一個(gè)Flutter的地圖功能熊楼,因?yàn)楹蠖诉x用了百度地圖,所以前端沒(méi)得挑能犯。找了遍插件鲫骗,并沒(méi)有現(xiàn)成可用的。(不過(guò)發(fā)現(xiàn)了百度官方也自開發(fā)Flutter插件悲雳,目前功能只有一個(gè)獲取本地位置信息挎峦,后期會(huì)繼續(xù)增加吧?很期待:掀啊)
1.Application、Activity透典、Service和Context之間的構(gòu)建關(guān)系:
參考帖子:https://blog.csdn.net/sjm19901003/article/details/53128375
這個(gè)實(shí)際上跟功能之間沒(méi)太大關(guān)系晴楔,只是我按照個(gè)人摸索的過(guò)程來(lái)寫。
當(dāng)對(duì)一個(gè)“領(lǐng)域/知識(shí)塊”完全不懂的時(shí)候峭咒,360°的方向都不確定的話税弃。先了解基礎(chǔ)概念,有利于你確定自己的摸索方向凑队。
2.Flutter 顯示百度地圖 Native 組件
參考帖子:http://www.reibang.com/p/742b15d38404
中間我跳過(guò)了幾十则果,上百個(gè)帖子的摸索過(guò)程。這個(gè)才是關(guān)鍵能夠真正做事的參考漩氨。
3.百度地圖顯示網(wǎng)格問(wèn)題
因?yàn)榘俣鹊膕dk還算是很完善的西壮,所以一旦出問(wèn)題,都會(huì)有對(duì)應(yīng)的報(bào)錯(cuò)提示叫惊。
(1).? 權(quán)限問(wèn)題
我是使用flutter插件:permission_handler款青,來(lái)解決安卓的動(dòng)態(tài)授權(quán)問(wèn)題,用法簡(jiǎn)單而且設(shè)計(jì)合理霍狰。
(2). 百度sdk報(bào)錯(cuò)_SHA1和包名驗(yàn)證失敗
a.? 配置簽名:
這個(gè)錯(cuò)誤直接來(lái)看抡草,就是簽名有問(wèn)題。怎么查看SHA1碼和包名蔗坯,這里不多說(shuō)康震,網(wǎng)上有極其多的方法,百度Sdk開發(fā)指南里也有宾濒。沒(méi)那么復(fù)雜腿短,也沒(méi)那么麻煩。按照流程操作就是對(duì)的。
實(shí)在不放心答姥?跟我一樣铣除,flutter打包后,把a(bǔ)pk反過(guò)來(lái)解SHA1碼不就行了鹦付?
b. debug和release簽名的設(shè)置:
參考帖子:https://www.daimajiaoliu.com/daima/4858f130f900409#heading-1
紅色框框基本就是帖子講解的那樣尚粘。
藍(lán)色框框見下圖:release標(biāo)簽里好像是自己設(shè)置了。所以debug標(biāo)簽里面敲长,箭頭指向的位置郎嫁,是我多設(shè)置的一個(gè)參數(shù)。
(3). 百度sdk報(bào)錯(cuò)_網(wǎng)絡(luò)訪問(wèn)問(wèn)題
uid: -1 appid -1 msg: httpsPost failed,IOException:Unable to resolve host "api.map.baidu.com": No address associated with hostname
這一步我是哭笑不得祈噪,一開始老是和問(wèn)題(2)混淆泽铛,導(dǎo)致浪費(fèi)很多時(shí)間。仔細(xì)閱讀后辑鲤,發(fā)現(xiàn)是不能連接到“api.map.baidu.com”盔腔。
我打開模擬器的chrome瀏覽器,發(fā)現(xiàn)不能上網(wǎng)月褥。查看手機(jī)的dns是10.0.2.3(默認(rèn)的)弛随,和家里wifi不一樣,所以不能上網(wǎng)也正常宁赤,之前居然沒(méi)發(fā)現(xiàn)這個(gè)問(wèn)題Rㄍ浮!决左!
終端執(zhí)行:adb shell? 和? getprop愕够,就可以查看所有的屬性參數(shù)了。(window小伙伴自行百度佛猛,這個(gè)沒(méi)多大差別惑芭。如果你有多個(gè)設(shè)備,記得自己選好設(shè)備挚躯。)
在里面找到這一項(xiàng)强衡,就是你的dns參數(shù)。有些人是net.dns1码荔,我的是net.eth0.dns1漩勤。這個(gè)沒(méi)關(guān)系,只是等下指令稍微改動(dòng)就行缩搅。
修改dns指令:setprop net.eth0.dns1 192.168.2.1
后面的192.168.2.1是我自己的dns越败,這個(gè)根據(jù)自己的情況來(lái)填寫。不懂的百度下怎么查看自己的dns硼瓣。
雖然提示設(shè)置失敗究飞,但是回到模擬器一看置谦,地圖已經(jīng)顯示出來(lái)了。
嘿嘿亿傅,在flutter設(shè)定多大的區(qū)域媒峡,地圖就是多大的區(qū)域。用起來(lái)就很方便了葵擎。
4. 總結(jié)
過(guò)程十分痛苦谅阿,因?yàn)閷?duì)flutter不是很熟悉介粘,對(duì)Android原生更是了解很少拍皮。所以自己就像突然不能講話,被丟到一個(gè)陌生的環(huán)境愚战,卻要我去找一個(gè)人盯串。所以細(xì)心很重要氯檐,一定要看清楚錯(cuò)誤提示,不要錯(cuò)過(guò)每一個(gè)細(xì)節(jié)和可能性体捏。
幸好最后解決了問(wèn)題冠摄,開心~
其實(shí)如果你仔細(xì)閱讀過(guò)百度官方的文檔,會(huì)發(fā)現(xiàn)里面有關(guān)于地圖的生命周期管理几缭。然后在這里面沒(méi)有提及到耗拓,這一點(diǎn)雖然沒(méi)提,但不可或缺奏司,小伙伴就自行思考吧。
最后還有一點(diǎn)樟插,其實(shí)我的初衷是想實(shí)現(xiàn)一個(gè)百度地圖的plugin韵洋,但是苦于能力有限,對(duì)Android的不熟悉黄锤,最后折戟搪缨。我不得已另起項(xiàng)目,然后重新實(shí)現(xiàn)地圖sdk接入鸵熟。經(jīng)過(guò)這次對(duì)于這些有更多更全面的認(rèn)知后副编,有空會(huì)再次研究flutter 插件的開發(fā),共勉流强,奧利給1越臁!打月!