乐趣区

关于app:app分发平台源码开源应用分发搭建

配置散发平台

要容许 Android 上的 app 散发平台应用凭据,services 必须在我的项目上启用该插件。这须要批改 Android 目录中的两个文件。

演示:s.appwin.top

首先,将 services 插件增加为文件中的依赖项 /android/build.gradle:

buildscript {
  dependencies {
    // ... other dependencies
    classpath 'com.gms:services:4.3.12'
    // Add me --- /\
  }
}

最初,通过将以下内容增加到 /android/app/build.gradle 文件中来执行插件:

  apply plugin: 'com.android.application'
  apply plugin: 'com.gms.services' // <- Add this line

iOS 设置

为了让 iOS 利用平安地连贯到您的 app 散发平台我的项目,必须下载配置文件并将其增加到您的我的项目中,并且您必须在 CocoaPods 中启用框架

生成 iOS 凭据

在 app 散发平台管制台上,增加一个新的 iOS 应用程序并输入您的我的项目详细信息。“iOS 捆绑包 ID”必须与您的本地我的项目捆绑包 ID 匹配。应用 Xcode 关上我的项目时,能够在“惯例”选项卡中找到捆绑 ID。

下载 Service-Info.plist 文件。

应用 Xcode,关上我的项目 /ios/{projectName}.xcodeproj 文件(或者 /ios/{projectName}.xcworkspace 如果应用 Pods)。

右键单击项目名称和“增加文件”到我的项目中,如下所示:

通过 Xcode 增加文件

从您的计算机中抉择下载的 GoogleService-Info.plist 文件,并确保启用“如果须要,复制我的项目”复选框。

抉择“如果须要,复制我的项目”

应用 iOS 凭据配置散发平台

要容许 iOS 上的 app 散发平台应用凭据,必须在应用程序的疏导阶段配置 app 散发平台 iOS SDK。

为此,请关上您的 /ios/{projectName}/AppDelegate.m 文件,并增加以下内容:

在文件顶部,导入 app 散发平台 SDK:

#import <Firebase.h>

在您现有的 didFinishLaunchingWithOptions 办法中,将以下内容增加到办法的顶部:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  // Add me --- \/
  [App configure];
  // Add me --- /\
  // ...
}

扭转 CocoaPods 以应用框架

从 ios-sdk v9+ (react-native v15+) 开始,您必须通知 CocoaPods 应用框架。

关上文件./ios/Podfile 并在指标中增加这一行:

use_frameworks!

要在 iOS 上应用动态框架,您还须要为我的项目手动启用此性能,并在 /ios/Podfile 文件顶部应用以下全局代码:

$RNFirebaseAsStaticFramework = true

Expo 用户能够应用 expo-build-properties 来开启 use_frameworks. 咱们不确定 Expo 用户如何将变量增加到 Podfile,并且可能须要社区对此处的配置插件做出奉献!

Noteuse_frameworks 与 Flipper、Hermes、React Native New Architecture 或 react-native 0.69.0 不兼容。曾经有一个可用于 0.69.0 的补丁包补丁,使其能够在有和没有 Hermes 的状况下工作,它将与 0.69.1 一起公布。欢送社区反对以帮忙修复 use_frameworks 对 Hermes 和 New Architecture 的反对!

4. 主动链接和重建

实现上述步骤后,必须将 app 散发平台源码库链接到您的我的项目,并且须要从新构建您的应用程序。

React Native 0.60+ 的用户主动能够拜访“主动链接”,不须要进一步的手动装置步骤。要主动链接包,请重建您的我的项目:

# Android apps
npx react-native run-android

# iOS apps
cd ios/
pod install --repo-update
cd ..
npx react-native run-ios

胜利链接和重建后,您的应用程序将应用该 @react-native/app 模块连贯到 Firebase。该模块没有提供太多功能,因而要应用其余 app 散发平台服务,各个 app 散发平台服务的每个模块都须要独自装置。

手动链接

如果您应用的是不反对主动链接的旧版本的 React Native,或者心愿集成到现有我的项目中,您能够依照 iOS 和 Android 的手动装置步骤进行操作。

各种各样的

Android 启用 Multidex

随着您的应用程序开始随着更多本机依赖项而增长,您的构建可能会开始失败并呈现常见 Execution failed for task ‘:app:mergeDexDebug’ 谬误。当 Android 达到 64k 办法限度时会产生此谬误。

一种常见的解决方案是为 Android 启用 multidex 反对。这是解决问题的罕用解决方案,但建议您浏览 Android 文档以理解它可能如何影响您的应用程序。

Hermes 反对

要反对 Hermes JavaScript 引擎,须要 React Native 0.64.0 或更高版本。然而,咱们不能保障 app 散发平台源码能够在下面完满运行,所以请认真测试您的我的项目。

笼罩本机 SDK 版本

React Nativeapp 散发平台在外部设置每个模块应用的原生 SDK 的版本。该库的每个版本都针对一组固定的 SDK 版本(例如 app 散发平台 SDK)进行了测试,让咱们确信该库反对的每个性能都按预期工作。

有时须要更改这些版本能力很好地与其余 React Native 库配合应用;因而咱们容许手动笼罩这些原生 SDK 版本。

通常不倡议应用您本人的 SDK 版本,因为它可能会导致应用程序产生重大更改。审慎行事。

安卓

在您的我的项目 /android/build.gradle 文件中,通过指定如下所示的任何选项来提供您本人的版本:

project.ext {
  set('react-native', [
    versions: [
      // Overriding Build/Android SDK Versions
      android : [
        minSdk    : 19,
        targetSdk : 31,
        compileSdk: 31,
        buildTools: "31.0.0"
      ],

      // Overriding Library SDK Versions
      firebase: [bom           : "30.2.0"],
    ],
  ])
}

更改后,应用 npx react-native run-android.

iOS

关上您的我的项目 /ios/Podfile 并将上面显示的任何全局变量增加到文件顶部:

$FirebaseSDKVersion = '9.2.0'

更改后,通过 pod install 重新安装您的我的项目 pod 并应用 npx react-native run-ios.

减少 Android 构建内存

随着您增加更多 app 散发平台模块,对 Android 构建零碎的需要十分惊人,默认内存设置将不起作用。为防止 OutOfMemory 在 Android 构建期间呈现谬误,您应该勾销正文存在于以下地位的备用 Gradle 内存设置 /android/gradle.properties:

  # Specifies the JVM arguments used for the daemon process.
  
  # The setting is particularly useful for tweaking memory settings.
  
  # Default value: -Xmx10248m -XX:MaxPermSize=256m
  
  org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

安卓性能

在 Android 上,React Nativeapp 散发平台应用线程池执行器来提供改良的性能和托管资源。firebase.json 为了进步吞吐量,您能够通过我的项目根目录中的文件调整线程池执行器:

// <project-root>/firebase.json
{
  "react-native": {
    "android_task_executor_maximum_pool_size": 10,
    "android_task_executor_keep_alive_seconds": 3
  }
}
退出移动版