我正在尝试在 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
我在以下页面中
遇到了这个环境变量: ref1和ref2。
我尝试按如下方式使用它。
- 创建一个环境变量
pub_hosted_url
并将其指向远程 svn 存储库中的目录。- 例如,
https://username:password@repository_url/dart_packages
.
- 例如,
dart_packages
然后在此文件夹中 添加并提交一个包。- 例如
built_value_generator-6.8.2
,以类似的方式及其所有相关依赖项。
- 例如
pubspec.yaml
然后像往常一样 添加依赖项。- 例如
built_value_generator: ^6.7.1
- 例如
- 然后运行
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 内部托管我们的包的正确格式是什么。