SPM实现framework自动管理和分发

这篇具有很好参考价值的文章主要介绍了SPM实现framework自动管理和分发。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前言

Swift Package Manager (SPM) 是苹果官方提供的用于管理 Swift 项目的依赖关系和构建过程的工具。它是一个集成在 Swift 编程语言中的包管理器,用于解决在开发过程中管理和构建包依赖项的需求。

那么如何使用SPM管理和分发Objective C编写的二进制库呢?下面为你一一解答。

二、先准备好你的web服务

具体请查看我的内网穿透:ngrok使用教程

三、制作OC的framework

如何制作framework自行查看网上教程,这里省略。

注意:

1、图片资源放在后缀为.xcassets的文件夹里面,这个文件夹放在framework里一起生成framework

加载图片:

NSBundle *bundle = [NSBundle bundleForClass:[self class]];

UIImage *applePic = [UIImage imageNamed:@"图片名称" inBundle:bundle compatibleWithTraitCollection:nil];

2、多语言文件也要放在framework里一起生成framework

+(NSString *)systemLanguage
{
    NSString *languageStr = [NSString stringWithFormat:@"%@",[[NSUserDefaults standardUserDefaults] objectForKey:@"appLanguage"]];
    return languageStr;
}

+(NSString *)funLocalizedString:(NSString *)key
{
    NSString *lprojPath = [[NSBundle bundleForClass:[self class]] pathForResource:[INDOTool systemLanguage] ofType:@"lproj"];
    NSString *content = [[NSBundle bundleWithPath:lprojPath] localizedStringForKey:(key) value:nil table:nil];
    return content;
}

3、在制作framework的时候,在库文件的build setting - framework search path里面的值清空,如:$(inherited),$(PROJECT_DIR)

SPM实现framework自动管理和分发,iOS,ios

四、安装carthage

Carthage是一个用于管理iOS和Mac项目的依赖关系的分发管理器。它允许你从源代码仓库中获取依赖项,并将它们编译为可嵌入到你的应用程序中的二进制框架。

用于生成:xcframework

1、在命令行执行:brew install carthage

2、cd到生成库文件的工程目录,执行:carthage build --no-skip-current --use-xcframeworks

编译成功后再跟目录下会出现 Carthage 文件夹,里面就有我们需要的 XCFramework 了。生产xcframeworks

如果遇到这个问题:

Skipped building XXXSDK due to the error:

Dependency "XXXSDK" has no shared framework schemes

解决:这里勾上,多试几次取消后又勾上,这个有点奇葩SPM实现framework自动管理和分发,iOS,ios

五、上传xcframework.zip到web服务

压缩上面生成的xcframeworks。并且上传到你的web服务器,这个时候你会得到一条下载这个压缩包的链接,如:https://hhhhhhhhhhhh.xcframework.zip

可以用:curl -O xcframework.zip的链接。来下载

在命令行中运行shasum -a 256 hhhh.xcframework.zip。得到这个压缩包的SHA256 哈希值

六、制作package.swift

1、以下命令行会自动帮你初始化一个package.swift的管理需要的文件

$ mkdir CommandLineTool
$ cd CommandLineTool
$ swift package init --type library

2、编写package.swift文件

// swift-tools-version:5.8 //这句不可以删除,指定版本的

import PackageDescription

let package = Package(
    name: "MyLibrary",
    platforms: [
        .iOS(.v13) // 适用的 iOS 版本
    ],
    products: [
        .library(
            name: "MyLibrary",
            targets: ["MyLibraryTarget"]
        ),
    ],
    dependencies: [
        .package(url: "https://github.com/facebook/facebook-ios-sdk", from: "14.0.0"), // Facebook 登录库的依赖
        .package(url: "https://github.com/adjust/ios_sdk", from: "4.33.6") // Adjust 库的依赖
    ],
    targets: [
        .binaryTarget(
            name: "MyLibrary", // 二进制库的名称
            url: "", // 二进制库的下载链接 上一步生成的
            checksum: "" // 二进制库的校验和 上一步生成的
        ),
        .target(
            name: "MyLibraryTarget",
            dependencies: [
                .target(name: "MyLibrary"), // 添加对二进制库的依赖
                .product(name: "FacebookLogin", package: "facebook-ios-sdk"), // 添加对 Facebook 登录库的依赖
                .product(name: "Adjust", package: "ios_sdk"), // 添加对Adjust库的依赖
            ]
        )
    ]
)

七、上传CommandLineTool文件夹

上传CommandLineTool文件夹到公司的git仓库,并且打上tag版本号。git仓库是公开的,这样其他人接入我们的framework的时候才可以下载。

八、Xcode中自动下载库

打开Xcode的file - add Packages

SPM实现framework自动管理和分发,iOS,ios

点击完成就会下载自己的库和第三方的库

最后就可以愉快的使用啦 文章来源地址https://www.toymoban.com/news/detail-638583.html

到了这里,关于SPM实现framework自动管理和分发的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • iOS xcframework项目提示“ld: framework not found”

    公司有一个项目,同时引用了.framework和.xcframework, 但是使用xcode编译的时候, 总是报一个srp的framework找不到,问题log如下: ld: framework not found srp clang: error: linker command failed with exit code 1 (use -v to see invocation) 日志中搜索发现“-framework srp” 字样。 检查源代码配置,发现

    2024年02月03日
    浏览(50)
  • ios 自制Framework 获取指定bundle并读取里面的资源

    原文地址:https://zhanglei.blog.csdn.net/article/details/121673288 目录 一、前言 二、访问应用资源 三、Framework中的资源存放 四、访问Framework中指定的bundle 五、访问bundle中的资源 六、建议Framework与bundle分开存放 应用中某些模块需要组件化,组件化后的工程最后会做二进制化处理,打包

    2024年02月14日
    浏览(32)
  • 【Unity iOS打包】The bundle at ‘***.app/Frameworks/UnityFramework.framework‘ contains disallowed file ··

    Unity导出XCode工程,打包上传AppleStoreConnect, Invalid Bundle. The bundle at \\\'AnimalsBAMBAM.app/Frameworks/UnityFramework.framework\\\' contains disallowed file \\\'Frameworks\\\'. (ID: 460dd08b-9828-4396-9d48-ca37cc7d1af5) 1. \\\"Always Embed Swift Standard Libraries\\\"设置为No: 2. 删除***.xcarchive(显示包内容)/Products/Applications/***.app(显示包

    2024年04月16日
    浏览(38)
  • 关于Flutter运行在iOS,报错 “ld: Framework not found XXX“

    案例:flutter 项目 运行在iOS上,报错 \\\" ld: Framework not found image_picker\\\" 例如:在 pubspec.yaml 文件中,有个依赖:image_picker,使用 flutter run iOS 命令时,报以下错误;将 iOS/Runner.xcworkspace 文件 运行在 XCode 有同样的问题: ld: framework not found 在Xcode中,打开 文件夹 - Pods - TARGETS ,发现

    2024年02月06日
    浏览(62)
  • iOS+Appium最简单的环境搭建,快速实现真机自动化测试

    整理不易耗时两星期配置成功,查看一两年前的教程文章走了太多弯路到处都是坑和报错 需配置环境:Homebrew、node、cnpm、Carthage、ios-deploy、libimobiledeviceideviceinstaller,Xcode,appiumWebDriverAgent,appium Inspector 1. Homebrew安装 Homebrew简称brew,是Mac上的软件管理工具(卸载和安装),和

    2023年04月27日
    浏览(50)
  • 【iOS】Include of non-modular header inside framework module问题

    最近使用高德地图的库时遇到如下问题: Include of non-modular header inside framework module ‘AMapLocationKit.AMapLocationVersion’: ‘/Users/lig/Documents/workspace/dcloud/SDK/SDK/Libs/AMapFoundationKit.framework/Headers/AMapFoundationVersion.h’ 工程引入了两个库,其中AMapLocationKit.AMapLocationVersion.h又引入AMapFoundati

    2024年02月05日
    浏览(32)
  • SwiftUI 实现一个 iOS 上 Files App 兼容的文件资源管理器

    在 SwiftUI 中自己白手起家写一个 iOS(或iPadOS)上迷你的文件资源管理器是有些难度滴,不过从 iOS 11 (2017年) 官方引入自家的 Files App 之后,我们就可以借助它的魔力轻松完成这一个功能了。 如上所示,我们使用 SwiftUI 原生功能完成了一个小巧的 iOS Files App 文件管理器,

    2024年02月10日
    浏览(56)
  • iOS开发之查看静态库(.a/.framework)中包含的.o文件和函数符号(ar,nm命令)

    .a/.framework其实是把编译生成的.o文件,打包成一个.a/.framework文件。a的意思是archive/归档的意思。 查看静态库.a文件包含的内容用下面的命令解压: 用ar命令打包静态库: 查看.a文件的symbols(符号),用下面的命令: 输出包含三个部分: 1、符号值。默认显示十六进制; 2、符号

    2024年02月11日
    浏览(49)
  • SQL 执行计划管理(SPM)

    任何数据库应用程序的性能在很大程度上都依赖于查询执行,尽管优化器无需用户干预就可以评估最佳计划,但是 SQL 语句的执行计划仍可能由于以下多种原因发生意外更改:版本升级、重新收集优化器统计信息、改变优化器参数或模式/元数据定义。由于无法保证计划始终向

    2024年02月14日
    浏览(39)
  • ios免越狱脚本实现方案,苹果手机实现自动抖音发私信且是中文输入,FN键切换输入法,最新的苹果11以上圆角的屏幕一并支持。

    苹果手机实现自动抖音发私信且是中文输入,FN键切换输入法,最新的苹果11以上圆角的屏幕一并支持。 今天用双头硬件,一小时不到,用易语言写了一个DEMO脚本。苹果手机实现自动化操作抖音,可以自动点赞、留言、特别是发私信的中文输入。FN键的支持,牛啊。 不用什么

    2024年02月15日
    浏览(164)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包