Упаковка приложения Blackberry для разных версий ОС с помощью файла JAD - PullRequest
2 голосов
/ 17 ноября 2011

Что я ищу:

Я хочу упаковать свое приложение для различных версий Blackberry OS (5,6 и 7) . Чтобы пользователю не нужно было знать, какая версия ему нужна, он просто устанавливает приложение с веб-сайта.

Что я уже выяснил:

  • Мне нужно поискать в веб-каталоге (есть три каталога atm. Один для каждой версии)
  • Мне нужен JAD-файл вместо alx-файла, поскольку это веб-дистрибутив (также в сети нет alx, так что пока все нормально)

Что я думаю, это моя проблема:

Я не знаю, как упаковать эти три каталога в веб-каталог. Я думаю, что мне нужна только одна папка и файл JAD, который каким-то образом определяет, какая версия моего приложения устанавливается?

Не могли бы вы дать мне некоторые идеи.

1 Ответ

4 голосов
/ 17 ноября 2011

Если ваше приложение использует только OS5 API

Если вы разрабатываете свое приложение с использованием OS5 BlackBerry JRE (Java Runtime Environment), то оно будет работать на всех устройствах под управлением OS5, 6 и7. BlackBerry OS обратно совместима с предыдущими ОС, поэтому вам не нужно беспокоиться об упаковке для отдельных версий ОС.

Что касается упаковки приложения, вам просто нужно загрузить appname.jadи файлы appname.cod в файлах поставки / Standard / 5.0.0 на ваш веб-сервер, а затем направьте пользователей к нему со своего телефона BB, им будет предложено загрузить и установить его.

Если вашПриложение использует несколько API

Вам нужно будет распространять файл cod и jad для каждой используемой версии API.Загрузите их на свой веб-сервер, а затем используйте скрипт для определения версии ОС пользователя.Вот PHP-скрипт для этого:

<?php 

$strUserAgent = $_SERVER['HTTP_USER_AGENT'];

if (strpos($strUserAgent, "BlackBerry") !== FALSE){

$blnOSFound = false;

echo "This is a BlackBerry.";

/**
 * BlackBerrys have 2 user agent string formats, check for both:
 *
 * Mozilla/5.0 (BlackBerry; U; BlackBerry 9860; en-GB) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.0.0.296 Mobile Safari/534.11+
 * BlackBerry9700/5.0.0.351 Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/123
 *
 */
$arrAgentParts = explode(" ", $strUserAgent);

for ($i=0;$i<count($arrAgentParts);$i++){

    $strAgentPart = $arrAgentParts[$i];
     if (strpos($strAgentPart, "BlackBerry") === 0 &&
        strpos($strAgentPart, "/") !== FALSE){

        $intPositionOfSlash = strpos($strAgentPart, "/"); 
        $strOSVersion = substr($strAgentPart, $intPositionOfSlash+1, strlen($strAgentPart));
        $blnOSFound = true;
        break;

    } else if (strpos($strAgentPart, "Version") === 0){
        $intPositionOfSlash = strpos($strAgentPart, "/"); 
        $strOSVersion = substr($strAgentPart, $intPositionOfSlash+1, strlen($strAgentPart));
        $blnOSFound = true;
        break;            
    }
}

if ($blnOSFound){
    echo " OS Version: ".$strOSVersion;

    $intMajorOSVersion = substr($strOSVersion, 0, 1);

    //Redirect user to the jad file for their OS version
    switch ($intMajorOSVersion){

    case 5:
        Header("Location: 5.0.0/myapp.jad");
        break;  
    case 6:
        Header("Location: 6.0.0/myapp.jad");
        break;
    case 7:
        Header("Location: 7.0.0/myapp.jad");
        break;
    default:
        echo "Unsupported OS version";
        break;
    }

} else {
    echo " Could not find OS version";
}

} else {
echo "Not a BlackBerry";
}

?>

Возможно, вы захотите немного поэкспериментировать с этим, чтобы удалить операторы echo.

При разработке приложения для нескольких API существует 2 подхода:

  1. Поддерживать отдельные проекты для каждой версии API и использовать общую библиотеку кода, которая будет работать на всех API, чтобы избежать дублированияcode
  2. Определите директивы препроцессора в вашем BlackBerry_App_Descriptor.xml для условного включения кода на основе целевой ОС.Вам нужно будет изменять ссылочную BlackBerry JRE каждый раз, когда вы меняете целевую ОС (в Eclipse: Свойства-> Путь сборки Java-> Библиотеки).
...