Использование препроцессора не так, чтобы сделать A SINGLE BUILD
для различных ВВ версий ОС (Независимо от того, что инструмент, который вы используете для подготовки сборки).
Препроцессоры используются только для удаления/добавления определенной части кода на основе предоставленных условий перед компиляцией/построением всего кода. В более общем плане, препроцессоры используются для рассмотрения исходного кода по-разному для разных условий. В более общем плане препроцессоры используются для создания различных исходных кодов для разных условий. В этом случае объем препроцессоров составляет только до скомпилировать/построить код ... не после вы создали код и получили исполняемый/.cod/... и т. Д. файл
Читать первые несколько строк THESE ссылки; хотя речь идет о C-препроцессорах, но базовая применима и здесь.
Предположим, ваш код выглядит следующим образом:
// 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
файл не будет работать на ББ версий ОС меньше, чем 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' кода удаляется ** JDE ** или ** Eclipse ** при упаковке проекта (до создания .cod). Таким образом, как только проект будет построен, то есть будет создан файл .cod, больше нет функций предварительных процессоров. –
, и если я не добьюсь этого, используя Ant .. можно ли это достичь? Только один билд Я отвечал на этот вопрос в http://stackoverflow.com/questions/10442995/how-to-use-ant-in-eclipse-for-preprocessing пожалуйста проверить это слишком @HeartBeat: – Yatin