【问题标题】:Run application without GUI on iOS?在 iOS 上运行没有 GUI 的应用程序?
【发布时间】:2020-09-18 01:28:33
【问题描述】:

我有一个 C++ 库,我想将它包含到我的 iOS 应用程序中。它有单元测试。如果我简单地说,它是这样的:

#include <cstdio>
int main()
{
   printf("Test result\n");
}

是否可以在基于 arm64 的 iOS 设备上运行这种仅使用 stdin/stdout 的应用程序,以确保所有编译和工作正常?

我可以在带有 adb push/adb shell 的真正 Android 设备上执行此操作,所以我想知道,是否可以在基于 iOS 的设备上执行相同操作?

【问题讨论】:

  • 是否可以在基于 arm64 的设备上运行仅使用 stdin/stdout 的应用程序以确保所有编译和工作正常? 是的,Raspberry Pi 是 ARM64 并且可以运行Linux。
  • 基于我在安全相关环境中开发嵌入式控制设备的经验:在开发系统上编译并运行测试。您想测试源代码,而不是编译器,至少如果您不是编译器开发人员的话。
  • 为什么不可能?创建一个 Objective-C 项目(不是 Swift)并将你的代码放在 main 中而不调用 UIApplicationMain
  • @blld 这不是解决问题。 cmake+make 可以构建很好的控制台应用程序,没有任何objective-c,但是我如何从脚本部署/运行/收集此类应用程序的stdout/stderr/exit 代码?但是手动部署和运行所有 100 个单元测试并分析每次更改的结果并不有趣。

标签: c++ ios c iphone unit-testing


【解决方案1】:

目前尚不清楚您要归档什么。但让我猜猜:

  1. 存在您无法控制的第三方库。
  2. 此库中有测试。测试是一个单独的控制台应用。
  3. 您正在寻找一种方法来在 iOS 上的某种 shell 中运行此应用程序,该 shell 可以运行任意可执行文件。而且你不能因为所有的安全性。

但是,如果您有单元测试的源代码,那么只需进行一些小的更改,您就可以将它们编译为库,而不是可执行文件。并从您可以自己编写的“外壳”调用它们 - 一个小型主机应用程序,其唯一目的是调用这些测试(并可能通过任何适合您的连接发送它们的结果)。

更多信息你可以阅读here

是的,这个宿主应用程序会有一个 GUI,但我真的不明白你为什么反对它……如果你真的反对的话。

这些也可能有帮助:
debug bridge for iPhone / shell command prompt
ADB equivalent for iOS device

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-22
    • 2015-10-25
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多