如何使用在 Android Studio 中创建的应用程序将文件上传到 Google Cloud Storage?

How do you upload a file using an app created in Android Studio to Google Cloud Storage?

有人愿意花时间逐步记录这个看似简单的任务吗?

我是 java 和最新的 Google Cloud Platform API 的新手。我不知道如何完成从 Android 应用程序将文件上传到 Google Cloud Platform 的简单任务。大多数示例都是三年前的,或者不是端到端的。无论哪种方式,它们都会在某个时候神秘地失败,以至于我无法弄清楚如何进行。例如,异常 I'm getting with using the simple-cloud-storage demo 是 "null." 我什至不知道是什么生成了 "null."

到目前为止,我只通过使用端点教程成功地完成了一些事情https://cloud.google.com/appengine/docs/python/endpoints/getstarted/clients/android/但是在该演示中没有谈到交换文件。

完整的代码示例是here. This code example was created from the Google HelloEndpoints tutorial。这可能是在 Android 中使用 GCS 的糟糕实现,但它的工作方式与当前可用的大多数示例不同。

实现步骤:

  1. Create a GCS bucket with service account credentials.
  2. 获取 .p12 私钥并将其放入 src/main/res/raw。您必须删除 .p12 扩展名并将 - 替换为 _。你 也需要密码,所以请随身携带。
  3. 在 MainActivity.java 中查看 public void onClickFileChooser(View view)。它所做的是调用一个 class 允许你 导航并 select 一个文件。有一些 commented-out 代码 检查服务器是否有上传 URL 以防你想尝试 使用 blobstore API 存储文件。我想不通, 所以我尝试了 GCS。 GCS 的东西是下一段代码。你会注意到 这是一个两步过程。还有一些globals defined for GCS 因为我不是一个好的程序员。
  4. 第一步是获取 "Google credential." code 使用 keystore.load(getResources().openRawResource(R.raw.thomasmhardy_ebc515c808a6 加载私钥) 并做一些其他的事情。您可能需要更改密钥 密码。查找 "notasecret" 并将其替换为您的密码。
  5. 文件的实际存储空间为next. You'll see the URI is set per the Google example。接下来,我设置了一个异步 任务,因为 Android 不希望您在网络上做任何事情 在主线程中。该任务首先刷新 GoogleCredential。 一旦完成,它使用 android-async-http 到 post 文件到 GCS。请注意,授权的 header 连接“Bearer " 在访问令牌之前。上传文件。
  6. 所有这些都需要一些依赖项。查看 gradle
  7. 我也不得不enable multiDex.

注意:我删除了私钥的内容"thomasmhardy_ebc515c808a6."