unspecified general os-related error 及 Symbian OS 应用程序在手机上无法运行的种种原因

1.      安装的资源文件是否齐全

2.      UID是否和其他程序重复、

3.      程序编译出来的版本与手机上安装的操作系统版本不一致。当前针对Symbian OS应用程序的开发版本有好多种,如:S60v1.0S60v2.0S60v3.0UIQ2.1UIQ3.0等,在开发前一定要先确定一下开发的程序是要在什么样的手机上运行,其中S60系列和UIQ系列的编码方法差别较大,NokiaSymbian智能手机大部分是S60系列的,而索爱的Symbian智能手机大部分是UIQ系列的;

4.      应用程序中的程序ID号不一致。每个Symbian应用程序都有一个可以唯一标识该程序的ID号,且在整个应用程序中有多个地方用到这个ID号,如:mmp文件、pkg文件、app文件(程序入口文件)、XXXAIF.rss文件,这些文件中的程序ID号必须是一致的,否则会造成程序打不开;

5.      全局变量定义不当。Symbian OS v9.0版本可以支持全局变量了,但在以前版本是不支持全局变量的,如果要定义全局变量则必须把全局变量定义成“static const”的形式,而且在MMP文件中必须加入“EPOCALLOWDLLDATA”这样的标识,如果不这样做,则在模块器上可以运行,但在手机上会造成程序打不开的现象;

6.      资源文件定义不当。这个就比较麻烦,原因也是很多,如果发现在构造某个窗口时程序出现退出的现象,一般就要查一下有关这个窗口的资源文件定义是否对了;

7.      程序中使用了受限的API。这个主要出现在Symbian OS v9.0中,原以为Symbian OS v9.0可以支持全局变量会变量方便多了,但却在API上加了个“Capability”的级别限制,让程序员在开发程序时束手束脚了。

8.      内存不足程序无法运行 看看手机中的内存是否比 mmp文件中规定的内存小

9.      调用的DLL文件的能力高过exe的能力。

10.     仔细检查 reg.rss, pkg, rss, mmp, 以及代码里的uid3是否一致. 新手程序不能运行, 80% 是因为这个原因.

11.     仔细检查 reg.rss是否正确, 匹配.

12.     如果前面都没错, 就不好解决了, 可以看看是否引用了该手机不止的lib库等, 比如在mr手机上使用了 fp1 lib.

13.     通过 RFileLogger 等检查有无执行到AppUiconstruct函数, 如果执行到了, 那么就是代码问题(引用错资源导致leave), 否则应该就是上面 4个原因

14.    平台安全性问题,导致无法打开文件

 

 

我的问题就在于14点,平台安全性没解决好,在第三版的手机上一点提示没有,搞了有两天,换到第五版手机,才提示安全性问题,检查MMP文件后发现使用了UserEnvironment能力,而我使用的又是自签名。所以。。。。

 

 

另附一篇WIKI的文章

如何解决平台安全问题

在应用软件开发过程中,我们通常会碰到各种与平台安全概念有关的问题,而弄清当前面临问题是否的确与平台安全有关却有点棘手。下面的检查列表将有助于分析平台安全相关问题。

Contents

  [hide]

[edit]检查模拟器日志输出

可做的首要事情是检查模拟器日志输出,这个比较容易查找。从模拟器的Tools | Preferences菜单可启用模拟器日志输出,确保"Enable EPOCWIND.OUT logging"被选中。另外,从epoc.ini文件也能启用日志输出,确保LogToFile值为1。

LogToFile 1

然后运行应用程序,执行一些操作后退出。接着,打开EPOCWIND.OUT文件,这个文件位于%TEMP%文件夹(在DOS窗口键入"echo %temp%"命令行,即可获知%TEMP%的真实路径)。下面给出一个有平台安全问题的应用程序的例子。

151.975	*PlatSec* WARNING - Capability check would have failed - A Message 
(function number=0x00000000) from Thread Screenshot[20000555]0001::screenshot,
sent to Server !Windowserver, was checked by Thread
WSERV.EXE[10003b20]0001::Wserv and was found to be missing the capabilities:
SwEvent . Additional diagnostic message: Capability check failed for
RWindowGroup::CaptureKeyUpsAndDowns API
 
153.600 *PlatSec* WARNING - Capability check would have failed - A
Message (function number=0x00000000) from Thread
Screenshot[20000555]0002::screenshot, sent to Server !MsvServer, was checked by
Thread !MsvServer[1000484b]0001::!MsvServer and was found to be missing the
capability: ReadUserData.

这个例子显示出此程序缺少两个能力,即:SwEvent and ReadUserData

[edit]模拟器上执行能力检查

这个与前面的那个基本类似。不是将问题写入日志文件,而是当有平台安全问题时模拟器会立即通知。

从模拟器的菜单Tools | Preferences可使能模拟器能力检查。也可从epoc.ini文件使能这个检查,就是将PlatSecDisabledCaps的值改为NONE

PlatSecDisabledCaps NONE

意思是没有被禁用的capability。换言之,所有能力检查都被启用。 当启用这个功能后,模拟器在每次调用受限API时将显示一个对话框。下例给出一个例子:因为缺少能力显示的错误信息。

Image:platsec_unable_to_execute.png

 

[edit]我所用的API需要哪些能力?

在检测到问题之后,下一步就是如何找到问题所在。调试代码总是有帮助。另外,也查看SDK帮助看应用程序是否有被拉掉的能力。下例是一个写在SDK帮助中的能力信息的例子。

Capability Information
Required capabilities:
ReadUserData WriteUserData ReadDeviceData WriteDeviceData

 

[edit]检查MMP文件

在收集到所有需要的能力之后,下一步就是检查.mmp文件,确保这个文件中列举了所有需要的能力。mmp文件中能力声明例子:

CAPABILITY SwEvent LocalServices NetworkServices ReadUserData WriteUserData

注意:Carbide.c++ 1.1不使用.mmp file。要在Carbide.c++ 1.1上修改capabilities,右击工程并选择Properties | C/C++ Build。 因此,推荐使用最新版本(当前为2.0版)。

[edit]Carbide.c++ 能力扫描工具

有一个Carbide.c++新插件,叫做Capability Scanner],它能在IDE中检测平台安全问题。这个插件在Carbide.c++ release v1.3之后可用。

[edit]检查DLL依赖关系

平台安全中,可执行程序只能装载比它自身有更多能力的DLL。例如,具有A和B能力的可执行程序不能装载只有能力A的动态库(DLL)。确信可执行文件所装载的所有DLL都有更多的能力或者至少一样多且完全相同。

这个问题通常发生在使用第三方DLL时。大多数在ROM上的DLL都有"All -Tcb"能力;而大多数第三方应用的能力比ROM上的DLL的能力少。 检查可执行文件的能力,包括.exe.dll,可通过elftran工具来进行。使用"-dump h"参数运行这个工具,然后检查运行结果中的capabilities 区段。

ELFTRAN - ELF file preprocessor V02.01 (Build 564)
Copyright (c) 1996-2006 Symbian Software Ltd.
 
E32ImageFile 'screenshot.exe'
Entry points are not called
...
Capabilities: 00000000 0001f000
...

上例中的可执行文件拥有0x0001 F000能力。能力位的定义可以在头文件e32capabilities.h中找到。这个文件随任何Symbian OS 9 SDKs而发行,包括S60 3rd Edition SDKThere is no such file as e32capabilities.h in either MR release or the FP1 release, there is a file named e32capability.h but that is not usefull at all.

然而,使用elftran -dump s <filename>命令可能更易获得可执行文件的能力。

ELFTRAN - ELF file preprocessor V02.01 (Build 573)
Copyright (c) 1996-2006 Symbian Software Ltd.
 
E32ImageFile 'HelloWorldBasic.exe'
Secure ID: 102ee322
Vendor ID: 10333333
Capabilities: 00000000 000ffffe
CommDD
PowerMgmt
MultimediaDD
ReadDeviceData
WriteDeviceData
DRM
TrustedUI
ProtServ
DiskAdmin
NetworkControl
AllFiles
SwEvent
NetworkServices
LocalServices
ReadUserData
WriteUserData
Location
SurroundingsDD
UserEnvironment

[edit]Internal links

 

 

【6层】一字型框架办公楼(含建筑结构图、计算书) 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
1、资源项目源码均已通过严格测试验证,保证能够正常运行;、 2项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值