Android 애플리케이션에서 Cloud Storage를 사용하는 방법에 대한 구체적인 문서를 찾을 수 없었습니다.Android에서 Cloud Storage에 액세스
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());
}
종속성 문제의 수많은 (등 Joda, 인 Netty, Gradle을에서 DuplicateFileException
년대와 충돌) 나는 아래의 오류가이기는하지만, 프로젝트를 빌드 할 수 있었다를 해결 한 후 :
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.
,
문제 처리 "javax의/거래/HeuristicCommitException.class": 다양한 클래스 이름을 가진 사람들의 상당수 후
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.
이 오류의 끝이 포함
일리노이 조언 또는 코어 라이브러리를 빌드하지 않을 때 코어 클래스 (java. * 또는 javax. *)의 잘못된 사용.
IDE (예 : Eclipse)를 사용할 때 실수로 응용 프로그램 프로젝트의 에 코어 라이브러리 파일이 포함 된 경우가 많습니다. 코어 클래스를 고의적으로 정의하지 않았다면이 이 무슨 일이 일어날 지 가장 잘 설명 할 수 있습니다.
그러나 실제로 네임 스페이스 (예 : 비 Android 가상 시스템 프로젝트)에서 클래스를 정의하려고 시도했을 수 있습니다. 이것은 가장 확실하게 작품이 아닐 것입니다. 최소한 플랫폼의 후속 버전 인 과의 앱 호환성을 위태롭게 만듭니다. 또한 종종 의문의 의문이있다 합법성.
당신은 정말 핵심 라이브러리 구축하려는 경우 - 다음 "--core 라이브러리"를 사용 - 전용 적절한 전체 가상 머신 배포, 응용 프로그램을 컴파일 반대로 을 만드는 일환으로 옵션을 사용하여이 오류 메시지를 표시하지 않습니다.
"--core-library"를 사용했지만 사실 응용 프로그램을 빌드하는 경우 응용 프로그램이 빌드하거나 실행하는 데 어느 시점에서 여전히 실패하는 것을 미리주의해야합니다. 예를 들어, 고객이 운영 체제를 업그레이드 한 후에 응용 프로그램이 작동하지 않는 것을 발견하면 화난 고객 에 대비하십시오. 이 문제에 대해 책임을 져야합니다.
코어 패키지에있는 일부 코드를 합법적으로 사용하는 경우 코드를 리 패키징하는 것이 가장 안전한 대안입니다. 즉, 해당 클래스를 자신의 패키지 네임 스페이스로 옮기십시오. 즉, 핵심 시스템 클래스 인 과 충돌하지 않습니다. JarJar는이 작업에서 여러분을 도울 수있는 도구입니다. 당신이 이것을 할 수 없다는 것을 알게되면, 그것은 의 경로가 궁극적으로 통증, 고통, 슬픔, 및 애도로 이어질 것이라는 표시입니다.
몇 가지 질문 :
- 이 클라이언트 라이브러리는 내 안드로이드 응용 프로그램에서 내 Google 클라우드 스토리지에 액세스 할 수있는 올바른 방법이 있나요?
- 모바일 애플리케이션에서 Cloud Storage에 액세스해서는 안되는 이유가 있습니까? 예를 들어, Cloud Enpoint를 사용하여 내 App Engine 애플리케이션에 REST API 호출을 호출하고 미디어 객체를 전달한 다음 App Engine 앱이 Cloud Storage에 미디어에 액세스하고 저장하도록 할 수 있습니다. 결과가 최종적으로 반환됩니다. 모바일 앱에?
- 언급 된 클라이언트 라이브러리를 사용하여 Cloud Storage에 올바르게 액세스하고 있다면이 오류는 무엇을 의미하며 어떤 점이 수정 되었습니까?
사용 사례는 무엇입니까? 올바른 액세스 방법은 수행하려는 작업에 따라 다릅니다. – BrettJ
이 시점에서 클라우드 스토리지에 대한 모든 유형의 연결을 해결할 수 있습니다. 코드 스 니펫에 표시된 것처럼 단순히 버킷 이름을 나열하려고했습니다. 내 "최종"유스 케이스는 비디오를 업로드/다운로드하는 것입니다. – Orbit