要删除系统system/app目录下的的APK,由于/system/app目录默认是只读,所以,想要删除这些APK,必须首先获得system目录的删除权限。通过如下步骤删除system/app下的apk文件:
1. 连接设备。如果是手机则需要打开usb调试,设置--》应用程序--》开发--》USB调试。如果是其他设备可能还需要:adb connect 目标设备的IP地址(192.168.1.1)。adb connect 用来连接设备。
2. 打开cmd,进入设备。输入命令:adb shell
3. #mount
此命令用来查看挂载情况。
你将会看到如下信息:
C:\Documents and Settings\Administrator>adb shell
root@android:/ # mount
mount
rootfs / rootfs rw 0 0
tmpfs /dev tmpfs rw,nosuid,relatime,mode=755 0 0
devpts /dev/pts devpts rw,relatime,mode=600,ptmxmode=000 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
/dev/block/mtdblock3 /system yaffs2 ro,relatime 0 0
/dev/block/mtdblock4 /param yaffs2 rw,relatime 0 0
/dev/block/mtdblock5 /dtv yaffs2 rw,relatime 0 0
/dev/block/mtdblock6 /atv yaffs2 rw,relatime 0 0
/dev/block/mtdblock8 /data yaffs2 rw,nosuid,nodev,relatime 0 0
none /acct cgroup rw,relatime,cpuacct 0 0
tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0
tmpfs /mnt/obb tmpfs rw,relatime,mode=755,gid=1000 0 0
none /dev/cpuctl cgroup rw,relatime,cpu 0 0
/dev/block/mtdblock7 /cache yaffs2 rw,nosuid,nodev,relatime 0 0
none /proc/bus/usb usbfs rw,relatime,devmode=777,busmode=777,listmode=777 0 0
找到system的挂载信息,如红色字体所示。
然后输入下面命令:
#mount -o remount rw /dev/block/mtdblock3 /system yaffs2 ro,relatime 0 0
4. 退出adb
输入命令exit:root@android:/ # exit
然后执行删除apk操作。
5. 依次输入以下命令:
adb shell
cd /system/app
rm XXX.apk
XXX.apk就是要删除的apk。
总结:先获得system操作权限,然后再删除文件。因为system默认是只读,不允许删除文件
原文地址:http://blog.csdn.net/songqingxi/article/details/7706715
本文链接
网上关于ios消息推送机制(APNS)的实现、原理介绍很多,但都零零散散。
昨天经过自己的多番尝试,终于成功实现了推送过程。
在此,贴上自己整理的印象笔记内容,包括自己实现过程中受益的内容链接,和遇到点呃问题及解决方法。
php下的推送实现参见另一篇博文:【正在撰写中】
1.APNS原理、配置开发者账户以开启APNS服务、获取发送消息的认证证书的实现。(文章末尾的链接质量低劣,不建议阅读)
2.手机端获取token的代码实例下载【在此之前,需要参照上文步骤,激活appid的apns功能】
实现过程中,屡屡遇到Error:
Error: Error Domain=NSCocoaErrorDomain Code=3000 UserInfo=0x1179f0 "未找到应用程序的“aps-environment”的权利字符串"
原因是工程中的profile不正确。
解决办法:
确认你在apple dev portal里面把相应appid做成类似com.company.appname这样子(如果是xxxx.*则可能匹配错误等),激活pans功能后,再revoke这个profile,并下载安装到手机和xcode里面去(这里要注意,一定要先把push的功能在configure里面配置好了然后再download这个profile,更新手机和Xcode,如果你记不清楚了到底是先download还是先configure的,那么一个最保险的办法就是先configure好了,然后到profile那里点击modify,把profile改成一个新的名字,把这个新的profile安装到手机和Xcode里面,这样就没有问题了)
笔者在这个问题上花了大半天时间,根据后来成功实现后的总结,原因在于没有一个干净的测试环境。如果你觉得自己按照以上方法执行后,问题依旧,很大的可能性是并没有完全的依照以上步骤来执行。
3.消息发送端的代码实例 PushMeBaby:【需要参照上文步骤,在开发机生成钥匙对,并获得APNS的证书,置于消息发送的工程中】
记得将制作证书时生成的.cer文件替换到项目中(当然要替换下代码中.cer的文件名啦~),并替换代码中的devicetoken为之前手机获得的token。
笔者的电脑装的是Mount Lion 10.8.2, 64位机。运行如上程序时,报错:
The run destination My Mac 64-bit is not valid for Running the scheme 'PushMeBaby'.
解决办法:
修改项目的PROJECT和TARGET的BUILD SETTING中的architecture为64位,base sdk为10.8,clean后重新运行,则OK。
本文链接
官方网站:http://code.google.com/p/cocoaasyncsocket/
这里只上例子,自己在项目中使用的,绝对能使用,如果有疑问,欢迎留言讨论。
将AsyncUdpSocket.h AsyncUdpSocket.m 导入到你的工程中,
在自己建立的util中,加入一下代码
#pragma mark udp -(void)sendSearchBroadcast{ NSString* bchost=@"255.255.255.255"; //这里发送广播 [self sendToUDPServer:@"hello udp" address:bchost port:BCPORT]; } -(void)sendToUDPServer:(NSString*) msg address:(NSString*)address port:(int)port{ AsyncUdpSocket *udpSocket=[[[AsyncUdpSocket alloc]initWithDelegate:self]autorelease]; //得到udp util NSLog(@"address:%@,port:%d,msg:%@",address,port,msg); //receiveWithTimeout is necessary or you won't receive anything [udpSocket receiveWithTimeout:10 tag:2]; //设置超时10秒 [udpSocket enableBroadcast:YES error:nil]; //如果你发送广播,这里必须先enableBroadcast NSData *data=[msg dataUsingEncoding:NSUTF8StringEncoding]; [udpSocket sendData:data toHost:address port:port withTimeout:10 tag:1]; //发送udp }//下面是发送的相关回调函数 -(BOOL)onUdpSocket:(AsyncUdpSocket *)sock didReceiveData:(NSData *)data withTag:(long)tag fromHost:(NSString *)host port:(UInt16)port{ NSString* rData= [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease]; NSLog(@"onUdpSocket:didReceiveData:---%@",rData); return YES; } -(void)onUdpSocket:(AsyncUdpSocket *)sock didNotSendDataWithTag:(long)tag dueToError:(NSError *)error{ NSLog(@"didNotSendDataWithTag----"); } -(void)onUdpSocket:(AsyncUdpSocket *)sock didNotReceiveDataWithTag:(long)tag dueToError:(NSError *)error{ NSLog(@"didNotReceiveDataWithTag----"); } -(void)onUdpSocket:(AsyncUdpSocket *)sock didSendDataWithTag:(long)tag{ NSLog(@"didSendDataWithTag----"); } -(void)onUdpSocketDidClose:(AsyncUdpSocket *)sock{ NSLog(@"onUdpSocketDidClose----"); }
ok,试一下吧作者:shencaifeixia1 发表于2013-1-4 20:20:49 原文链接阅读:17 评论:0 查看评论