• atwiki
  • susumu @Wiki
  • トップページ/2006年03月14日/JADの改行コードの編集履歴ソース
「トップページ/2006年03月14日/JADの改行コード」の編集履歴(バックアップ)一覧に戻る

トップページ/2006年03月14日/JADの改行コード - (2006/03/15 (水) 00:12:45) のソース

#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を使っているのですが、Jarサイズを追記するupdatejadが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ファイルの先頭に追加されるプロパティをいくつか削っています。これらを削らないとアプリ★ゲットのアップロード時に怒られてしまいますので。

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

#right{
カテゴリ: &#x5b;[[NextTrain>トップページ/カテゴリ/NextTrain]]&#x5d; - &trackback() - 2006年03月14日 23:57:14
}
#comment(nostyle,nsize8,size30)
#blognavi
目安箱バナー