0

现在将 hermes 集成到 react-native 应用程序需要node_modules通过以下方式在本地包含文件

def hermesPath = "$rootDir/../../../node_modules/hermes-engine/android/";
debugImplementation files(hermesPath + "hermes-debug.aar")
releaseImplementation files(hermesPath + "hermes-release.aar")

我需要找到一种方法将这些文件托管在我已经用于 react-native android 依赖项之类的 s3 存储桶中。

4

1 回答 1

3

我的用例是独一无二的。我创建了一个安装 react-native 应用程序的 Android 活动。我./gradlew assembleRelease uploadArchives用来创建它的新版本,然后使用 ci/cd 从uploadArchives转储文件夹的目录将其上传到 s3。还具有已打包的依赖项,因此react-native node_module也可以并排放置在 s3 存储桶中。我的插件的根 build.gradle 文件引用存储桶本身来获取 react-native 依赖项,如下所示

maven {
    url "http://plugin name.s3.amazonaws.com/releases"
}

然后在依赖项块内的 app.build.gradle 中,implementation ('com.facebook.react:react-native:0.62.2') { force = true }

那是引用上传的对 s3 的 react-native 依赖。随着升级到62.2react-native 应用程序添加了一个额外的依赖项。为了使用爱马仕,需要添加以下行

def hermesPath = "$rootDir/../../../node_modules/hermes-engine/android/";
debugImplementation files(hermesPath + "hermes-debug.aar")
releaseImplementation files(hermesPath + "hermes-release.aar")

好吧,这对我们不起作用,因为当集成应用程序尝试添加 android 活动 + 捆绑的 javascript 并对其进行实例化时,它会因缺少 hermes 依赖项而崩溃。以下是错误:UnsatisfiedLinkError: couldn't find DSO to load。解决此问题的唯一方法是将上述依赖项从相对目录添加到父项目,这对我们来说不是一个选项。需要做的是在s3上托管hermesreleasedebugaar文件。但是,gradle/maven 不能使用 .pom 文件不附带的 aar 文件(我认为?我是新手)。所以我在这里发帖,@那个人通过了一个非常有用的命令。

mvn install:install-file -Dfile=node_modules/hermes-engine/android/hermes-release.aar -DgroupId=com.hermes -DartifactId=hermes-release -Dversion=0.4.1 -Dpackaging=aar -DgeneratePom=true

所以基本上这个命令以需要的方式创建一个版本化和消耗品。您可以对hermes的debug和release版本执行此操作(node_modules目录中有两个。

然后您可以将它们上传到 s3,插件可以引用依赖项,而父应用程序也不需要引用它们。(版本随意)

def jscFlavor = 'org.webkit:android-jsc:+'
dependencies {
    def enableHermes = project.ext.react.get("enableHermes", false);
    println enableHermes
      // for RN 0.61+
    if (enableHermes) {
        debugImplementation 'com.hermes:hermes-debug:0.4.1'
        releaseImplementation 'com.hermes:hermes-release:0.4.1'
    } else {
        implementation jscFlavor
    }
...
}
于 2020-05-06T18:23:21.530 回答