如何在Flutter中创建保密库供其他项目调用(不暴露源码)
实现方案:将Flutter子应用作为保密库供父应用调用
1. 创建并配置子应用(保密库)
首先创建一个Flutter模块作为你的保密子应用:
flutter create --template module secret_child
在子应用中编写需要暴露的API,比如在lib/secret_api.dart中:
library secret_child; class SecretService { String fetchSecretContent() { // 这里是你的保密业务逻辑 return "Confidential data from child module"; } int calculateSecretValue(int input) { return input * 42; // 示例保密计算逻辑 } }
2. 编译子应用为平台专属二进制文件
在子应用根目录执行编译命令,生成无需源码即可使用的平台二进制:
针对Android生成AAR
flutter build aar --no-debug --no-profile
编译完成后,AAR文件会生成在build/outputs/aar/目录下,通常命名为secret_child-release.aar。
针对iOS生成XCFramework
flutter build ios-framework --no-debug --no-profile
编译完成后,XCFramework文件会生成在build/ios/framework/目录下,包括Flutter.xcframework和App.xcframework(后者是子应用代码编译后的产物)。
3. 父应用集成二进制文件
Android端集成
- 将生成的
secret_child-release.aar复制到父应用的android/app/libs/目录下(无libs目录则创建)。 - 修改父应用的
android/app/build.gradle文件,添加本地依赖:
dependencies { // 其他依赖... implementation files('libs/secret_child-release.aar') }
- 在父应用的Flutter代码中调用子应用API:
import 'package:secret_child/secret_api.dart'; void useSecretService() { final service = SecretService(); print(service.fetchSecretContent()); print(service.calculateSecretValue(10)); }
iOS端集成
- 将生成的
App.xcframework和Flutter.xcframework复制到父应用的ios/Frameworks/目录下(无Frameworks目录则创建)。 - 打开父应用的iOS项目(
ios/Runner.xcworkspace),右键点击Runner项目 → Add Files to "Runner",选择复制的两个xcframework文件,勾选"Copy items if needed"和"Create groups"。 - 修改父应用的
ios/Podfile:
flutter_application_path = '.' load File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb') target 'Runner' do use_frameworks! use_modular_headers! install_all_flutter_pods(flutter_application_path) # 添加对子应用framework的引用 pod 'App', :path => './Frameworks/App.xcframework' end
- 执行
pod install更新依赖,之后在父应用Flutter代码中调用子应用API的方式同Android端。
关键说明
- 此方案无需暴露子应用源码,父应用仅依赖编译后的二进制文件。
- 无需上传至pub.dev或引用外部路径依赖,二进制文件直接嵌入父应用项目。
- 若需跨平台支持,需分别生成对应平台的二进制文件并完成集成。
内容的提问来源于stack exchange,提问作者Surajit Roy
相关产品推荐
相关产品推荐

