使用 eas 构建/托管工作流程将 gradle 存储库添加到 expo 应用程序构建中

Cus*_*sto 6 android gradle expo eas

我有以下...

情况:

我有一个在世博平台上构建的反应本机应用程序(我们称之为“MyApp”)。我用来eas build构建项目。

最近,我分叉了 expo-camera 软件包来更新 iOS 部分,以便能够使用超广角相机。现在我保持 Android 部分不变。我将我的 fork 上传到 npm-registry asmyApp-expo-camera并将 MyApp 中的依赖项从 更新expo-cameramyApp-expo-camera

错误:

现在,当我构建 iOS 时,一切都按预期工作,但是当我构建 Android 时,它告诉我,它缺少软件包cameraview

FAILURE: Build failed with an exception.
* What went wrong:
Could not determine the dependencies of task ':app:lintVitalRelease'.
> Could not resolve all artifacts for configuration ':app:debugCompileClasspath'.
> Could not find com.google.android:cameraview:1.0.0.
     Required by:
         project :app > project :expo > project :expo-camera
Run Code Online (Sandbox Code Playgroud)

问题:

该软件包以 .aar 存档形式cameraview提供。expo-cameraREADME.md中说expo-camera在托管博览会项目中安装,expo install expo-camera这对我来说不是解决方案,因为我想使用我的 fork。

对于在裸反应本机项目中的安装,它表示将以下内容添加到build.gradle

allprojects {
    repositories {

        // * Your other repositories here *

        // * Add a new maven block after other repositories / blocks *
        maven {
            // expo-camera bundles a custom com.google.android:cameraview
            url "$rootDir/../node_modules/expo-camera/android/maven"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

据我了解,我可以使用“none expo”第三方反应本机包,因为我正在使用,eas build但我无法将其添加到,build.gradle因为我仍然处于 expo 的托管工作流程中(因此甚至没有build.gradle文件)。

有人知道如何解决这种情况吗?

真挚地

Cus*_*sto 2

碰巧,我找到了解决问题的方法。所以对于有类似问题的每个人:

该包在插件目录中expo-camera有一个文件。withCamera.ts该文件包含将所需的代码行build.gradle写入build.gradle您的实际/自己的项目的逻辑。但要实现此目的,您需要expo-camera在工作流程的预构建部分运行分叉包eas build。这可以通过将以下内容添加到您自己的 expo-project 中的 app.json / app.config.js 来实现:

plugins: ['myApp-expo-camera'],
Run Code Online (Sandbox Code Playgroud)

通过这条线eas build,流程知道您myApp-expo-camera需要预先构建。

还要确保您已将withCamera.ts文件中的包名称调整为您的分支(例如myApp-expo-camera)。

我仍然不明白的是: 为什么您不需要对原始expo-camera包执行此操作...但也许世博会已经在预构建配置中拥有了自己的所有包...谁知道呢!