本文将介绍为什么在通过Firebase中的Express应用程序从GoogleCloudStorage提供PDF时下载在Chrome中挂起?的详细情况,。我们将通过案例分析、数据研究等多种方式,帮助您
本文将介绍为什么在通过 Firebase 中的 Express 应用程序从 Google Cloud Storage 提供 PDF 时下载在 Chrome 中挂起?的详细情况,。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于android Firebase Cloud Messages通知图标、Android Firebase 库,仪器化测试 - 无静态方法 registerDefaultInstance(Ljava/lang/Class;Lcom/google/protobuf/GeneratedMessageLite、android – NoClassDefFoundError:com.google.firebase.FirebaseOptions、android – 使用Firebase和Google Cloud Messaging推送通知的知识。
本文目录一览:- 为什么在通过 Firebase 中的 Express 应用程序从 Google Cloud Storage 提供 PDF 时下载在 Chrome 中挂起?
- android Firebase Cloud Messages通知图标
- Android Firebase 库,仪器化测试 - 无静态方法 registerDefaultInstance(Ljava/lang/Class;Lcom/google/protobuf/GeneratedMessageLite
- android – NoClassDefFoundError:com.google.firebase.FirebaseOptions
- android – 使用Firebase和Google Cloud Messaging推送通知
为什么在通过 Firebase 中的 Express 应用程序从 Google Cloud Storage 提供 PDF 时下载在 Chrome 中挂起?
终于想通了...似乎我应该直接使用流并将其通过管道传输到 Express 响应中。
这为我修好了
// in the files.ts express handler
// ...
// Get the file stream
const file = await filesService.getPdfFile(`${hostname}/${slug}`)
const stream = file.createReadStream()
res.on('error',err => logger.error(err))
res.set('Content-Type','application/pdf')
if (download) {
res.set('Content-Disposition',`attachment; filename=${slug}`)
}
// Pipe file read stream to the response (write stream)
stream.pipe(res)
stream.on('error',err => logger.error(err))
// ...
android Firebase Cloud Messages通知图标
如何解决android Firebase Cloud Messages通知图标?
我在项目中使用了FCM,效果很好。但是有一个问题:在某些Android设备上,而不是彩色的应用程序图标(当未设置自定义默认图标且通知有效负载中未设置图标时)显示了一个灰色的圆形。为什么会发生这种情况,我应该使用哪种图标?我应该使用元数据标签设置自定义默认图标吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
Android Firebase 库,仪器化测试 - 无静态方法 registerDefaultInstance(Ljava/lang/Class;Lcom/google/protobuf/GeneratedMessageLite
如何解决Android Firebase 库,仪器化测试 - 无静态方法 registerDefaultInstance(Ljava/lang/Class;Lcom/google/protobuf/GeneratedMessageLite?
尝试在 Android Studio 中运行插桩测试会导致
test eax,eax
在日志中更详细
Test running Failed: Process crashed.
我发现的最接近的是 this issue on github,但我尝试了多种设置,将 protobuf java 从我的依赖项中排除。我试图将它从所有项目中排除,仅从 app 模块中,从 app 模块以外的所有模块中排除,依此类推。我在多个模块中使用 Firebase 性能。
我尝试找到 E: FATAL EXCEPTION: main
Process: com.nikolam.colorme.debug,PID: 19841
java.lang.NoSuchMethodError: No static method registerDefaultInstance(Ljava/lang/Class;Lcom/google/protobuf/GeneratedMessageLite;)V in class Lcom/google/protobuf/GeneratedMessageLite; or its super classes (declaration of ''com.google.protobuf.GeneratedMessageLite'' appears in /data/app/com.nikolam.colorme.debug.test-lZqsu6pVWp2DVtFzU1uYgg==/base.apk)
at com.google.firebase.perf.v1.ApplicationInfo.<clinit>(ApplicationInfo.java:1085)
at com.google.firebase.perf.v1.ApplicationInfo.newBuilder(ApplicationInfo.java:533)
at com.google.firebase.perf.transport.TransportManager.<init>(TransportManager.java:139)
at com.google.firebase.perf.transport.TransportManager.<clinit>(TransportManager.java:91)
at com.google.firebase.perf.transport.TransportManager.getInstance(TransportManager.java:149)
at com.google.firebase.perf.internal.AppStateMonitor.getInstance(AppStateMonitor.java:64)
at com.google.firebase.perf.provider.FirebasePerfProvider.attachInfo(FirebasePerfProvider.java:65)
at android.app.ActivityThread.installProvider(ActivityThread.java:6983)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:6528)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6445)
at android.app.ActivityThread.access$1300(ActivityThread.java:219)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1859)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
,这是我找到它的地方
protobuf-java
其他 Firebase 库依赖于
lintClasspath - The lint embedded classpath
\--- com.android.tools.lint:lint-gradle:27.1.0
+--- com.android.tools:sdk-common:27.1.0
| +--- com.android.tools:sdklib:27.1.0
| | +--- com.android.tools.layoutlib:layoutlib-api:27.1.0
| | | +--- com.android.tools:common:27.1.0
| | | | +--- com.android.tools:annotations:27.1.0
| | | | +--- com.google.guava:guava:28.1-jre
| | | | | +--- com.google.guava:failureaccess:1.0.1
| | | | | +--- com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava
| | | | | +--- com.google.code.findbugs:jsr305:3.0.2
| | | | | +--- org.checkerframework:checker-qual:2.8.1
| | | | | +--- com.google.errorprone:error_prone_annotations:2.3.2
| | | | | +--- com.google.j2objc:j2objc-annotations:1.3
| | | | | \--- org.codehaus.mojo:animal-sniffer-annotations:1.18
| | | | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72
| | | | +--- org.jetbrains.kotlin:kotlin-stdlib:1.3.72
| | | | | +--- org.jetbrains.kotlin:kotlin-stdlib-common:1.3.72
| | | | | \--- org.jetbrains:annotations:13.0
| | | | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.72
| | | | \--- org.jetbrains.kotlin:kotlin-stdlib:1.3.72 (*)
| | | +--- net.sf.kxml:kxml2:2.3.0
| | | +--- com.android.tools:annotations:27.1.0
| | | \--- org.jetbrains:annotations:13.0
| | +--- com.android.tools:dvlib:27.1.0
| | | \--- com.android.tools:common:27.1.0 (*)
| | +--- com.android.tools:repository:27.1.0
| | | +--- com.android.tools:common:27.1.0 (*)
| | | +--- com.sun.activation:javax.activation:1.2.0
| | | +--- org.apache.commons:commons-compress:1.12
| | | +--- org.glassfish.jaxb:jaxb-runtime:2.3.1
| | | | +--- javax.xml.bind:jaxb-api:2.3.1
| | | | | \--- javax.activation:javax.activation-api:1.2.0
| | | | +--- org.glassfish.jaxb:txw2:2.3.1
| | | | +--- com.sun.istack:istack-commons-runtime:3.0.7
| | | | +--- org.jvnet.staxex:stax-ex:1.8
| | | | +--- com.sun.xml.fastinfoset:fastinfoset:1.2.15
| | | | \--- javax.activation:javax.activation-api:1.2.0
| | | +--- com.google.jimfs:jimfs:1.1
| | | | \--- com.google.guava:guava:18.0 -> 28.1-jre (*)
| | | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72 (*)
| | +--- com.google.code.gson:gson:2.8.5
| | +--- org.apache.commons:commons-compress:1.12
| | +--- org.apache.httpcomponents:httpmime:4.5.6
| | | \--- org.apache.httpcomponents:httpclient:4.5.6
| | | +--- org.apache.httpcomponents:httpcore:4.4.10
| | | +--- commons-logging:commons-logging:1.2
| | | \--- commons-codec:commons-codec:1.10
| | \--- org.apache.httpcomponents:httpcore:4.4.10
| +--- com.android.tools.build:builder-test-api:4.1.0
| | \--- com.android.tools.ddms:ddmlib:27.1.0
| | +--- com.android.tools:common:27.1.0 (*)
| | +--- net.sf.kxml:kxml2:2.3.0
| | \--- com.google.protobuf:protobuf-java:3.10.0
| +--- com.android.tools.build:builder-model:4.1.0
| | +--- com.android.tools:annotations:27.1.0
| | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72 (*)
| +--- com.android.tools.ddms:ddmlib:27.1.0 (*)
| +--- com.android.tools.analytics-library:shared:27.1.0
| | +--- com.android.tools.analytics-library:protos:27.1.0
| | | \--- com.google.protobuf:protobuf-java:3.10.0
| | +--- com.android.tools:annotations:27.1.0
| | +--- com.android.tools:common:27.1.0 (*)
| | +--- com.google.guava:guava:28.1-jre (*)
| | +--- com.google.code.gson:gson:2.8.5
| | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72 (*)
| +--- org.bouncycastle:bcpkix-jdk15on:1.56
| | \--- org.bouncycastle:bcprov-jdk15on:1.56
| +--- org.bouncycastle:bcprov-jdk15on:1.56
| +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72 (*)
| +--- org.jetbrains.kotlin:kotlin-reflect:1.3.72
| | \--- org.jetbrains.kotlin:kotlin-stdlib:1.3.72 (*)
| +--- com.google.protobuf:protobuf-java:3.10.0 -- HERE
| +--- javax.inject:javax.inject:1
| +--- org.jetbrains.trove4j:trove4j:20160824
| \--- com.android.tools.build:aapt2-proto:4.1.0-alpha01-6193524
| \--- com.google.protobuf:protobuf-java:3.10.0 -- HERE
+--- com.android.tools.build:builder:4.1.0
| +--- com.android.tools.build:builder-model:4.1.0 (*)
| +--- com.android.tools.build:builder-test-api:4.1.0 (*)
| +--- com.android.tools:sdklib:27.1.0 (*)
| +--- com.android.tools:sdk-common:27.1.0 (*)
| +--- com.android.tools:common:27.1.0 (*)
| +--- com.android.tools.build:manifest-merger:27.1.0
| | +--- com.android.tools:common:27.1.0 (*)
| | +--- com.android.tools:sdklib:27.1.0 (*)
| | +--- com.android.tools:sdk-common:27.1.0 (*)
| | +--- com.google.code.gson:gson:2.8.5
| | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72 (*)
| | \--- net.sf.kxml:kxml2:2.3.0
| +--- com.android.tools.ddms:ddmlib:27.1.0 (*)
| +--- com.android:zipflinger:4.1.0
| | \--- com.android.tools:common:27.1.0 (*)
| +--- com.android:signflinger:4.1.0
| | +--- com.android.tools.build:apksig:4.1.0
| | \--- com.android:zipflinger:4.1.0 (*)
| +--- com.android.tools.analytics-library:protos:27.1.0 (*)
| +--- com.android.tools.analytics-library:tracker:27.1.0
| | +--- com.android.tools:annotations:27.1.0
| | +--- com.android.tools:common:27.1.0 (*)
| | +--- com.android.tools.analytics-library:protos:27.1.0 (*)
| | +--- com.android.tools.analytics-library:shared:27.1.0 (*)
| | +--- com.google.protobuf:protobuf-java:3.10.0
| | +--- com.google.guava:guava:28.1-jre (*)
| | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72 (*)
| +--- com.android.tools.build:apksig:4.1.0
| +--- com.android.tools.build:apkzlib:4.1.0
| | +--- com.google.code.findbugs:jsr305:1.3.9 -> 3.0.2
| | +--- com.google.guava:guava:23.0 -> 28.1-jre (*)
| | +--- org.bouncycastle:bcpkix-jdk15on:1.56 (*)
| | +--- org.bouncycastle:bcprov-jdk15on:1.56
| | \--- com.android.tools.build:apksig:4.1.0
| +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72 (*)
| +--- com.squareup:javawriter:2.5.0
| +--- org.bouncycastle:bcpkix-jdk15on:1.56 (*)
| +--- org.bouncycastle:bcprov-jdk15on:1.56
| +--- org.ow2.asm:asm:7.0
| +--- org.ow2.asm:asm-tree:7.0
| | \--- org.ow2.asm:asm:7.0
| +--- javax.inject:javax.inject:1
| +--- org.ow2.asm:asm-commons:7.0
| | +--- org.ow2.asm:asm:7.0
| | +--- org.ow2.asm:asm-tree:7.0 (*)
| | \--- org.ow2.asm:asm-analysis:7.0
| | \--- org.ow2.asm:asm-tree:7.0 (*)
| +--- org.ow2.asm:asm-util:7.0
| | +--- org.ow2.asm:asm:7.0
| | +--- org.ow2.asm:asm-tree:7.0 (*)
| | \--- org.ow2.asm:asm-analysis:7.0 (*)
| +--- it.unimi.dsi:fastutil:7.2.0
| +--- net.sf.jopt-simple:jopt-simple:4.9
| \--- com.googlecode.json-simple:json-simple:1.1
+--- com.android.tools.build:builder-model:4.1.0 (*)
+--- com.android.tools.external.com-intellij:intellij-core:27.1.0
| \--- org.jetbrains.trove4j:trove4j:20160824
+--- com.android.tools.external.com-intellij:kotlin-compiler:27.1.0
+--- com.android.tools.external.org-jetbrains:uast:27.1.0
+--- com.android.tools.build:manifest-merger:27.1.0 (*)
+--- com.android.tools.lint:lint:27.1.0
| +--- com.android.tools.lint:lint-checks:27.1.0
| | +--- com.android.tools.lint:lint-api:27.1.0
| | | +--- com.android.tools:sdk-common:27.1.0 (*)
| | | +--- com.android.tools.lint:lint-model:27.1.0
| | | | +--- com.android.tools:common:27.1.0 (*)
| | | | +--- com.android.tools:sdk-common:27.1.0 (*)
| | | | +--- com.android.tools.build:builder-model:4.1.0 (*)
| | | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72 (*)
| | | | \--- net.sf.kxml:kxml2:2.3.0
| | | +--- com.google.guava:guava:28.1-jre (*)
| | | +--- com.android.tools.external.com-intellij:intellij-core:27.1.0 (*)
| | | +--- com.android.tools.external.com-intellij:kotlin-compiler:27.1.0
| | | +--- com.android.tools.external.org-jetbrains:uast:27.1.0
| | | +--- com.android.tools.build:manifest-merger:27.1.0 (*)
| | | +--- org.ow2.asm:asm:7.0
| | | +--- org.ow2.asm:asm-tree:7.0 (*)
| | | +--- org.jetbrains.kotlin:kotlin-reflect:1.3.72 (*)
| | | +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72 (*)
| | | \--- com.android.tools.build:builder-model:4.1.0 (*)
| | +--- com.google.guava:guava:28.1-jre (*)
| | +--- com.android.tools.external.com-intellij:intellij-core:27.1.0 (*)
| | +--- com.android.tools.external.com-intellij:kotlin-compiler:27.1.0
| | +--- com.android.tools.external.org-jetbrains:uast:27.1.0
| | \--- org.ow2.asm:asm-analysis:7.0 (*)
| +--- com.google.guava:guava:28.1-jre (*)
| +--- com.android.tools.external.org-jetbrains:uast:27.1.0
| +--- com.android.tools.external.com-intellij:kotlin-compiler:27.1.0
| +--- com.android.tools.build:manifest-merger:27.1.0 (*)
| +--- com.android.tools.analytics-library:shared:27.1.0 (*)
| +--- com.android.tools.analytics-library:protos:27.1.0 (*)
| +--- com.android.tools.analytics-library:tracker:27.1.0 (*)
| +--- org.jetbrains.kotlin:kotlin-reflect:1.3.72 (*)
| \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72 (*)
+--- com.android.tools.lint:lint-gradle-api:27.1.0
| +--- com.android.tools:sdklib:27.1.0 (*)
| +--- com.android.tools.lint:lint-model:27.1.0 (*)
| +--- com.android.tools.build:gradle-api:4.1.0
| | +--- com.android.tools.build:builder-test-api:4.1.0 (*)
| | +--- com.google.guava:guava:28.1-jre (*)
| | \--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72 (*)
| +--- org.jetbrains.kotlin:kotlin-reflect:1.3.72 (*)
| +--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72 (*)
| \--- com.google.guava:guava:28.1-jre (*)
+--- com.android:zipflinger:4.1.0 (*)
+--- org.codehaus.groovy:groovy-all:2.4.15
+--- org.jetbrains.kotlin:kotlin-reflect:1.3.72 (*)
\--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72 (*)
整个dependencies.log很大,所以我不知道如何发布
解决方法
在我的情况下,它似乎是由最近更新的 protobuf-lite:3.0.1
的 androidTestImplementation ''androidx.test.espresso:espresso-contrib:3.4.0''
依赖引起的,我可以使用此排除项进行修复
androidTestImplementation (androidx.test.espresso:espresso-contrib:3.4.0''){
exclude module: "protobuf-lite"
}
它可以满足我的需求(我只将这个库用于 DrawerActions),但是它不是很优雅的解决方案。
考虑到您发布的日期,这可能是由其他原因引起的(因为提到的库在几天前已更新),除非您使用的是 alpha 版本。
我建议在您的 gradle 文件中检查最近更新的依赖项。您还可以比较该依赖项更改前后 ./gradlew :app:dependencies | grep protobuf
的输出差异,然后检查完整的依赖项树以找出原因。
使用ktx时完成@Almighty的回答:
api/implementation/testImplementation(''androidx.test.espresso:espresso-contrib:3.4.0'') {
exclude(module = "protobuf-lite")
}
android – NoClassDefFoundError:com.google.firebase.FirebaseOptions
我尝试了我已经搜索的解决方案,没有什么似乎有效.
我正在使用Firebase实时数据库.有人可以帮忙吗?
这是错误日志:
06-03 01:36:29.607 2655-2655/mobapps.mypersonal.biz.grouptracker E/dalvikvm: Could not find class 'com.google.firebase.FirebaSEOptions',referenced from method com.google.firebase.FirebaseApp.<init> 06-03 01:36:29.617 2655-2655/mobapps.mypersonal.biz.grouptracker E/dalvikvm: Could not find class 'com.google.firebase.FirebaseApp$zzb',referenced from method com.google.firebase.FirebaseApp.zzaJ 06-03 01:36:29.621 2655-2655/mobapps.mypersonal.biz.grouptracker E/dalvikvm: Could not find class 'com.google.firebase.FirebaseApiNotAvailableException',referenced from method com.google.firebase.FirebaseApp.getToken 06-03 01:36:29.629 2655-2655/mobapps.mypersonal.biz.grouptracker E/dalvikvm: Could not find class 'com.google.firebase.FirebaseApp$zza',referenced from method com.google.firebase.FirebaseApp.zza 06-03 01:36:29.639 2655-2655/mobapps.mypersonal.biz.grouptracker E/AndroidRuntime: FATAL EXCEPTION: main Process: mobapps.mypersonal.biz.grouptracker,PID: 2655 java.lang.NoClassDefFoundError: com.google.firebase.FirebaSEOptions at com.google.firebase.FirebaseApp.zzbu(UnkNown Source) at com.google.firebase.provider.FirebaseInitProvider.onCreate(UnkNown Source) at android.content.ContentProvider.attachInfo(ContentProvider.java:1656) at android.content.ContentProvider.attachInfo(ContentProvider.java:1627) at com.google.firebase.provider.FirebaseInitProvider.attachInfo(UnkNown Source) at android.app.ActivityThread.installProvider(ActivityThread.java:5079) at android.app.ActivityThread.installContentProviders(ActivityThread.java:4653) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4593) at android.app.ActivityThread.access$1500(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1402) at android.os.Handler.dispatchMessage(Handler.java:110) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:5363) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:828) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:644) at dalvik.system.NativeStart.main(Native Method)
解决方法
>将编译’com.android.support:multidex:1.0.1’添加到
应用程序/的build.gradle.
>将android:name =“android.support.multidex.MultiDexApplication”添加到AndroidManifest.xml中的应用程序标签.
如果您使用自定义应用程序类,请跳过AndroidManifest.xml,并使您的Application类扩展MultiDexApplication而不是应用程序.
android – 使用Firebase和Google Cloud Messaging推送通知
我对Google App Engine一无所知.现在我使用谷歌提供的模板发送推送通知.
Google Cloud Messaging Template Github
直到现在我已经在Google App Engine中部署了我的应用程序,并且我能够向所有已注册的设备发送推送通知(来自Web)我使用GCM模板时获得的HTML页面.
我想要做的是,收听Firebase数据更改并向不在线或已关闭应用程序的用户发送推送通知.
我如何在后台运行servlet,以便它在后台运行并向非在线/连接的用户发送推送.
因为我在Google App Engine中只有推送通知逻辑我应该使用servlet还是struts.
提前致谢
解决方法
正如您所提到的,侦听数据更改需要您的应用程序保持后台线程运行.要在GAE上执行此操作,您必须禁用自动缩放,这是GAE的一个重要功能.
您可以使用手动缩放创建单独的后端GAE模块,然后使用它.一个队列,用于通知您的主要GAE模块数据更改,但在我看来这是不必要的复杂和低效.
希望Firebase能够改进他们的产品,以便能够以更有效和灵活的方式通知数据变化,但在平均时间内,您可能应该使用常规计算引擎实例.
今天关于为什么在通过 Firebase 中的 Express 应用程序从 Google Cloud Storage 提供 PDF 时下载在 Chrome 中挂起?的讲解已经结束,谢谢您的阅读,如果想了解更多关于android Firebase Cloud Messages通知图标、Android Firebase 库,仪器化测试 - 无静态方法 registerDefaultInstance(Ljava/lang/Class;Lcom/google/protobuf/GeneratedMessageLite、android – NoClassDefFoundError:com.google.firebase.FirebaseOptions、android – 使用Firebase和Google Cloud Messaging推送通知的相关知识,请在本站搜索。
本文标签: