Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mobile 使用JAD文件为不同操作系统版本打包Blackberry应用程序_Mobile_Blackberry_Distribution_Packaging_Blackberry Eclipse Plugin - Fatal编程技术网

Mobile 使用JAD文件为不同操作系统版本打包Blackberry应用程序

Mobile 使用JAD文件为不同操作系统版本打包Blackberry应用程序,mobile,blackberry,distribution,packaging,blackberry-eclipse-plugin,Mobile,Blackberry,Distribution,Packaging,Blackberry Eclipse Plugin,我要找的是: 我想为不同的黑莓操作系统版本(5、6和7)打包我的应用程序。这样用户就不必知道他需要什么版本,只需从网站上安装应用程序 我已经发现: 我需要查看web目录(有三个目录,每个版本一个) 我需要一个JAD文件而不是alx文件,因为它是一个web发行版(在web中也没有alx,所以到目前为止还可以) 我认为我的问题是: 我不知道如何将这三个目录打包到web目录中。我想我只需要一个文件夹和一个JAD文件,以某种方式管理我的应用程序安装的版本 如果你的应用程序只使用OS5 API,你能给

我要找的是:

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

我已经发现:

  • 我需要查看web目录(有三个目录,每个版本一个)
  • 我需要一个JAD文件而不是alx文件,因为它是一个web发行版(在web中也没有alx,所以到目前为止还可以)
我认为我的问题是:

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


如果你的应用程序只使用OS5 API,你能给我一些见解吗

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

至于打包应用程序,您只需将可交付成果/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开发应用程序时,有两种方法:

  • 为每个API版本维护单独的项目,并使用将在所有API上运行的公共代码库,以避免重复代码
  • 在BlackBerry_App_Descriptor.xml中定义预处理器指令,以有条件地包含基于目标操作系统的代码。每次更改目标操作系统时,都需要更改引用的BlackBerry JRE(在Eclipse:Properties->Java Build Path->Libraries中)
    但是,如果应用程序在较新的操作系统版本上使用较新的API呢?例如,我正在开发一个应用程序,它在某些地方使用特定于版本的API(主要用于在可用时使用较新的UI控件),因此我有多个针对不同JRE版本编译的版本。为了方便发布,正确的打包方法是什么?我已经更新了我的答案来涵盖这一点,很抱歉,从你最初的问题中我认为你只希望使用一个API构建。其中一个问题是,构建多个API的整个过程有点麻烦,所以只有在绝对必要的情况下才能这么做!谢谢你的更新。我在我的项目中使用预处理器方法。顺便说一句,我不是OP,但OP的问题适用于我,因为我可能会在我的应用程序的初始版本中进行OTA下载。啊,对了,我希望答案有帮助,有机会投票吗?