小编Ale*_*amo的帖子

如何解决gradle插件创建的依赖冲突?

我正在尝试更新我的Android O应用程序,并且这样做需要更新以支持库26.

我的compileSdkVersion是26,targetSdkVersion 26,buildToolsVersion 26.0.1,支持库版本是26.0.1,播放服务/ firebase消息是11.0.4.我正在使用Android Studio 3.0 b2和android gradle插件3.0.0-beta2.看来这个版本对支持库冲突更加敏感.

我必须手动排除支持依赖项以解决冲突,因为播放服务和firebase链接对旧版本的支持库:

implementation("com.google.android.gms:play-services-auth:$playServicesVersion",{
    exclude group: 'com.android.support'
})

implementation("com.google.android.gms:play-services-identity:$playServicesVersion",{
    exclude group: 'com.android.support'
})

implementation("com.google.android.gms:play-services-base:$playServicesVersion",{
    exclude group: 'com.android.support'
})

implementation("com.google.android.gms:play-services-analytics:$playServicesVersion",{
    exclude group: 'com.android.support'
})

implementation("com.google.firebase:firebase-messaging:$playServicesVersion",{
    exclude group: 'com.android.support'
})

implementation("com.google.firebase:firebase-analytics:$playServicesVersion",{
    exclude group: 'com.android.support'
})
Run Code Online (Sandbox Code Playgroud)

这修复了我的所有依赖冲突,除了一个.

Google Play服务/ Firebase需要使用google-services gradle插件来解析生成的.json文件,并在应用中包含必要的密钥/秘密.我的build.grade有一个buildcript块,如下所示:

buildscript {
    repositories {
        maven { url "https://maven.google.com" }
        jcenter()
    }

    dependencies {
        classpath "com.google.gms:google-services:3.1.0"
    }
}
Run Code Online (Sandbox Code Playgroud)

在脚本的最后,我应用插件.随着apply和classpath被注释掉,一切都正确编译.但是,似乎google-services 3.1.0增加了对支持库版本25.2.0的依赖,而我无法弄清楚如何覆盖它.消息是:

  • 出了什么问题:任务':app:preDevelopmentDebugBuild'执行失败.

    Android依赖项"com.android.support:support-v4"具有不同版本的编译(25.2.0)和运行时(26.0.1)类路径.您应该通过DependencyResolution手动设置相同的版本

请注意,我甚至无法降级到支持库25.4.0,因为我得到了相同的错误(只需用25.4.0替换上面的消息中的26.0.1).唯一有效的版本是25.2.0

运行./gradlew app:dependencies包含类路径依赖项,给我这个:

compile - Compile dependencies for 'main' sources (deprecated: …
Run Code Online (Sandbox Code Playgroud)

android firebase google-play-services android-gradle-plugin android-8.0-oreo

4
推荐指数
1
解决办法
4734
查看次数

一次登录应用程序 - FirebaseAuth

我正在开发一款使用Firebase身份验证通过电话号码登录用户的应用.我想添加一个功能,只有一次登录用户,即使用户杀死应用程序并再次启动它,他应该登录.另外,我不想添加注销功能.可以做些什么呢?

java android firebase firebase-authentication

4
推荐指数
1
解决办法
1197
查看次数

setFirestoreSettings 的问题

我对 Android 和 Firestore 都很陌生,无法弄清楚如何设置 Firestore 对象的设置。这是我一直在使用的代码:

public class MainActivity extends AppCompatActivity

FirebaseFirestore firestore;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    firestore = FirebaseFirestore.getInstance();
    FirebaseFirestoreSettings settings = new FirebaseFirestoreSettings.Builder().setTimestampsInSnapshotsEnabled(true).build();
    firestore.setFirestoreSettings(settings);

}
Run Code Online (Sandbox Code Playgroud)

但这给出了一个错误:

java.lang.IllegalStateException: FirebaseFirestore has already been started and its settings can no longer be changed. You can only call setFirestoreSettings() before calling any other methods on a FirebaseFirestore object.
Run Code Online (Sandbox Code Playgroud)

但是,此错误仅在我使用 setPersistanceEnabled(false) 和/或 setTimestampsInSnapshotsEnabled(true) 时发生。

如果我使用 setPersistanceEnabled(true) 和/或 setTimestampsInSnapshotsEnabled(false),应用程序就可以工作。

如果有人可以帮助我真的很感激。我已经坚持了一段时间了。

android firebase google-cloud-firestore

4
推荐指数
1
解决办法
1729
查看次数

Firebase:无需写入数据库即可获取当前时间(IOS 和 ANDROID)

我想使用 Firebase 获取服务器上的当前时间,而无需写入数据库然后读取它。

有人知道直接从 Firebase 获取当前时间戳的解决方案吗?

android timestamp ios firebase firebase-realtime-database

4
推荐指数
1
解决办法
1220
查看次数

如何检查Cloud Firestore集合是否存在?(查询快照)

我在检查 Firestore 数据库中是否存在我的集合时遇到问题。当我使用 Firebase 实时数据库时,我可以使用:

if(databaseSnapshot.exists) 
Run Code Online (Sandbox Code Playgroud)

现在,我想通过 Firestore 做同样的事情。我已经尝试过了

  if (documentSnapshots.size() < 0) 
Run Code Online (Sandbox Code Playgroud)

但它不起作用。这是当前的代码:

public void pullShopItemsFromDatabase() {
    mShopItemsRef.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
        @Override
        public void onComplete(@NonNull Task<QuerySnapshot> task) {
            if (task.isSuccessful()) {
                for (DocumentSnapshot document : task.getResult()) {
                    ShopItem shopItem = document.toObject(ShopItem.class);
                    shopItems.add(new ShopItem(shopItem.getImageUrl(), shopItem.getTitle(), shopItem.getSummary(), shopItem.getPowerLinkID(), shopItem.getlinkToShopItem(),shopItem.getLinkToFastPurchase(), shopItem.getKey(), shopItem.getPrice(),shopItem.getVideoID()));
                }
                if (shopItems != null) {
                    Collections.sort(shopItems);
                    initShopItemsRecyclerView();
                }
            } else {
                Log.w(TAG, "Error getting documents.", task.getException());
                setNothingToShow();
            }
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

函数:setNothingToShow(); 如果我的集合为空/不存在,这实际上是我想要执行的。请指教!感谢:D。

java database android firebase google-cloud-firestore

3
推荐指数
1
解决办法
1万
查看次数

如何计算Firestore中集合下的文档数量?

我正在尝试获取Cloud Firestore上存在的CollectionReference计数,我试图通过以下方式获取它:

FirebaseFirestore db = FirebaseFirestore.getInstance();
    final CollectionReference postsCollection = db.collection("Posts");

    final TaskCompletionSource<Integer> source = new TaskCompletionSource<>();
    new Thread(new Runnable() {
        @Override
        public void run() {
            int fromWhereToStart = postsCollection.get().getResult().size();
            source.setResult(fromWhereToStart);
        }
    }).start();

    Task<Integer> task = source.getTask();
    task.addOnCompleteListener(new OnCompleteListener<Integer>() {
        @Override
        public void onComplete(@NonNull Task<Integer> task) {
            Log.e("Z_fromWhereToStart", "= " + task.getResult());
        }
    });
Run Code Online (Sandbox Code Playgroud)

但不幸的是,我得到了:

java.lang.IllegalStateException: Task is not yet complete
Run Code Online (Sandbox Code Playgroud)

还有另一种方法来计算另一种修复方法IllegalStateException吗?

java android illegalstateexception firebase google-cloud-firestore

3
推荐指数
1
解决办法
2919
查看次数

Android Firebase RecyclerView 中按下按钮时出现无法解释的错误

我有一个 RecyclerView 和一个用于“绑定”每个项目的按钮(移动到数据库中的另一个子项)。

大多数时候它运行良好,但有时我会收到indexOutOfBounds 异常。

这是一个屏幕截图:

CSS

当我按顶部回收器视图项目的“BIND”时,我收到了此错误。我让它打印这一行:

Log.d("dDebug","Almost bug! Size: " + ((MissionAdapter) MissionAdapter.this).mSnapshots.size() + " , index: " + missionPosition);
Run Code Online (Sandbox Code Playgroud)

它打印出这个:

D/dDebug: Almost bug! Size: 1 , index: 1
Run Code Online (Sandbox Code Playgroud)

在这里您可以看到错误 - 大小 1,索引 1,因此它将有indexOutOfBounds。

这是代码:

    public class AvailableFragmentPilot extends Fragment {

    private String TAG = "dDEBUG";
    private RecyclerView mavailableList;

    private DatabaseReference mAvailableMissionsDb, mPendingMissionsDb;
    private FirebaseAuth mAuth;
    private ProgressDialog mSubmitMsnProgress;

    private String mCurrent_pilot_id;

    private View mMainView;

//    Query queries;

    public AvailableFragmentPilot() {
        // Required empty public constructor
    }


    @Override
    public …
Run Code Online (Sandbox Code Playgroud)

java android firebase android-recyclerview firebase-realtime-database

3
推荐指数
1
解决办法
1527
查看次数

检查Firestore集合中是否存在文档

我有一棵Firestore收集树,我打算在其中仅存储一个文档。我想检查该集合是否包含该文档,如果包含,请检索该文档的ID!有什么想法/想法吗?

谢谢 :)

java android firebase google-cloud-firestore

3
推荐指数
2
解决办法
6549
查看次数

如何使用 Firestore 查询的结果填充微调器?

我正在创建一个spinner将显示主题名称的。主题名称存储在我的 Firestore 数据库中,如下所示:

subjects (collection)
|
|--- SUB01 (document)
|    |
|    |--- name : "Android"
|
|--- SUB02
|    |
|    |--- name : "Java"
Run Code Online (Sandbox Code Playgroud)

我可以将结果提取到一个RecyclerView但无法帮助自己为微调器这样做。

java android spinner firebase google-cloud-firestore

3
推荐指数
1
解决办法
3281
查看次数

Firebase google 一键登录找不到匹配的凭据

我想使用 Google 帐户登录我的应用程序。我使用 Firebase 对用户进行身份验证。

我已经阅读了该文档一百万遍。我已将 SH1 调试密钥作为指纹添加到 Firebase 项目中,并使用Web SDK configurationFirebase 作为 Web 客户端 ID: 这东西

我已经在 strings.xml 文件中设置了它

<string name="web_client_id">**HERE**</string>

我的其余代码如下所示:

public class AuthFragment extends Fragment {
    private FragmentAuthBinding binding;
    private SignInClient oneTapClient;
    ActivityResultLauncher<Intent> oneTapLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(),
        result -> {
            if (result.getResultCode() == Activity.RESULT_OK) {
                Intent data = result.getData();
                try {
                    var credential = oneTapClient.getSignInCredentialFromIntent(data);
                    String idToken = credential.getGoogleIdToken();
                } catch (ApiException e) {
                    throw new RuntimeException(e);
                }
            }
        });
    public AuthFragment() {}

    @Override
    public View …
Run Code Online (Sandbox Code Playgroud)

java android firebase google-cloud-platform firebase-authentication

3
推荐指数
1
解决办法
831
查看次数