flutter 开发package 发布到pub.dev

这篇博客介绍了如何创建和发布Flutter纯Dart包,包括使用`flutter create --template=package`命令创建包,理解package的目录结构,配置`pubspec.yaml`,发布前的检查及实际发布步骤。此外,还分享了解决发布过程中遇到的网络问题,如需翻墙设置代理的解决办法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、package分类

 

1. flutter package 纯dart包 只写flutter代码,不涉及原生

2. flutter plugin 插件包 设计原生代码

本文只讨论dart包

二、创建dart包

flutter create ---template=package packageName(名称)

三、结构

lib/xiangjbtest.dart Dart实现代码

pubspec.yaml 配置文件

CHANGELOG.md. 修改记录

LICENSE 许可证文件

README.md 描述文件 用来介绍自己的package

四、发布前的配置

pubspec.yam

name: xiangjbtest  #标题
description: 这是一个简介
version: 0.0.1  #版本
homepage: https://github.com/xxx/xxx.git  #该package对应的git地址

LICENSE文件。随便在pub.dev库里找一个复制就行

MIT License

Copyright (c) 2019 Remi Rousselet

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

 

五、发布前的检查

flutter packages pub publish --dry-run

六、发布

flutter packages pub publish

"y" 继续 

不出意外下面会有一个链接 复制去浏览器登录google账号验证一下即可

最后来一张成功的照片(我这个是因为之前上传过 所以没有链接直接就成功啦) 

七、遇到的问题

1、

这个界面一直没反应了 是因为需要翻*墙 设置好之后在命令行执行(端口改成自己的)

export https_proxy=http://127.0.0.1:19180

export http_proxy=http://127.0.0.1:19180 

set https_proxy=https://127.0.0.1:19180 

set http_proxy=http://127.0.0.1:19180 

2、判断有没有外网

 这个样子是没有外网的

这个样子是有外网的

有其他问题欢迎留言讨论

 

<think>好的,我现在需要解决用户遇到的构建错误:配置项目':flutter_keyboard_visibility'时出现问题,提示无法创建LibraryVariantBuilderImpl的实例,并且没有指定命名空间。用户已经提供了错误信息和相关的build.gradle路径。 首先,我需要理解这个错误的原因。根据错误信息,问题出在Android模块的build.gradle文件中没有指定namespace。这可能是因为项目使用了较新版本的Android Gradle插件(AGP),而旧版本的库可能没有正确配置namespace。在Android开发中,namespace通常用于资源管理和避免冲突,特别是在库模块中必须指定。 接下来,我需要定位到具体的build.gradle文件。用户提供的路径是flutter_keyboard_visibility-5.4.1的android/build.gradle,这表明问题出在这个第三方库的配置上。可能该库的当前版本没有适配AGP 7.0或更高版本,因为从AGP 7.0开始,namespace成为必需项。 解决方案的第一步应该是检查该库是否有更新的版本。用户使用的是5.4.1版本,可能已经有新版本修复了这个问题。如果存在更新的版本,升级依赖是最简单的解决办法。如果没有,可能需要手动修改库的build.gradle文件。 如果必须手动修复,找到该库的android/build.gradle文件,并在android块内添加namespace。通常,Android库的命名空间遵循包名结构,比如com.example.libraryname。需要确认正确的命名空间,可能需要查看库的包结构或文档。 另外,可能需要检查项目的Gradle版本和AGP版本是否兼容。如果用户的项目使用的是较新的AGP,而库的配置未更新,也会导致此类问题。在这种情况下,可能需要调整库的配置或暂时降级AGP版本,但这可能影响其他依赖。 还要考虑是否有其他配置错误,例如是否应用了正确的插件,如com.android.library,而不是application插件。同时,确保所有必要的配置如compileSdkVersion、minSdkVersion等都已正确设置。 用户可能不太熟悉如何修改第三方库的代码,所以需要提供明确的步骤,指导他们如何找到并修改build.gradle文件,或者在pubspec.yaml中通过dependency_overrides强制使用修复后的版本。此外,提醒用户清除Gradle缓存和重新构建项目也是必要的步骤,以确保修改生效。 最后,如果问题依然存在,可能需要向库的维护者提交issue,或者寻找替代库。同时,建议用户备份项目,避免修改第三方库带来的潜在风险。</think>以下是解决 `flutter_keyboard_visibility` 构建问题的分步指南: --- ### **问题分析** 错误提示表明 **Android Gradle 插件 (AGP)** 在构建 `flutter_keyboard_visibility` 库时,发现模块未定义 `namespace`。这是由以下原因导致的: - AGP 7.0+ 强制要求库模块必须声明 `namespace` - 旧版 `flutter_keyboard_visibility` 未适配新规范 --- ### **解决方案** #### **方法 1:升级依赖版本(推荐)** 1. 检查最新版本 访问 [pub.dev](https://pub.dev/packages/flutter_keyboard_versions) 确认是否有新版已修复此问题。当前最新版本为 **7.3.0**。 2. 修改 `pubspec.yaml` ```yaml dependencies: flutter_keyboard_visibility: ^7.3.0 # 使用最新版本 ``` 3. 清理并重建 ```bash flutter clean flutter pub get flutter run ``` --- #### **方法 2:手动修复旧版本** 如果必须使用 **5.4.1** 版本,按以下步骤操作: 1. 定位库文件 打开路径: `C:\Users\gongf\AppData\Local\Pub\Cache\hosted\pub.dev\flutter_keyboard_visibility-5.4.1\android\build.gradle` 2. 添加 `namespace` 在 `android` 配置块内添加: ```groovy android { namespace 'com.jeffg.dev.flutter_keyboard_visibility' // 自定义命名空间 compileSdkVersion 33 // 其他配置... } ``` 3. 完整配置示例: ```groovy apply plugin: 'com.android.library' android { namespace 'com.jeffg.dev.flutter_keyboard_visibility' compileSdkVersion 33 defaultConfig { minSdkVersion 16 targetSdkVersion 33 } } ``` --- #### **方法 3:强制使用修复版本** 在 `pubspec.yaml` 中覆盖依赖路径: ```yaml dependency_overrides: flutter_keyboard_visibility: path: /your/local/fixed/version # 本地修改后的版本 ``` --- ### **附加操作** 1. **清理缓存** 删除以下目录: - `flutter clean` - `android/.gradle` - `~/.gradle/caches` 2. **检查 Gradle 版本** 确保项目根目录 `android/build.gradle` 中 AGP 版本兼容: ```groovy dependencies { classpath 'com.android.tools.build:gradle:7.4.2' // 推荐 7.3.0+ } ``` --- ### **技术原理** - **Namespace 作用** 用于 Android 资源唯一标识(R 类生成),防止库间资源冲突 - **AGP 版本要求** | AGP 版本 | 是否强制命名空间 | |----------|------------------| | <7.0 | 可选 | | ≥7.0 | 必须 | --- ### **替代方案** 如果问题持续,可考虑以下替代库: ```yaml dependencies: keyboard_utils: ^3.1.0 # 轻量级键盘监听 flutter_keyboard_size: ^2.0.0 ``` --- 完成修复后,建议提交 `patch-package` 保存修改,避免重复出现此问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值