使用JAD文件为不同的操作系统版本打包Blackberry App

时间:2011-11-17 09:45:26

标签: mobile blackberry distribution packaging blackberry-eclipse-plugin

我在寻找什么:

我想将我的应用程序打包为不同的黑莓os版本(5,6和7)。这样用户就不必知道他需要什么版本,只需从网站安装应用程序即可。

我已经找到了:

  • 我需要查看web目录(有三个目录atm。每个版本一个)
  • 我需要一个JAD文件而不是alx文件,因为它是一个web分发(在web中也没有alx,所以到目前为止还不错)

我认为我的问题是:

我不知道如何在web目录中打包这三个目录。我想我只需要一个文件夹和一个JAD文件,以某种方式管理我的应用程序的安装版本?

你能给我一些见解。

1 个答案:

答案 0 :(得分:4)

如果您的应用仅使用OS5 API

如果您使用OS5 BlackBerry JRE(Java运行时环境)开发应用程序,那么它将在运行OS5,6和7的所有设备上运行.BlackBerry OS向后兼容以前的操作系统,因此您不必担心关于各个OS版本的打包。

至于打包应用程序,您只需要将可交付件/ Standard / 5.0.0中的appname.jad和appname.cod文件上传到您的Web服务器,然后将用户从他们的BB手机上导向它们,应该提示您下载并安装它。

如果您的应用使用多个API

您需要为正在使用的每个API版本分发cod和jad文件。将这些上载到您的Web服务器,然后使用脚本来检测用户的操作系统版本。这是一个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开发应用时,有两种方法:

  1. 为每个API版本维护单独的项目,并使用将在所有API上运行的公共代码库以避免重复代码
  2. 在BlackBerry_App_Descriptor.xml中定义预处理程序指令,以有条件地包含基于目标操作系统的代码。每次更改目标操作系统时,您都需要更改引用的BlackBerry JRE(在Eclipse中:属性 - > Java构建路径 - >库)。