簡體   English   中英

使用 eas build/managed 工作流程將 gradle 存儲庫添加到 expo 應用程序構建

[英]Add a gradle repository to an expo app build with eas build / managed workflow

我有以下...

情況:

我在世博平台上構建了一個反應原生應用程序(我們稱之為“MyApp”)。 我使用eas build來構建項目。

最近我分叉了 expo-camera 包來更新 iOS 部分,以便能夠使用超寬相機。 現在我沒有觸及 android 部分。 我將我的 fork 作為myApp-expo-camera上傳到 npm-registry,並將 MyApp 中的依賴項從expo-camera更新為myApp-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

問題:

這個cameraview包與expo-camera一起作為.aar 存檔。 expo-camera中的README.md 說明在托管的 expo 項目中安裝使用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"
        }
    }
}

據我了解,我可以使用“none expo”第三方反應原生包,因為我使用的是eas build但我不能將它添加到build.gradle因為我仍然在 expo 的托管工作流程中(因此做甚至沒有build.gradle文件)。

有人知道如何解決這種情況嗎?

真摯地

碰巧,我找到了解決問題的方法。 所以對於每個有類似問題的人:

expo-camera包在插件目錄中有一個文件withCamera.ts 該文件包含邏輯,將所需的build.gradle代碼行寫入您實際/自己的項目的build.gradle 但要使其正常工作,您需要在eas build工作流程的預構建部分運行分叉的expo-camera包。 這可以通過將以下內容添加到您自己的 expo-project 中的 app.json / app.config.js 來實現:

plugins: ['myApp-expo-camera'],

通過這條線, eas build過程知道,您的myApp-expo-camera需要預先構建。

還要確保您已將withCamera.ts文件中的包名調整為您的 fork(例如myApp-expo-camera )。

我仍然不明白的是:為什么你不需要為原始的expo-camera包這樣做......但也許 expo 已經在預構建配置中擁有所有自己的包......誰知道!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM