You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将OneSignal集成至Expo分离的React Native项目后Android Studio构建失败

解决Expo分离后React Native集成OneSignal的Android构建失败问题

嘿,我来帮你排查下这个问题!从你给出的Gradle片段来看,里面还留着Fabric相关的配置——这玩意儿早就被Google废弃停止服务了,很大概率是它和OneSignal的依赖产生了冲突,再加上Expo eject后的项目有自己特殊的Gradle结构,得针对性调整OneSignal的集成步骤才行。下面是一步步的解决办法:

1. 先清理过时的Fabric配置

这是最常见的坑,先把Fabric相关的内容全删掉:

  • 删掉buildscript里的maven { url 'https://maven.fabric.io/public' }仓库配置
  • 删掉buildscript.dependencies里的classpath 'io.fabric.tools:gradle:1.+'
  • 删掉apply plugin: 'io.fabric'这一行

留着这些废弃的配置只会添乱,先清掉再说。

2. 适配Expo分离项目的OneSignal Gradle配置

Expo eject后的项目,android/build.gradle和android/app/build.gradle有固定结构,你得按下面的方式调整:

调整android/build.gradle

在buildscript和allprojects的仓库、依赖里添加OneSignal需要的内容:

buildscript {
    repositories {
        // 保留你原有的google()、jcenter()等仓库,新增下面这行:
        maven { url 'https://plugins.gradle.org/m2/' }
    }
    dependencies {
        // 保留原有的gradle插件、google-services等依赖,新增OneSignal的classpath:
        classpath 'gradle.plugin.com.onesignal:onesignal-gradle-plugin:[0.12.10, 0.99.99]'
    }
}

allprojects {
    repositories {
        // 保留原有的仓库,新增这两个:
        maven { url 'https://maven.google.com' }
        maven { url 'https://plugins.gradle.org/m2/' }
    }
}

调整android/app/build.gradle

在正确的位置应用OneSignal插件并添加依赖:

// 一定要放在apply plugin: 'com.android.application'之后!
apply plugin: 'com.onesignal.androidsdk.onesignal-gradle-plugin'

android {
    // 检查下compileSdkVersion至少33,minSdkVersion至少21,OneSignal对版本有要求
    // 保留你原有的其他配置
}

dependencies {
    // 保留原有的所有依赖,新增OneSignal的RN包:
    implementation project(':react-native-onesignal')
}

// 可选:如果需要自定义OneSignal的gradle行为,在文件末尾加这个
onesignal {
    manifestKeep true
}

3. 同步Gradle并清理缓存

做完配置调整后,先同步再清理构建缓存:

  • 打开Android Studio,点File -> Sync Project with Gradle Files
  • 然后点Build -> Clean Project,接着Build -> Rebuild Project
  • 嫌IDE操作麻烦的话,终端里跑:cd android && ./gradlew clean && ./gradlew assembleDebug

4. 检查包版本兼容性

确保你装的react-native-onesignal版本和你的React Native版本匹配,RN 0.60+建议用最新的5.x版本。可以看看package.json里的版本,不对的话升级:

npm install react-native-onesignal@latest --save

5. 补全AndroidManifest配置

别忘了在android/app/src/main/AndroidManifest.xml里加OneSignal需要的权限和配置:

<!-- 放在manifest标签下 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<!-- 放在application标签内 -->
<meta-data android:name="com.onesignal.NotificationOpened.DEFAULT" android:value="DISABLE" />

如果做完这些还是失败,把完整的构建错误日志贴出来吧——比如是依赖冲突、版本不兼容还是某个配置漏了,日志能帮我们更快定位问题~

内容的提问来源于stack exchange,提问作者dor.elmaliach

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:12:01