<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          在你的 Android 手機(jī)上運(yùn)行 Golang 程序

          共 1950字,需瀏覽 4分鐘

           ·

          2021-10-12 14:03


          點(diǎn)擊關(guān)注公眾號(hào),Java干貨及時(shí)送達(dá)

          在我們?nèi)粘i_發(fā)中,運(yùn)行一個(gè)服務(wù),都是在 shell 或 cmd 下執(zhí)行命令,像是使用go run main.go直接編譯運(yùn)行,或是go build編譯生成可執(zhí)行文件后,以./xxx方式運(yùn)行。

          Go 支持交叉編譯生成各平臺(tái)的可執(zhí)行文件。那有沒有想過如何把你寫的程序編譯后跑在 Android 上呢。


          廢話少說,流程分解:



          接下來逐一擊破。

          main.go 中創(chuàng)建了一個(gè) http 服務(wù),監(jiān)聽 8080 端口,訪問/路由時(shí),返回預(yù)設(shè)的 JSON 文本。

          package?main

          import?(
          ??"github.com/gin-gonic/gin"
          ??"log"
          ??"net/http"
          )

          func?main()?{
          ??r?:=?gin.Default()
          ??r.GET("/",?func(c?*gin.Context)?{
          ????c.JSON(http.StatusOK,?gin.H{
          ??????"msg":?"hello?world",
          ????})
          ??})
          ??log.Fatalln(r.Run(":8080"))
          }


          第一步,編譯,簡單。Android 都是 linux arm64 (arm) 架構(gòu),如果不確定,可以進(jìn)入 Android shell 里查看,下面再講。

          本文環(huán)境為 win10+cmd 。交叉編譯生成適用于 linux arm64 的二進(jìn)制文件待用。

          set?CGO_ENABLED=0
          set?GOOS=linux
          set?GOARCH=arm64
          go?build?-o?server?main.go


          第二步,把編譯生成的 server 文件拷貝到 Android 的/data/local/tmp/目錄下。

          第三步,進(jìn)入到 Android 的/data/local/tmp/目錄,執(zhí)行./server啟動(dòng)服務(wù)。

          完成結(jié)束。





          ???哈哈哈,別急。第二步和第三步其實(shí)需要借助一個(gè)工具。

          那就是 Android 調(diào)試橋 (adb) ,adb 命令就可用于執(zhí)行各種設(shè)備操作(例如安裝和調(diào)試應(yīng)用),并提供對(duì) Unix shell(可用來在設(shè)備上運(yùn)行各種命令)的訪問權(quán)限。Android 開發(fā)者就對(duì)這玩意很熟了,因?yàn)檠b完 Android SDK 會(huì)默認(rèn)集成了 adb 工具。但是我們沒有的話,就得單獨(dú)安裝了。

          可以到http://adbdownload.com/進(jìn)行下載


          同樣以 win10 為例,下載后解壓到任意目錄下,如:


          加到環(huán)境變量中,方便我們隨時(shí)隨地使用。


          驗(yàn)證是否安裝成功:


          安裝完成 adb 后,還需要使用 adb 連接上我們的 Android 手機(jī)。連接前需要開啟手機(jī)的開發(fā)者模式的 USB 調(diào)試選項(xiàng),具體開啟方式自行機(jī)型百度。



          使用 USB 連接電腦和手機(jī)后,此時(shí)手機(jī)會(huì)提示是否允許 USB 調(diào)試


          允許確定即可。回到電腦終端,使用 adb devices 可查看已連接的設(shè)備列表


          回歸我們的正題了。繼續(xù)第二步,借助 adb 拷貝 server 文件到 Android 內(nèi)的/data/local/tmp/目錄下。

          adb?push?server?/data/local/tmp/



          第三步,進(jìn)入到 Android 的 shell 終端,到/data/local/tmp/目錄,執(zhí)行./server啟動(dòng)服務(wù)。

          adb?shell
          #?以下命令在?Android?shell中執(zhí)行
          cd?/data/local/tmp
          chmod?755?server
          ./server



          到這,Android 就跑起了我們用 Go 編寫的程序了。可以使用瀏覽器訪問:






          總結(jié):

          ????????將 go 代碼編譯成 Android 平臺(tái)的可執(zhí)行文件(linux,arm64),可通過adb shell getprop ro.product.cpu.abi確定具體系統(tǒng)架構(gòu)。利用 adb 工具將可執(zhí)行文件拷貝到 Android 的/data/local/tmp/下并賦予權(quán)限,最后進(jìn)入到 shell 運(yùn)行程序。


          1、靈魂一問:你的登錄接口真的安全嗎?

          2、HashMap 中這些設(shè)計(jì),絕了~

          3、在 IntelliJ IDEA 中這樣使用 Git,賊方便了!

          4、計(jì)算機(jī)時(shí)間到底是怎么來的?程序員必看的時(shí)間知識(shí)!

          5、這些IDEA的優(yōu)化設(shè)置趕緊安排起來,效率提升杠杠的!

          6、21 款 yyds 的 IDEA插件

          7、真香!用 IDEA 神器看源碼,效率真高!

          點(diǎn)分享

          點(diǎn)收藏

          點(diǎn)點(diǎn)贊

          點(diǎn)在看

          瀏覽 98
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产区视频在线播放 | 久久在线视频黄色 | 欧美亚洲综合网 | 欧美一级一区 | 亚洲综合免费观看高清完整版在线 |