0

我正在尝试在 svn repo 中托管我的颤振应用程序所依赖的所有包,并在没有互联网连接的系统中使用它(不幸的是,git 尚不可能)但可以访问这个 svn repo。

到目前为止我做了什么:

我知道我可以pubspec.yaml通过使用path属性在我的路径中使用基于路径的依赖项。例如

我可以依赖一个特定的包xyz,通过将其与它的依赖项一起保存在文件夹中,例如packages在文件夹旁边,lib如下所示。

project
 |_ lib
 |_ packages
   |_ xyz
   |_ dep1_for_xyz
   |_ dep2_for_xyz

pubspec.yaml然后如下所示引用它,这样就可以了。

dependencies:
  flutter:
    sdk: flutter

  xyz:
    path: packages/xyz

问题和问题:pub_hosted_url我在以下页面中 遇到了这个环境变量: ref1ref2

我尝试按如下方式使用它。

  1. 创建一个环境变量pub_hosted_url并将其指向远程 svn 存储库中的目录。
    • 例如,https://username:password@repository_url/dart_packages.
  2. dart_packages然后在此文件夹中 添加并提交一个包。
    • 例如built_value_generator-6.8.2,以类似的方式及其所有相关依赖项。
  3. pubspec.yaml然后像往常一样 添加依赖项。
    • 例如built_value_generator: ^6.7.1
  4. 然后运行flutter pub get -v​​.

问题 1 我目前在客户端面临握手错误。我理解这一点是因为 svn server 使用的证书。由于是自签名证书,flutter/pub/dart 无法验证此证书的有效性。

以下是我看到的错误。

[ +528 ms] IO  : Retry #1 for GET https://pub_hosted_url/api/packages/built_value_generator...
[   +3 ms] IO  : HTTP GET https://pub_hosted_url/api/packages/built_value_generator
[   +2 ms]     | Accept: application/vnd.pub.v2+json
[   +2 ms]     | user-agent: Dart pub 2.7.0
[  +24 ms] IO  : HTTP error:
[   +2 ms]     | HandshakeException: Handshake error in client (OS Error:
[   +2 ms]     |        CERTIFICATE_VERIFY_FAILED: self signed certificate in certificate chain(handshake.cc:354))
[   +1 ms]     |
[   +1 ms]     | dart:_http                                         _HttpClient.openUrl
[   +2 ms]     | package:http/src/io_client.dart 33:36              IOClient.send
[        ]     | package:pub/src/http.dart 68:39                    _PubHttpClient.send
[        ]     | package:http_retry/http_retry.dart 97:33           RetryClient.send

问题 1 如何让我flutter pub get知道这是一个受信任的主机,甚至将此证书添加到其受信任的列表中。

问题2: 我看到的这个问题来自上面的错误消息,其中的包是用以下url格式查找的https://pub_hosted_url/api/packages/my_dependency。这意味着flutter pub get期望包以非常特定的格式或特定位置放置。除了这里pub_server的 alpha 级别包之外,我找不到任何相关文档。

问题 2 所以问题是如果可能的话,在 svn repo 内部托管我们的包的正确格式是什么。

4

0 回答 0