我正在开发一个相当复杂的iOS应用程序.为了使开发合理化,我开始将每个模块开发为独立项目,然后在顶层应用程序项目中一起组合,从而生成依赖关系树.
我以前成功地采用了这种方法,但这次有共享依赖(C)导致问题:
A
/|\
/ | \
B C D
/ \ \
C E C
Run Code Online (Sandbox Code Playgroud)
其中A是顶级应用程序项目,C是函数的"核心库".此核心库是A本身以及模块B和D 的依赖项.由此产生的多重编译会导致构建文件夹中的重复符号并且链接失败.
现在,我可以务实,只是从A中删除引用,因为这将被B编译到构建文件夹中,如果不涉及D,这将起作用.但是我如何解决B和D中C依赖的重复? 当我独立编译它们时,B和D项目仍然需要对C的引用,但是在A的上下文中编译两次时会发生冲突.
我可以想象一些使用objcopy并给它们唯一前缀的复杂解决方案,但这会有点效率低,因为它是相同的代码.我可以忍受这个,但有更好的方法吗?也许某些编译器或链接器标志重用构建文件夹中的现有符号(如果存在),而不是再次编译?
谢谢你的建议.
我不是Java的新手,而是Android平台的新手.我发现其中一个平台缺点是对运行时崩溃有意义的反馈.在断点适用的用户代码中很好,但我在第一次运行时遇到了阻止我的项目启动的崩溃,我看不到跟踪它的方法.谁能摆脱任何光明?
DalvikVM[localhost:8626]
Thread [<1> main] (Suspended (exception RuntimeException))
ActivityThread.performLaunchActivity(ActivityThread$ActivityRecord, Intent) line: 2585
ActivityThread.handleLaunchActivity(ActivityThread$ActivityRecord, Intent) line: 2679
ActivityThread.access$2300(ActivityThread, ActivityThread$ActivityRecord, Intent) line: 125
ActivityThread$H.handleMessage(Message) line: 2033
ActivityThread$H(Handler).dispatchMessage(Message) line: 99
Looper.loop() line: 123
ActivityThread.main(String[]) line: 4627
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]
Method.invoke(Object, Object...) line: 521
ZygoteInit$MethodAndArgsCaller.run() line: 868
ZygoteInit.main(String[]) line: 626
NativeStart.main(String[]) line: not available [native method]
Thread [<6> Binder Thread #2] (Running)
Thread [<5> Binder Thread #1] (Running)
Run Code Online (Sandbox Code Playgroud)
模拟器和设备上相同.
我已经看到有关这些崩溃的报告是由无效XML的膨胀引起的,所以我已经从我的项目中删除了所有XML和资源,几乎是一个一个,并且同样的错误仍然存在!是否有任何技巧或工具可以申请尝试获得更有意义的错误消息?谢谢.