使用預處理器是不是讓A SINGLE BUILD
不同的BB OS版本(無論方式是什麼你用來準備構建的工具)。
預處理器僅用於在編譯/構建整個代碼之前根據提供的條件刪除/添加特定部分的代碼。更一般地說,預處理器用於針對不同條件以不同的方式考慮源代碼。更一般地說,預處理器用於爲不同條件產生不同的源代碼。 在這種情況下,預處理器的範圍只有之前編譯/構建的代碼... 不是之後,你已經建立了代碼,並得到了可執行文件/ .cod/...等。文件
閱讀前幾的THESE鏈接線;雖然這些都是關於C-Preprocessors的,但基本也適用於此。
假設你的代碼如下:
// START OF CODE
//#preprocess
// this is the second line of the code
//...
//#ifdef OS_5
import net.rim.device.api.ui.component.AutoCompleteField;
//#else
//don't import AutoCompleteField and import something else if needed
//#endif
//...
//... // some more codes
//...
//#ifdef OS_5
//...
//...
// Codes for using AutoCompleteField
//...
//...
//#else
//...
//...
// Codes for implementing AutoCompleteField another way by yourself
//...
//...
//...
//... // some more codes
//...
// END OF CODE
不要緊,你用什麼工具來構建你的代碼(JDE,Eclipse或使用Ant),如果你建立與預處理'OS_5'
然後(如果您的工具可以理解的預處理程序)下面的代碼將生成:
// START OF CODE
// this is the second line of the code
//...
import net.rim.device.api.ui.component.AutoCompleteField;
//...
//... // some more codes
//...
//...
//...
// Codes for using AutoCompleteField
//...
//...
//...
//... // some more codes
//...
// END OF CODE
和.cod
文件將與上面的代碼生成。這.cod
文件不會對BB OS版本低於5.0,因爲AutoCompleteField
從OS 5
支持,如果你建立不預處理器「OS_5」或其他預處理器 然後將以下代碼並運行將生成:
// START OF CODE
// this is the second line of the code
//...
//don't import AutoCompleteField and import something else if needed
//...
//... // some more codes
//...
//...
//...
// Codes for implementing AutoCompleteField another way by yourself
//...
//...
//...
//... // some more codes
//...
// END OF CODE
和將使用上面的代碼來生成.cod
文件,這將是比前一個不同的.cod
文件。
現在,如果您想準備A SINGLE BUILD
併成功部署不同的BB OS支持的設備,那麼編碼時必須使用remove dependencies
,即僅使用所有操作系統版本支持的API類(4.6,5.0 .. 。和其他人,如果你想)。但是有些時候對於某些情況來說很困難,因爲您可能必須編寫自己的代碼來實現某些功能。
它更容易準備建立不同的不同的操作系統---和這個目的,你可以使用過程預處理器..
恐怕可能是我曾經在一個很說明一件容易的事複雜的方式。
您必須爲不同的操作系統製作不同的版本(.cod/.jad文件)才能部署操作系統特定的功能。預處理器僅用於指示構建項目時要保留/刪除哪些代碼部分。對於代碼'//#ifdef some_condition some_code',如果'some_condition'失敗,那麼這個'some_code'部分的代碼在打包項目時(在製作.cod之前)被** JDE **或** Eclipse **刪除。所以,一旦項目建成,即.cod文件被創建,預處理器就沒有更多的功能。 –
,如果我不想通過使用Ant來實現它。是否可以實現?剛一建立 我 張貼了這個問題 http://stackoverflow.com/questions/10442995/how-to-use-ant-in-eclipse-for-preprocessing 請你看看這個太@HeartBeat: – Yatin