為什么寫這篇博客,就是為了記錄我在寫Tensorflow serving java雲端識別客戶端過程中遇到的大坑。怎么說呢,就是一套完整的Java客戶端寫好之后,在Android上編譯,你在Logcat里面查看細節的時候,因為Android開發編譯和Eclipse編譯不同。Eclipse等其它IDE只需要代碼寫好,直接編譯就能看出結果,但是Android需要編譯,安裝apk文件,從日志中看問題,特別遇到我這個開發設備,那是一個坑啊,只要代碼沒有運行順利,他就會直接閃退,在我通信中返回的那個函數語句就是過不了,日志也沒有明確提示,畢竟我的代碼就是對的。。
哈哈,我一開始返回調試了好久,正如我前篇博客寫的三個版本的客戶端,其中第二個就是為了驗證Android通信是否原理是對的,,一步步我解析出了每一步每一行語句的輸出結果,真找不出問題,后來看了一排你Android開發的一排文檔,顯示可能是設備網絡和軟件網絡權限的問題,才恍然大悟。
言歸正傳,就是說,某些開發設備的網絡以及各個軟件都有網絡設置權限,如果開發過程中,沒有聲明網絡權限問題,你的apk文件在你的設備上安裝之后就不可以調用你的設備中的網絡,當然啦對於需要遠端網絡識別來說,肯定不通啦,所以就有了我前面那個request語句過不了的問題。
解決如下:打開工程,找到配置文件AndroidManifest.xml文件,在結尾 </manifest>前面加上一行聲明語句如下:
<uses-permission android:name="android.permission.INTERNET"/>
再重新編譯安裝,就沒有問題了。這里我思考了一下,希望看到我這篇博客的小伙伴在以后Android開發網絡通信中,千萬不要忘記加網絡聲明,否則可能會坑你很久,哈哈哈
下面是一些其它權限配置文件,需要的自己瞅瞅,,嘻嘻
1、android.permission.ACCESS_CHECKIN_PROPERTIES
允許讀寫訪問”properties”表在 checkin數據庫中,改值可以修改上傳( Allows read/write access to the “properties” table in the checkin database, to change values that get uploaded)
2、android.permission.ACCESS_COARSE_LOCATION
允許一個程序訪問CellID或WiFi熱點來獲取粗略的位置(Allows an application to access coarse (e.g., Cell-ID, WiFi) location)
3、android.permission.ACCESS_FINE_LOCATION
允許一個程序訪問精良位置(如GPS) (Allows an application to access fine (e.g., GPS) location)
4、android.permission.ACCESS_LOCATION_EXTRA_COMMANDS
允許應用程序訪問額外的位置提供命令(Allows an application to access extra location provider commands)
5、android.permission.ACCESS_MOCK_LOCATION
允許程序創建模擬位置提供用於測試(Allows an application to create mock location providers for testing)
6、android.permission.ACCESS_NETWORK_STATE
允許程序訪問有關GSM網絡信息(Allows applications to access information about networks)
7、android.permission.ACCESS_SURFACE_FLINGER
允許程序使用SurfaceFlinger底層特性 (Allows an application to use SurfaceFlinger’s low level features)
8、android.permission.ACCESS_WIFI_STATE
允許程序訪問Wi-Fi網絡狀態信息(Allows applications to access information about Wi-Fi networks)
9、android.permission.ADD_SYSTEM_SERVICE
允許程序發布系統級服務(Allows an application to publish system-level services).
10、android.permission.BATTERY_STATS
允許程序更新手機電池統計信息(Allows an application to update the collected battery statistics)
11、android.permission.BLUETOOTH
允許程序連接到已配對的藍牙設備(Allows applications to connect to paired bluetooth devices)