2014-10-11 64 views
2

我有一個在Cordova 3.4上運行的Phonegap應用程序。 Android的開發版本最近停止連接到任何服務器。我檢查了我們的白名單,並且必要的域名可以訪問。我甚至嘗試將所有域名列入白名單Android Phonegap應用程序未連接到Internet

<access uri="*" subdomains="true" /> 

但我仍然沒有運氣。對於這個問題的其他原因的任何建議將不勝感激。非常感謝。

回答

1

A)Standard stuff;做以下所有

  1. 添加白名單插件:

$ cordova plugin add cordova-plugin-whitelist

  • 在你config.xml中,添加以下內容:
  • <access origin="*" /> 
    <allow-intent href="http://*/*" /> 
    <allow-intent href="https://*/*" /> 
    <allow-navigation href="http://*/*" /> 
    <allow-navigation href="https://*/*" /> 
    
    1. add a Content Security Policy的index.html,這樣的事情:
    <meta http-equiv="Content-Security-Policy" content="default-src *; script-src * 'unsafe-eval' 'unsafe-inline'; connect-src *; img-src *; style-src * 'unsafe-inline' ; media-src *">  
    

    B)也許這也

    如果您的應用程序仍然不能連接到互聯網在Android設備上這一點,我建議刪除並重新添加Android平臺

    $ cordova platform rm android 
    $ cordova platform add android 
    

    C)HTTPS和非調試模式

    如果您正在使用HTTPS,如果你在你的AndroidManifest.xml中android:debuggable="false"你可以得到這個問題...請嘗試使用HTTP,而不是HTTPS來看看這個是這樣的。

    我希望有幫助 - 祝你好運!

    +0

    喜:

    現在我知道這個問題,我可以簡單地通過上傳私鑰,公鑰和鏈證書到我的ELB修復它。我仍然使用Android 3.6.4,因此無法使用白名單插件。當我更改'android:debuggable =「true」'我可以連接,否則,我無法連接到我的HTTPS服務器。任何想法爲什麼這個組合(HTTPS +'android:debuggable =「true」')不工作?任何其他解決方法(除了開始更新到更新的Android等)? – 2016-03-20 12:10:24

    +0

    即使更新到android平臺4.1.1並添加白名單插件(並更新其他插件),仍然無法正常工作。查看添加的診斷Android SSL信任問題和丟失的中間/鏈證書的答案。 – 2016-03-21 15:34:19

    0

    因此,在將我的頭撞過這幾天並遵循上述所有建議(包括更新我的android平臺和插件到新版本)之後,我能夠診斷出這個問題。

    TL; DR; 這是在我的負載均衡器上沒有正確設置中間證書的問題。一旦上傳鏈式證書,它似乎運作良好。

    長的故事:

    首先,讓我解釋一下我的設置 - 我在HTTPS工作和我的應用程序背後AWS彈性負載均衡(ELB)主辦。我傳遞了一些敏感信息,所以我無法在HTTP中工作,而且我也不想使用公開所有代碼的android:debuggable="true"(並非確定的攻擊者無法通過簡單的方法找到方法?)。

    爲了診斷問題,我正在使用logcat(adb)在應用程序運行時查看設備的日誌。這是一個有點棘手,但這裏有我也跟着看,這是問題的步驟:

    • 運行adb logcat -c清潔緩衝區 - 使得它更容易再次按照
    • 運行adb logcat並進行搜索,找到應用程序的進程ID。我實際上是指導輸出到一個文件,並使用baretailpro查看日誌和搜索我的應用程序名稱(反向命名空間,如com.companyname.appName。我認爲可以使用grep。您正在尋找像如下:

      I/ActivityManager( 894): Start proc 11461:com.companyName.appName/u0a110 for activity com.companyName.appName/.MainActivity

    • 注意,這是其中活動管理啓動您的應用程序消息中包含應用程序的進程ID(11461以上)
    • 下一個,做你的日誌另一個搜索,這時候找進程ID,我只是將目光轉向了其他方面,因爲這是一個證書問題,您可以查找(例如11461. * cert)。這是告訴您關於證書問題的線路:

      I/X509Util(11461): Failed to validate the certificate chain, error: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.

    在此之後,很容易給谷歌它(與上面的文字),並發現這個錯誤與web視圖不信任/能夠驗證您的證書做。解釋可以在這個鏈接找到android SSL - certificate not trustedCreate ELB certificate with Chain

    相關問題