1

Fire Base 消息传递停止使用实验性 gradle。

如何重现问题

创建一个项目以支持 Firebase 通知

关注 https://firebase.google.com/docs/notifications/android/console-audience

构建并运行。效果非常好

将 gradle 更改为实验版本。按照 Hello Jni 示例中的步骤更改为实验性 gradle。现在忘记添加 C 代码,只需进行更改以支持实验性 gradle。跟随

https://codelabs.developers.google.com/codelabs/android-studio-jni/index.html?index=..%2F..%2Findex#0

构建并运行:Firebase 无法再初始化。查看日志并搜索表明 Firebase 初始化不成功的 firebase :(

Gradle 版本(文件 -> 项目结构,项目):2.10

Android 插件版本(文件 -> 项目结构,项目):无

SDK 版本:“Android SDK 工具”修订版(工具 -> Android -> SDK 管理器):25.1.7

模块编译 SDK 版本(文件 -> 项目结构,您的模块):24.0.0

模块构建工具版本(文件 -> 项目结构,您的模块):24.0.0

请有任何解决方法。

提前致谢

谢谢并恭祝安康,

4

3 回答 3

4

我也遇到了同样的问题,花了几天时间进行调查和谷歌搜索。问题是 Google Services Gradle 插件与 gradle-experimental 不兼容。然而深入挖掘我发现这个插件并没有做很多,它只是解析“google-services.json”并生成“app/build/generated/res/google-services/{build_type}/values/values.xml ” 出来。

所以我只是手动生成了那个文件“MyProject/src/main/res/values/google-services.xml”

<?xml version="1.0" encoding="utf-8"?>
<resources>
<! -- Present in all applications -->
<string name="google_app_id" translatable="false">1:1035469437089:android:73a4fb8297b2cd4f</string>
<! -- Present in applications with the appropriate services configured -->
<string name="gcm_defaultSenderId" translatable="false">1035469437089</string>
<string name="default_web_client_id" translatable="false">337894902146-e4uksm38sne0bqrj6uvkbo4oiu4hvigl.apps.googleusercontent.com</string>
<string name="ga_trackingId" translatable="false">UA-65557217-3</string>
<string name="firebase_database_url" translatable="false">https://example-url.firebaseio.com</string>
<string name="google_api_key" translatable="false">AIzbSyCILMsOuUKwN3qhtxrPq7FFemDJUAXTyZ8</string>
<string name="google_crash_reporting_api_key" translatable="false">AIzbSyCILMsOuUKwN3qhtxrPq7FFemDJUAXTyZ8</string>
</resources>

可以找到更多信息:https ://developers.google.com/android/guides/google-services-plugin

希望这可以帮助。

于 2016-08-16T09:01:00.917 回答
0

只需添加到 xp-vit 的答案(这对我非常有帮助),您可以将另一个 android 客户端添加到您的 firebase 项目中,该客户端不使用实验性 gradle 为您生成 XML,然后您只需更改“google_app_id “ 场地。这位于 json 文件的 {YOUR_CLIENT}/client_info/mobilesdk_app_id 下。可能有助于避免拼写错误。

于 2016-11-01T18:57:25.660 回答
0

面临同样的问题。这是一个很难的错误。在您将 Firebase 日志设置为详细模式之前,您不会知道您的 Firebase 事件不会被发送。

对于那些不知道如何启用 Firebase 日志的人:在终端窗口的 AndroidStudio 中执行以下操作:

adb shell setprop log.tag.FA VERBOSE
adb shell setprop log.tag.FA-SVC VERBOSE
adb logcat -v time -s FA FA-SVC

多亏了我发现了一个错误: Missing google_app_id. Firebase Analytics disabled

我已经仔细检查了所有内容,但后来我在 Android 错误跟踪器中找到了一张票,说实验性 gradle 会干扰 Firebase Analytics。

为了解决这个问题,我已经迁移'com.android.tools.build:gradle-experimental:0.8.3'到最新的稳定常规 Gradle 插件'com.android.tools.build:gradle:2.2.3'

一切都像一个魅力。

因此,这就是您从实验性 gradle 插件迁移到最新的稳定插件 v. 2.2.3 的方式:

1. 更新你的 gradle 脚本。

http://tools.android.com/tech-docs/new-build-system/gradle-experimental/migrate-to-stable 在本文中,在 sdk mnager 中安装所有内容后,您需要执行以下操作:

在您的项目级build.gradle 文件中,将 gradle 插件的类路径依赖项更改为 2.2.0 或更高版本

buildscript {
  repositories {...}
  dependencies {
      classpath 'com.android.tools.build:gradle:2.2.3'
  }
}

切换到稳定的 Gradle DSL

如果您要从实验性 Gradle 迁移,则只需按照指南本节中的说明进行操作。由于 Gradle 的稳定版不使用组件模型机制,因此您需要更改模块级 build.gradle 文件中的一些 DSL:

  1. 模块级build.gradle 文件的顶部,您需要应用插件的稳定版本,如下所示:'com.android.application'

- 如果你有任何模块 - 它们的第一行应该如下: apply plugin: 'com.android.library'

  1. 删除 model{} 块,包括它的左大括号和右大括号。android{} 块不应包含在任何其他 DSL 元素中。

  2. 从 minSdkVersion 和 targetSdkVerion 中删除“.apiLevel”后缀:

minSdkVersion 16

targetSdkVersion 23

  1. 将 proguardFiles DSL 更改为以下内容: proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

  2. 从您的 productFlavor 配置中删除 create(“...”) 。例如,使用以下 DSL 创建“flavor1”产品风味:

-我没有那些

productFlavors {
    flavor1 {
        applicationId “com.app”
    }
    ...
}
  1. 仅在 ndk{} 块中定义 abiFilters - 注释掉该块中的所有其他内容。稳定插件使用新的 externalNativeBuild{} DSL 将 Gradle 链接到您的 CMake 或 ndk-build 项目,并设置工具链参数和编译器标志。 - 在这里我注释掉了整个ndk{}

2. 创建 CMake 构建脚本。简单的

https://developer.android.com/studio/projects/add-native-code.html#create-cmake-script 确切地在这里告诉它。在右侧项目侧窗口中右键单击我们的模型。新文件。创造它。粘贴它。我只有一个 C++ 类,所以我有一个非常简单的 CMakeLists.txt 文件:

cmake_minimum_required(VERSION 3.4.1)
add_library( 
         lib-name

         SHARED

         my_cpp_class.cpp )

3. 用 Gradle 链接 C++ 项目

  1. 从 IDE 左侧打开 Project 窗格并选择 Android 视图。
  2. 右键单击要链接到本机库的模块,例如应用程序模块,然后从菜单中选择使用 Gradle 链接 C++ 项目。您应该会看到一个类似于下图的对话框
  3. 从下拉菜单中,选择 CMake 或 ndk-build。如果您选择 CMake,请使用项目路径旁边的字段为您的外部 CMake 项目指定 CMakeLists.txt 脚本文件。 在此处输入图像描述

!重要提示:如果您有任何其他模块 - 为项目中的每个模块执行这些步骤!

就是这样。清理您的项目并重新构建它。现在您可以使用 Firebase Analytics。

基本上我没有创造或告诉任何新的东西,所以所有的功劳归于谷歌。我只是把两篇关于如何做的文章放在一起,并用我的评论写下了步骤。这并不难,它会给你带来更多的好处,因为实验性的 gradle 可能会在将来的任何时候引起一些问题。

于 2017-02-23T23:31:49.283 回答