从最近我的应用程序开始在预发布报告中包含奇怪的错误消息(上传到Play商店后自动生成).
这些报告包含以下异常:
Exception java.lang.NoSuchMethodError: No interface method a(Landroid/arch/lifecycle/e;Landroid/arch/lifecycle/b$a;)V in class Landroid/arch/lifecycle/GenericLifecycleObserver; or its super classes (declaration of 'android.arch.lifecycle.GenericLifecycleObserver' appears in /data/app/com.google.android.apps.mtaas.crawler-1/base.apk)
android.arch.lifecycle.f$a.a (f.java:326)
android.arch.lifecycle.f.a (f.java:159)
com.firebase.ui.database.FirebaseRecyclerAdapter.<init> (FirebaseRecyclerAdapter.java:40)
Run Code Online (Sandbox Code Playgroud)
和:
Exception java.lang.NoSuchMethodError: No static method a(Landroid/app/Activity;)V in class Landroid/arch/lifecycle/ReportFragment; or its super classes (declaration of 'android.arch.lifecycle.ReportFragment' appears in /data/app/com.google.android.apps.mtaas.crawler-1/base.apk)
android.arch.lifecycle.LifecycleDispatcher$DispatcherActivityCallback.onActivityCreated (LifecycleDispatcher.java:77)
android.app.Application.dispatchActivityCreated (Application.java:219)
android.app.Activity.onCreate (Activity.java:1040)
android.support.v4.app.SupportActivity.onCreate (SupportActivity.java:66)
android.support.v4.app.FragmentActivity.onCreate (FragmentActivity.java:285)
android.support.v7.app.AppCompatActivity.onCreate (AppCompatActivity.java:84)
Run Code Online (Sandbox Code Playgroud)
和:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.arch.core.internal.SafeIterableMap.size()' on a null object reference
at android.arch.lifecycle.LifecycleRegistry.getObserverCount(LifecycleRegistry.java:204)
at android.arch.lifecycle.ProcessLifecycleOwner.b(ProcessLifecycleOwner.java:154)
at …Run Code Online (Sandbox Code Playgroud) android firebase firebase-test-lab android-architecture-lifecycle android-architecture-components
在Google I/O 2016会议中,显示了对Firebase完全集成的重大改进.在我的应用程序中,我正在尝试迁移到新的解决方案,但有几个问题.其中之一是以下内容:
在我的Firebase应用中,我使用参数来定义Firebase数据库,如下所示(gradle):
gradle.properties文件:
FIREBASE_REF_REL="https://xxxxxxx.firebaseio.com/"
FIREBASE_REF_DEB="https://xxxxxxx-dev.firebaseio.com/"
Run Code Online (Sandbox Code Playgroud)
build.gradle文件:
buildTypes {
debug {
minifyEnabled false
multiDexEnabled true
it.buildConfigField 'String', 'FIREBASE_ROOT_URL', FIREBASE_REF_DEB
}
release {
minifyEnabled true
useProguard true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
zipAlignEnabled true
it.buildConfigField 'String', 'FIREBASE_ROOT_URL', FIREBASE_REF_REL
}
return true
}
Run Code Online (Sandbox Code Playgroud)
这使我能够针对调试Firebase环境运行我的调试应用程序,这有助于我测试数据模型和安全规则中的更改,而不会影响生产环境.
在新的Firebase解决方案中,这似乎不再可能,因为生成的google-services.json文件包含Firebase参考(如下所述:https://firebase.google.com/support/guides/firebase-android#import_your_project_to_the_new_firebase_console_numbered).
在尝试引用我的调试数据库时,我得到以下类型的错误:
Caused by: com.google.firebase.database.DatabaseException: Invalid URL (https://xxxxxxx-dev.firebaseio.com/) passed to getReference(). URL was expected to match configured Database URL: https://xxxxx.firebaseio.com
Run Code Online (Sandbox Code Playgroud)
我的问题:在新情况下针对测试Firebase数据库运行应用程序的正确方法/最佳做法是什么?
android firebase google-play-services firebase-realtime-database
我会以编程方式创建一个按照设计指南中定义的按钮:https://material.io/design/components/buttons.html#outlined-button,如下所示:
在XML中我可以使用这段布局xml来做到这一点:
<com.google.android.material.button.MaterialButton
android:id="@+id/buttonGetStarted"
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
android:text="@string/title_short_intro" />
Run Code Online (Sandbox Code Playgroud)
我正在寻找的是一个示例,说明如何使用Java代码执行此操作?我尝试过以下方法:
MaterialButton testSignIn = new MaterialButton( new ContextThemeWrapper( this, R.style.Widget_MaterialComponents_Button_OutlinedButton));
String buttonText = "Sign-in & empty test account";
testSignIn.setText( buttonText );
Run Code Online (Sandbox Code Playgroud)
但这不会导致大纲变体:
在编辑Android Studio 3.0中包含ConstraintLayout元素的布局时,我遇到了问题.
我的依赖关系如下:
project.ext.support_library_version = '26.0.0-beta2'
dependencies {
compile 'com.android.support.constraint:constraint-layout:1.1.0-beta1'
compile "com.android.support:palette-v7:${project.ext.support_library_version}"
compile "com.android.support:support-v13:${project.ext.support_library_version}"
compile "com.android.support:customtabs:${project.ext.support_library_version}"
compile "com.android.support:cardview-v7:${project.ext.support_library_version}"
...
}
Run Code Online (Sandbox Code Playgroud)
UI编辑器中显示的错误是:
The following classes could not be instantiated:
- android.support.constraint.ConstraintLayout (Open Class, Show Exception, Clear Cache)
Tip: Use View.isInEditMode() in your custom views to skip code or show sample data when shown in the IDE. If this is an unexpected error you can also try to build the project, then manually refresh the layout.
Run Code Online (Sandbox Code Playgroud)
显示的堆栈跟踪如下:
java.lang.AssertionError: Entries for a …Run Code Online (Sandbox Code Playgroud) android android-support-library android-constraintlayout android-studio-3.0
我打算使用Firebase邀请,以便我的应用用户可以联系(并邀请我的应用)他/她已在应用中添加到其管理中的人员.
我已经拥有这些目标人员的邮件地址,因此我希望能够在设置应用邀请时使用此信息.此刻这似乎不可能.我目前的代码:
Intent intent = new AppInviteInvitation.IntentBuilder( "Please join me to manage " + event ).build();
startActivityForResult(intent, RC_INVITE_MANAGER);
Run Code Online (Sandbox Code Playgroud)
我正在寻找的是这样的:
Intent intent = new AppInviteInvitation.IntentBuilder( "Please join me to manage " + event )
.setMailto( "test@test.test" ).build();
startActivityForResult(intent, RC_INVITE_MANAGER);
Run Code Online (Sandbox Code Playgroud)
要么:
intent.putExtra( "EMAIL_TO", "test@test.test");
Run Code Online (Sandbox Code Playgroud)
此时,用户将不得不从他的联系人手动选择用户(即使目标邮件已经从用户点击"邀请"动作的上下文中获知).
这将来有可能吗?
在新的Google Play服务库(8.3.0)中,有一种新的登录方式.此方法涉及添加以下依赖项:
build.gradle(app level):
classpath 'com.google.gms:google-services:1.4.0-beta3'
在应用程序级别:
compile 'com.google.android.gms:play-services-auth:8.3.0'
`apply plugin: 'com.google.gms.google-services'`
Run Code Online (Sandbox Code Playgroud)
在创建minifyEnabled设置为的发布应用版本时false,该应用程序正在发布并正常工作.但是,在启动时创建minifyEnabled设置为true应用程序崩溃的发布版本
时会出现以下异常:
java.lang.RuntimeException: Unable to get provider com.google.android.gms.measurement.AppMeasurementContentProvider: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.measurement.AppMeasurementContentProvider" on path: DexPathList[[zip file "/data/app/com.xxx.xxx-1/base.apk"],nativeLibraryDirectories=[/data/app/com.xxx.xxx-1/lib/arm, /vendor/lib, /system/lib]]
11-08 12:47:13.497 3672-3672/? E/AndroidRuntime: at android.app.ActivityThread.installProvider(ActivityThread.java:5156)
11-08 12:47:13.497 3672-3672/? E/AndroidRuntime: at android.app.ActivityThread.installContentProviders(ActivityThread.java:4748)
11-08 12:47:13.497 3672-3672/? E/AndroidRuntime: at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4688)
11-08 12:47:13.497 3672-3672/? E/AndroidRuntime: at android.app.ActivityThread.-wrap1(ActivityThread.java)
11-08 12:47:13.497 3672-3672/? E/AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405)
11-08 12:47:13.497 3672-3672/? E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:102)
11-08 12:47:13.497 3672-3672/? E/AndroidRuntime: …Run Code Online (Sandbox Code Playgroud) java android google-play-services android-gradle-plugin android-proguard
我正在寻找有关 Firebase Storage 和 Firebase Firestore 的组合/批量调用的最佳实践。例如:我需要从我的 Firestore 中删除一个与 Firebase Storage 中的图像相关的文档。是否有可能以这样的方式执行此操作:当其中一个操作失败时,整个事务将被还原?
我在 Python 中的日期时间方面遇到了一些问题。我尝试将日期时间转换为时间戳,然后再转换回来,无论我如何尝试,最终结果都不一样。我总是以 datetime(2014, 1, 30, 23, 59, 40, 1998) 的日期时间结束。
import datetime
a = datetime.datetime.timestamp(datetime.datetime(2014, 1, 30, 23, 59, 40, 1999))
b = datetime.datetime.fromtimestamp(a)
print(b)
Run Code Online (Sandbox Code Playgroud) 我正在使用新的螺栓编译器(在此处介绍:https://www.firebase.com/blog/2015-11-09-introducing-the-bolt-compiler.html)
我需要在我的类型Event的owner字段中定义一个索引:
type Event {
description : String | Null,
name : String,
color : Number,
owner : String,
shared : Boolean
index() = "owner";
}
Run Code Online (Sandbox Code Playgroud)
当我尝试编译此代码时,我得到以下输出:
bolt: Generating rules.json...
bolt:1:1: Unsupported method name in type statement: 'index' (allowed: 'validate', 'read', 'write')
Run Code Online (Sandbox Code Playgroud)
请帮忙:我该如何定义索引?我想我需要在路径声明中定义它们?
bolt编译器的文档在定义索引时并不多:https://github.com/firebase/bolt/blob/master/docs/language.md
我在我的应用程序的许多位置使用库中FirebaseRecyclerViewAdapter的com.firebaseui:firebase-ui:0.2.0库.我的问题是如何在查询参数返回多个"索引"条目值(Map.Entry)的情况下应用它.
如Firebase文档(https://www.firebase.com/docs/android/guide/structuring-data.html)所示,我使用索引来保持数据结构不变.这导致我需要将这些索引绑定到ViewHolder的情况.在populate视图方法中,我使用索引的键来检索数据以填充视图.
我在创建适配器时遇到问题,在布尔/字符串Map.Entry的情况下,不确定如何定义'modelClass'参数:
mAdapter = new FirebaseRecyclerViewAdapter<Map.Entry<String, Boolean>, ItemViewHolder>(???.class, R.layout.my_card, ItemViewHolder.class, getItemIndexQuery(mKey) ) {
...
}
Run Code Online (Sandbox Code Playgroud) android ×8
firebase ×6
android-architecture-components ×1
android-architecture-lifecycle ×1
androidx ×1
datetime ×1
email ×1
firebaseui ×1
java ×1
python ×1
python-3.x ×1