标签: ios-frameworks

什么是今天最常用的跨平台移动应用程序开发框架?

我和其他很多人一样,在移动世界中迈出了第一步,不知道从哪里开始......

好吧,我在这里看过一些关于移动开发框架或sdk的帖子,但所有这些帖子都针对特定目的,比如web客户端,小部件,html开发等等......

我真正想知道的是,在目前市场上的所有选择中,如PhoneGap,Rho或Corona,以及所有其他选择,什么是一般跨平台移动开发最常用的MDF.

显然,我不是想为每个目的找到完美的平台,但至少知道你的意见和你现在使用的框架,如果有的话......

谢谢您的帮助!

iphone android frameworks cross-platform ios-frameworks

9
推荐指数
2
解决办法
2723
查看次数

以前没有非静态变量'FrameworkNameVersionString'的extern声明

我创建了一个iOS框架,说CustomFramework和Xcode创建的CustomFramework.h文件默认具有以下内容

#import <UIKit/UIKit.h>

//! Project version number for CustomFramework.
FOUNDATION_EXPORT double CustomFrameworkVersionNumber;

//! Project version string for CustomFramework.
FOUNDATION_EXPORT const unsigned char CustomFrameworkVersionString[];

// In this header, you should import all the public headers of your framework  using statements like #import <CustomFramework/PublicHeader.h>
Run Code Online (Sandbox Code Playgroud)

当我构建项目时,我收到了这些警告

No previous extern declaration for non-static variable 'CustomFrameworkVersionNumber'
No previous extern declaration for non-static variable 'CustomFrameworkVersionString'
Run Code Online (Sandbox Code Playgroud)

知道为什么默认框架创建会给出这些警告吗?

xcode objective-c ios-frameworks

9
推荐指数
1
解决办法
1万
查看次数

错误ITMS-90206无效捆绑包含不允许的文件'框架'

我通过Xcode将我的应用程序上传到商店时遇到问题,特别是这个问题.

无效的Bundle包含不允许的文件框架

我看到很多关于这个错误的帖子,但所有人都在谈论Extension App,我不使用.

我正在使用Custom frameworkCocoapods.

你可以在这里看到我的树:

Tree Xcode项目自定义框架

  • XXX是我的项目应用名称
  • SharedXXX是我的custom framework
  • Pods是由.创建的项目cocoa pods

这是我的可可podFile:

use_frameworks!
link_with 'XXX', 'SharedXXX'
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.1'


workspace 'XXX'

xcodeproj 'XXX/XXX.xcodeproj'
xcodeproj 'Shared/SharedXXX.xcodeproj'

def default_pods
    pod 'Reveal-iOS-SDK', :configurations => ['Debug']
    pod "SnapKit", '~> 0.17.0'
    pod "DKChainableAnimationKit", '~> 1.6.0'
    pod "AsyncSwift"
end

def shared_pods
    pod "Alamofire", '~> 3.0'
    pod 'SwiftyJSON', :git => 'https://github.com/SwiftyJSON/SwiftyJSON.git'
    pod 'ReachabilitySwift', :git => 'https://github.com/ashleymills/Reachability.swift'
end

target :XXX do
    xcodeproj 'XXX/XXX.xcodeproj' …
Run Code Online (Sandbox Code Playgroud)

xcode ios ios-frameworks cocoapods swift-custom-framework

9
推荐指数
2
解决办法
8662
查看次数

从应用程序扩展链接到嵌入式框架

我有一个项目

  • 一个应用目标: MyApp
  • 一个嵌入式框架目标: MyKit.framework
  • 一个应用扩展目标: MyExtension

这是一个示例项目.

我想使用的共享代码MyKitMyExtension,但是当我联系了,我得到的警告

ld: warning: linking against a dylib which is not safe for use in application extensions: /Users/me/Library/Developer/Xcode/DerivedData/MyApp-dnztzmxjghjlsteetlokzhjtjqkm/Build/Products/Debug-iphonesimulator/MyKit.framework/MyKit
Run Code Online (Sandbox Code Playgroud)

Apple的文档说

要配置应用程序扩展目标以使用嵌入式框架,请将目标的"仅限应用程序扩展安全API"构建设置设置为"是".如果不这样做,Xcode会提醒您这样做,方法是显示警告"链接到dylib并不安全,无法在应用程序扩展中使用".

默认情况下正确设置.我可以通过将"仅限App-Extension-Safe API"设置为NO来消除警告,但这可能会导致某些应用程序被拒绝.

该框架不使用应用程序扩展中不允许的任何API.实际上,在示例项目中,您将看到MyKit.framework仅将消息记录到控制台.

从应用程序扩展链接到嵌入式框架的正确方法是什么,以避免这种错误?

xcode ios ios-frameworks ios-app-extension xcode8

9
推荐指数
1
解决办法
4587
查看次数

当pod lib lint成功时,pod spec lint失败.'vendored_frameworks'模式与任何文件都不匹配

我制作了一个框架,我想通过CocoaPods分发.

我不确定我是不是做了些蠢事.我在基本目录中包含了一个完整的.framework文件夹,我希望它能成为我的pod的源代码.当我运行"pod lib lint"时,一切似乎都很好但是当我运行"pod spec lint"时,我得到:

- ERROR | [iOS] The `vendored_frameworks` pattern did not match any file.
Run Code Online (Sandbox Code Playgroud)

我在查看stackoverflow之后尝试添加preserve_paths,但这似乎无法解决我的问题.通过阅读cocoapods文档,vendored_frameworks是"随Pod一起提供的框架包的路径",所以我认为在这里使用它似乎很好.

这是我的podspec文件:

Pod::Spec.new do |s|
  s.name             = "X"
  s.version          = "1.0"
  s.summary          = "Summary"
  s.description      = "Description here"
  s.homepage         = "http://www.valid_homepage.com/"
  s.license          = { :type => "Commercial", :text => "See https://www.license_here" }
  s.author           = { "Author" => "author@website.com" }
  s.source           = { :http => "https://storage.googleapis.com/path/to/file" }
  s.social_media_url = 'https://twitter.com/handle'
  s.platform     = :ios, '7.0'
  s.requires_arc = true
  s.preserve_paths = 'X.framework'
  s.vendored_frameworks = 'X.framework' …
Run Code Online (Sandbox Code Playgroud)

ios ios-frameworks cocoapods podspec

8
推荐指数
1
解决办法
2820
查看次数

如何在iOS应用程序中调试carthage(拥有)依赖项?

我有一个iOS应用程序项目,有几个私有(拥有)carthage依赖项,有时我需要调试错误或知道某些方法执行的代码是什么.

我想知道在Carthage/Checkouts使用运行脚本时是否有一种简单的方法来设置框架源代码,这样如果我进行carthage更新并运行我的应用程序,就可以调试框架源代码,而无需添加子项目.

这可以通过在框架构建中包含调试符号来完成,如果是这样,我需要做什么才能使其工作?

debugging xcode ios ios-frameworks carthage

8
推荐指数
1
解决办法
2373
查看次数

应用程序崩溃在设备上,但适用于模拟器iOS

应用程序不是由我开发的,但现在我必须添加一些功能.代码编译在模拟器上添加启动但在真实设备上立即崩溃(didFinishLaunchingWithOptions从不调用).Xcode没有显示任何错误.我认为问题可能在pods和框架中,但不知道如何检查是否如此.我重新安装了pods并在项目中重新创建了框架依赖项,但没有应用程序仍然崩溃.我只有Xcode的这些信息 在此输入图像描述 在此输入图像描述

这些信息如何帮助我?任何帮助赞赏.

UPD1:堆栈跟踪 在此输入图像描述

UPD2:iOS9和iOS10上的应用程序崩溃,因此NSCameraUsageDescription不是问题

iphone xcode ios ios-frameworks swift

8
推荐指数
2
解决办法
7102
查看次数

找不到目标“x86_64-apple-ios-simulator”的模块“MyCustomFramework”;发现:arm64、armv7-apple-ios、arm64-apple-ios、arm、armv7

我有一个自定义框架,我正在存档以用于另一个项目。更新到 Xcode11 后,我在使用该框架的项目中收到以下错误。

找不到目标“x86_64-apple-ios-simulator”的模块“MyCustomFramework”;发现:arm64、armv7-apple-ios、arm64-apple-ios、arm、armv7

我的框架在 Xcode10 上运行良好,但在 11 上不起作用。我的目标设置为 NO 仅用于构建活动架构。我有以下有效架构;arm64e、armv7s、armv7、arm64。

我的构建脚本

exec > ${PROJECT_DIR}/${PROJECT_NAME}_archive.log 2>&1

UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-universal

if [ "true" == ${ALREADYINVOKED:-false} ]
then
echo "RECURSION: Detected, stopping"
else
export ALREADYINVOKED="true"

# make sure the output directory exists
mkdir -p "${UNIVERSAL_OUTPUTFOLDER}"

echo "Building for iPhoneSimulator"
xcodebuild -workspace "${WORKSPACE_PATH}" -scheme "${TARGET_NAME}" -configuration ${CONFIGURATION} -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 11 Pro Max' ONLY_ACTIVE_ARCH=NO ARCHS='i386 x86_64' BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" ENABLE_BITCODE=YES OTHER_CFLAGS="-fembed-bitcode" BITCODE_GENERATION_MODE=bitcode clean build

# Step 1. Copy the framework structure (from iphoneos build) …
Run Code Online (Sandbox Code Playgroud)

ios ios-frameworks swift xcode11

8
推荐指数
1
解决办法
8555
查看次数

如何将包含pod的框架添加到另一个项目中

我正面临一个问题,并搜索了很多但没有找到任何解决方案.

我创建了一个使用MQTTKitSwift框架,"我使用它添加到我的框架中CocoaPods.

现在我创建了一个将使用上述框架的示例应用程序.

然后我创建了一个工作区,并将xcodeproj文件framework以及示例应用程序添加到工作区.

但现在我无法framework在我的示例应用程序中使用它.

我收到错误没有这样的模块MQTTKit在我的内部framework.

但是framework如果build它分开的话没有错误吗?

这个pods或其他东西有什么问题吗?

ios mqtt ios-frameworks swift

7
推荐指数
1
解决办法
5018
查看次数

无法生成(在归档时)位码束,因为静态框架(.framework)是在没有完整位码的情况下构建的

我们正在尝试在我们的静态框架中完全启用Bitcode,但是在将应用程序与框架集成时,尽管我们能够在模拟器或设备上构建它,但是在归档应用程序时收到以下错误。

ld: bitcode bundle could not be generated because '.framework/p-iOS(PTFWOperationPrepareTransaction.o)' was built without full bitcode. All object files and libraries for bitcode must be generated from Xcode Archive or Install build file '.framework/p-iOS' for architecture armv7
Run Code Online (Sandbox Code Playgroud)

我们已经验证了位码状态,otool -l Versions/A/p-iOS | grep __bitcode并且似乎已正确启用 在此处输入图片说明

以下是我们在框架端针对比特码的项目设置, 在此处输入图片说明

以下是我们在应用程序端的位项目设置, 在此处输入图片说明

谦虚的要求: 请检查以上屏幕截图中的设置,因为我们已经检查了所有与SO相关的查询,因此请不要将其作为参考。 在此处输入图片说明

另外,我们已经尝试使用静态库,框架和位码来解决问题。

提前致谢。

xcode ios ios-frameworks bitcode xcode9

7
推荐指数
1
解决办法
1461
查看次数