s60各版本


epoc32\tools下面有这几个文件里定义了和版本相关的宏


3.1\e32plat.pm

3.1\e32variant.pm


所以可以通过:

__SYMBIAN32__        //symbian都有定义,用来跨平台,区分symbian和其它OS,如wince

__SERIES60_3X__   //3.0  3.1 3.2 5.0都有定义,用来区分3rd和其它版本(5th本质和3rd没有区别,只是多了触控)(symbian^3应该未定义这个宏,这个未验证)



__SERIES60_30__      //只在3.0

__SERIES60_31__      //只在3.1

__S60_50__                  //只在5.0



Epoc32\include\variant\symbian_os_v9.1.hrh

EKA1和EKA2用于判断第三版之前或之后

ps:Epoc32\tools\variant\variant.cfg的内容如下

epoc32\include\variant\Symbian_OS_v9.1.hrh


===========通过文件存在否,来断判===用来选择安装文件(如针对不台平台的dll)=====

http://www.developer.nokia.com/Community/Wiki/如何在安装或运行时检查S60平台版本

_LIT(KS60ProductIDFile, "Series60v*.sis");
_LIT(KROMInstallDir, "z: \\system\\install\\");

series60v3.0.sis                                                 //只在3.0

series60v3.0.sis和series60v3.1.sis              //只在3.1

S60 2nd Series60v2.0.sis
S60 2nd FP1 Series60v2.1.sis
S60 2nd FP2 Series60v2.6.sis
S60 2nd FP3 Series60v2.8.sis
S60 3rd MR Series60v3.0.sis
S60 3rd FP1 Series60v3.1.sis
S60 3rd FP2 Series60v3.2.sis
S60 5th Series60v5.0.sis
Symbian^2 Series60v5.1.sis // 这个东西是啥,意义不明。。。
Symbian^3 Series60v5.2.sis

IF EXISTS("z:\system\install\Series60v2.8.sis")

; install 2nd Ed, FP3-specific files

ELSEIF EXISTS("z:\system\install\Series60v2.6.sis")

; install 2nd Ed, FP2-specific files

ELSEIF EXISTS("z:\system\install\Series60v2.1.sis")

; install 2nd Ed, FP1-specific files

ELSE

; 2nd Edition-specific files

ENDIF



在运行时检查平台版本

下列方法可以在运行时检查S60平台版本,返回时,将获得版本号。注意当主版本号表明S60版本时,副版本号将表明Feature Pack版本(如2.6=2nd Edition, FP2)
//------------------------------------------------------------------------------

#include <f32file.h> // link against efsrv.lib

_LIT(KS60ProductIDFile, "Series60v*.sis");

_LIT(KROMInstallDir, "z:\\system\\install\\");

void GetS60PlatformVersionL( RFs& aFs, TUint& aMajor, TUint& aMinor )

{

TFindFile ff( aFs );

CDir* result;

User::LeaveIfError( ff.FindWildByDir( KS60ProductIDFile, KROMInstallDir, result ) );

CleanupStack::PushL( result );

User::LeaveIfError( result->Sort( ESortByName|EDescending ) );

aMajor = (*result)[0].iName[9] - '0';

aMinor = (*result)[0].iName[11] - '0';

CleanupStack::PopAndDestroy(); // result

}



//------------------------------------------------------------------------------

====================





你可能感兴趣的:(s60各版本)