我試圖在Android設備上運行JAIN-SIP堆棧(4.0.2)。 我能夠重新包裝所需的jar文件(jain-sip-api-1.2-src.jar,jain-sip-src-1.2.1111.jar,concurrent.jar,log4j-1.2.8.jar) 。JAIN-SIP 1.2 for Android:缺少javax.sip.STACK_NAME屬性
這是我用我的build.xml文件:
<!-- Converts this project's .class files into .dex files -->
<target name="-jarjar" depends="-compile">
<taskdef name="jarjar" classname="com.tonicsystems.jarjar.JarJarTask"
classpath="buildtools/jarjar-1.4.jar"/>
<jarjar jarfile="${out.absolute.dir}/JainSipApi1.2_re.jar">
<zipgroupfileset dir="mylib" includes="jain-sip-api-1.2-src.jar" />
<rule pattern="javax.sip.**" result="[email protected]"/>
</jarjar>
<jarjar jarfile="${out.absolute.dir}/JainSipRi1.2_re.jar">
<zipgroupfileset dir="mylib" includes="jain-sip-src-1.2.1111.jar" />
<rule pattern="gov.nist.**" result="[email protected]"/>
</jarjar>
<jarjar jarfile="${out.absolute.dir}/concurrent_re.jar">
<zipgroupfileset dir="mylib" includes="concurrent.jar" />
<rule pattern="EDU.**" result="[email protected]"/>
</jarjar>
<jarjar jarfile="${out.absolute.dir}/log4j-1.2.8_re.jar">
<zipgroupfileset dir="mylib" includes="log4j-1.2.8.jar" />
<rule pattern="org.apache.log4j.**" result="[email protected]"/>
</jarjar>
</target>
這是一個代碼示例,我試圖測試在沒有Android的環境中重新打包文件:
import sipper.sip.SipFactory;
...
sipFactory = SipFactory.getInstance();
sipFactory.setPathName("sipper.nist");
Properties properties = new Properties();
properties.setProperty("javax.sip.STACK_NAME", "Sipper");
properties.setProperty("javax.sip.IP_ADDRESS", "127.0.0.1");
sipStack = sipFactory.createSipStack(properties);
當我嘗試運行此代碼時,出現以下錯誤:
Problem initializing the SIP stack.
sipper.sip.PeerUnavailableException: Missing javax.sip.STACK_NAME property
at sipper.sip.SipFactory.createSipStack(SipFactory.java:144)
at SipLayer.<init>(SipLayer.java:86)
at SipperClient.main(SipperClient.java:51)
據我瞭解,我只是改變了軟件包的名稱,但它似乎不適用於某些軟件包的「內部」。這就是爲什麼我看着源,看到有一些硬編碼字符串,如:
if (name == null) throw new PeerUnavailableException("Missing javax.sip.STACK_NAME property");
現在是我的問題是有沒有合適的方法/解決方案,使JAIN-SIP下Android平臺?
感謝您的幫助提前:-)
丹尼爾