我一直無法找到關於如何從Android應用程序使用雲存儲的具體文檔。從Android訪問雲存儲
我確實遇到了Google Cloud SDK中的this client library,但遇到了很多很多問題,但尚未解決問題。
添加以下代碼在上面的鏈接推薦:
的build.gradle:
compile group: 'com.google.cloud', name: 'google-cloud-storage', version: '0.9.3-beta'
我加入一些簡單的代碼,雖然這不是真正相關的這個問題,因爲我還沒有能夠運行我的應用程序與上述依賴項添加:
在一個活動時間:
Storage storage = StorageOptions.getDefaultInstance().getService();
Page<Bucket> buckets = storage.list();
Iterator<Bucket> bucketIterator = buckets.iterateAll();
while (bucketIterator.hasNext()) {
Bucket bucket = bucketIterator.next();
Log.d(TAG, "Bucket name: " + bucket.getName());
}
解決的依賴問題無數(與喬達,Netty的,DuplicateFileException
「從gradle這個S等衝突),我是能夠建立項目,儘管下面的錯誤後:
Warning:WARNING: Dependency org.apache.httpcomponents:httpclient:4.0.1 is ignored for debug as it may be conflicting with the internal version provided by Android.
Warning:WARNING: Dependency org.json:json:20151123 is ignored for debug as it may be conflicting with the internal version provided by Android.
然後我可以嘗試運行,這將失敗,幾百個錯誤,其中大部分看起來像下面這樣:
Error:warning: Ignoring InnerClasses attribute for an anonymous inner class
Error:(com.google.inject.internal.cglib.reflect.$FastClassEmitter$3) that doesn't come with an
Error:associated EnclosingMethod attribute. This class was probably produced by a
Error:compiler that did not target the modern .class file format. The recommended
Error:solution is to recompile the class from source, using an up-to-date compiler
Error:and without specifying any "-target" type options. The consequence of ignoring
Error:this warning is that reflective operations on this class will incorrectly
Error:indicate that it is *not* an inner class.
不少這些之後,具有不同的類名,錯誤的末尾包含這樣的:
故障處理「的javax /交易/ HeuristicCommitException.class」:
不明智或當 未構建核心庫時,錯誤地使用核心類(java。*或javax。*)。
這通常是由於在使用IDE(如Eclipse)時,無意中在您的應用程序的項目中包含了一個核心庫文件 。如果 你確定你不是故意定義一個核心類,那麼這個 是最可能的解釋。
但是,您可能實際上正在嘗試在覈心 名稱空間中定義一個類,該名稱空間的來源可能來自例如 非Android虛擬機項目。這肯定不會是 的工作。至少,它會危害您的應用程序與未來版本的平臺的兼容性。它也常常是有問題的合法性。
如果你真的打算建立一個核心庫 - 這是隻有 適合作爲創建一個完整的虛擬機分配, 而不是編譯應用程序的一部分 - 然後使用 「--core庫」選項來抑制此錯誤消息。
如果你繼續使用「--core庫」,但事實上是構建 應用程序,然後諒解,您的應用程序仍然會失敗 建設或運行,在某些時候。請爲憤怒的客戶 做好準備,例如,他們發現您的應用程序在他們升級其操作系統後不再起作用 。你將被責怪這個 的問題。
如果您正在使用恰巧位於核心 包中的某些代碼,那麼最簡單的安全替代方法是將該代碼重新包裝爲 。也就是說,將有問題的類移動到您自己的包 名稱空間中。這意味着他們永遠不會與系統類核心 發生衝突。 JarJar是一個可以幫助你完成這項工作的工具。 如果您發現自己無法做到這一點,那麼這表明您所走的路徑最終會導致疼痛,痛苦,悲傷,悲傷和悲傷。
幾個問題:
- 這是客戶端庫從我的Android應用程序訪問我的谷歌雲存儲的正確方法?
- 是否有我不應該嘗試從移動應用程序訪問雲存儲的原因?例如,如果更好的體系結構是對我的App Engine應用程序(使用Cloud Enpoints)進行REST API調用並將其傳遞給媒體對象,然後讓App Engine應用程序訪問並將媒體存儲在Cloud Storage中,然後再最終返回結果移動應用程序?
- 如果我正確訪問雲存儲,使用提到的客戶端庫,這些錯誤意味着什麼,以及它修復了什麼?
你的用例是什麼?正確的訪問方法取決於你想要做什麼。 – BrettJ
在這一點上,我會解決任何類型的連接到我的雲存儲。如代碼片段所示,我只是試圖列出存儲桶名稱。我的「最終」用例是上傳/下載視頻。 – Orbit