susumu @Wiki

JADの改行コード

最終更新:

匿名ユーザー

- view
メンバー限定 登録/ログイン
#blognavi
3G対応不具合の原因は予想通りJADファイルに関係していましたが、私の予想とはぜんぜん違うものでした。例えばJADファイルの改行コードを疑ったりして、調査に時間をかけてしまっておりました。

その調査の途中、JADとMANIFESTの改行コードがLFでないと、V702NKでインストールに失敗する、ということを知りました。他の機種ではCR+LFでも良いらしいのですが、V702NKでは制限されるそうです。V702NKだけ見捨てるわけにもいきませんので、JADとMANIFESTをの改行コードをLFに統一することにしました。

vNextTrainのために用意したJADとMANIFESTは、もともとLFになっています。MANIFESTはそのままJARに取り込まれるのでOK。JADファイルは開発環境がJarサイズをJADファイルに追記するときに、なぜか改行コードがCR+LFになってしまいます。私はEclipse+JSCL 1.2.2 Pluginを使ってVアプリを開発しています。この環境でVアプリプロジェクトを作成すると、同時にantのビルドファイルbuild.xmlが作成されます。このbuild.xmlが起動するupdatejad(Jarサイズを追記するタスク)uがLFをCR+LFに変更してしまっていました。これは、updatejadの実装が原因というより、JREのデフォルト改行コードの問題だと思われます。

そこで、Jarサイズの追記と同時にCR+LFになってしまったJADを、自動的にLFに戻すことを試みました。updatejadタスク後の、archiveタスクにfixcrlfを追記して、以下のようにします。

<target name="archive">
	<jar destfile="${bin}/${jarname}.jar" manifest="./MANIFEST.MF">
		<fileset dir="${preverified}" />
		<fileset dir="${res}" />
		<fileset dir="${nexttrain_core}/resource/"
			includes="**/*.png" />
	</jar>
	<copy file="./${jarname}.jad" tofile="${bin}/${jarname}.jad.crlf" />
	<updatejad jadfile="${bin}/${jarname}.jad.crlf" />
	<!-- Vodafone emulator plagin cannot handle special char code in path names.
		copy the target file into the directory whose name is simple. -->
		
	<!-- After executing 'updatejad', tasks modifying JAD files fail to
	     overwrite it.  Copy to avoid it. -->
	<copy file="${bin}/${jarname}.jad.crlf" tofile="${bin}/${jarname}.jad" />		
	<!-- Remove the first three lines in JAD added by tasks.
	     They cause error when we regist it to appli-get server. -->
	<replace file="${bin}/${jarname}.jad">
		<replacetoken><![CDATA[Manifest-Version: 1.0
Ant-Version: Apache Ant 1.5.3
Created-By: 1.4.2_10-b03 (Sun Microsystems Inc.)
]]></replacetoken>
		<replacevalue></replacevalue>
	</replace>
	<!-- JavaSE on Windows modifies JAD file's return code fro
	     LF into CR+LF.  CR+LF cause install error on 702NK -->
	<fixcrlf srcdir="${bin}" eol="lf" includes="${jarname}.jad" />
</target>

fixcrlfは、updatejad後のJADファイルに適用するとPermission deniedといわれたので、一度*.jad.crlfにコピーし、それを*.jadに再コピーしてfixcrlfするようにしてあります。また、ついでにJADファイルの先頭に追加されるプロパティをいくつか削っています。これらを削らないとアプリ★ゲットのアップロード時に怒られてしまいますので。

これで、Jarサイズ追記後のJADファイルは、無事改行コードがLFとなりました。これで702NKにもvNextTrainをインストール可能になったはず。702NKのユーザさんに、vNextTrainを使っていただけるかどうかはまた別問題ですが...


カテゴリ: [NextTrain] - &trackback() - 2006年03月14日 23:57:14
名前: コメント:
#blognavi
目安箱バナー