在目标c应用程序中包含另一个.app

时间:2017-02-14 13:22:57

标签: objective-c nwjs

以下是这种情况。我使用nw.js创建了一个应用程序,这很棒,因为我喜欢使用html,css和javascript。但是现在我想出售这个应用程序。我想做的是在objective-c中创建一个小包装应用程序,它将验证用户序列号并提供一定程度的复制保护。在我看来,我想象一个应用程序将在objective-c中。这将启动并验证用户,然后如果用户是合法的,它会将一些基本文件解压缩到nw.js包中并启动该应用程序。

现在nw.js可执行文件已经在一个应用程序包中,我想要做的是将该包嵌套在objective-c中,然后在适当的时候运行它。任何人都可以建议这是否可能,如果不是,我还能如何解决问题以保护我的申请。

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

这没有问题,以这种方式嵌套应用程序在OS X上很常见(因为你说" .app"我假设这是OS X,而不是iOS。这在iOS上是不可能的。我怀疑它作为一种复制保护机制特别有效,但这完全是different question(参见有关该主题的若干讨论的链接)。

关于什么是高效的问题?"不幸的是答案是#34;如果你不得不询问Stack Overflow,那么你所做的一切都可能非常有效;做一些简单的事情并继续前进。"它并不意味着你是一个糟糕的程序员或任何东西;它只是复制保护是一个混淆游戏,如果你使用你在Stack Overflow上找到的东西,它们可能不会被混淆。你提出一周一周的任何事情可能都不会混淆。如果你确实想出了一些非常好的东西,那么每当它被破坏时你仍然需要定期更新它。 Apple有一整个团队致力于此,他们控制系统的每个部分,包括硬件,但仍有越狱。

同样,这并不意味着你无能为力。你可以阻止一些人,特别是如果你的应用程序不那么有趣。但是不要浪费太多时间,因为它不会那么有效。 (如果这对您的商业计划非常重要,那么您应该研究商业解决方案。我没有建议,但希望花一些钱,并在他们被击败时更新到新版本。)

也就是说,嵌套应用程序并不难。

制作"子应用"你的目标的依赖。

添加新的"复制文件"阶段到您的构建:

enter image description here

将目的地设置为"可执行文件"并在此处拖动应用包:

enter image description here

如果您要启动它,只需使用NSBundle.pathForResource:...找到它,然后使用NSTask启动它。

答案 1 :(得分:0)

不,您不能在Objective C应用程序中包含另一个.app! 要从头开始创建一个原生的。

答案 2 :(得分:0)

其实我会推荐另一种方法。如果您希望获得某种程度的复制保护,则应使用nwjc将代码的一部分编译为二进制文件。我会向你解释一下。

  1. 构建应用程序,使用nwjc可以保护应用程序的某些部分。你不需要保护一切。只是那些难以复制的部分。请记住,使用该代码可以获得30%的性能损失。通常这是不可识别的,但如果你有大量的代码可能。

  2. 缩小您的代码。我用的是yuicompressor。它会删除代码中的所有注释并将其缩小。这样,如果其他人不可能阅读您的代码,那将是非常困难的。它还可以提高代码的性能。

  3. 您可以在objective-c项目中添加一个应用程序作为目标(我在swift项目中完成)并进行安装。但请记住。一旦您的应用程序将代码加载到nwjs应用程序中,代码签名就会被破坏,而另一个人可以再次读取该代码。只要nwjs运行,就无法完全保护代码。因此,您必须使用nwjc并缩小您的js。你也可以丑化你的js,使它更难以理解。

    你必须问自己的另一个问题。我的代码真的那么特别,没有人可以复制它。如果有人想偷你的东西,那么主要是创新。他们将创建自己的框架并编写自己的代码。好的程序员可以复制任何代码,无论它是否受到保护。他们只是分析输入和输出。因此,只要您没有任何疯狂的数学算法,我怀疑如果有人能够复制它,就会想要窃取它。即使你有复杂的代码。用nwjc保护零件,缩小和丑化会使它无法读取。有时我们在阅读自己的代码时遇到问题;)