我正在尝试在Android 2.3.3上使用JAIN-SIP(J-SIP)库。 (http://jsip.java.net/) 因此,我使用了SIP-Stack附带的非常基本的SIP示例应用程序。 此示例在Android设备上完美运行< = Android 2.2。
问题在于,Android 2.3.3带来了SIP-Strack及其系统库, 这是JAIN-SIP堆栈的略微修改版本。 因此,在Android 2.3.3设备上,内部SIP-Stack被加载(因为相同的包/库名称)而不是APK附带的JAIN-SIP,并且应用程序因“找不到功能”异常而崩溃(由于事实上,在这个内部Android 2.3.3 SIP-Stack中不存在某些功能。
我不知道的是,我如何“优先考虑”APK附带的JAIN-SIP堆栈并忽略Android系统SIP-Stack。
一个解决方案是使用内部SIP-Stack directyl,强烈建议不要使用,因为没有人知道它是否在下一个Android版本中没有进一步修改。
我想到的另一个解决方案是更改“我的”JAIN-SIP堆栈的包名称,它不会与内部SIP堆栈混淆。
manifest.xml中的uses-library声明不起作用,因为它仅适用于内部SDK-libs / SDK-Addons。
还有什么想法?
答案 0 :(得分:4)
我们正在考虑通过使用后转换工具重命名所有javax类并将jar与常规jsip jar一起发布,允许将JSIP Stack嵌入到任何Android设备中的jar。 见https://groups.google.com/d/topic/mobicents-public/UD7ZTX74Yrk/discussion
让
答案 1 :(得分:2)
我应用了我提出的解决方案并通过Eclipse Refactoring函数重命名了JSIP-stack的包,并使JSIp堆栈在Android 2.3.3仿真器和设备上运行。 样本和类“SipStackImpl.java”中有包路径字符串,应该手动重命名(查找/替换)到新的新包路径。
我用来自JSIP堆栈的射手和射击样本进行了测试。
它也在模拟器中的Android 2.2上运行。
如果有人能提出更好的解决方案,我会对此做出准备。