当前位置:  编程技术>移动开发
本页文章导读:
    ▪谈一下对金山手机毒霸事件的看法        谈谈对金山手机毒霸事件的看法  近来,"金山手机毒霸"事件被吵的沸沸扬扬的。  所谓的金山手机毒霸事件,就是金山推出的以屏蔽Android平台广告为卖点的安全软件,可以清除软件内置广.........
    ▪ 小弟我的程序里 《小弟我的歌声里》软件工程师版        我的程序里 《我的歌声里》程序员版我的程序里 也没有一丝顾虑 身不自已可是你偏又这样  剩下了报警短信 你 存在我深哪一个模块里 某个线上问题尽管一开始下起来没法下手 一个结构 你.........
    ▪ ARM全部常用指令的实例与说明       ARM所有常用指令的实例与说明  ARM所有常用指令的实例与说明: 程序跳转类指令: ==================== BX,  语法: bx Rn    此指令执行程序跳转,执行后,cpu从Rn这个寄存器里面所存的内存地.........

[1]谈一下对金山手机毒霸事件的看法
    来源: 互联网  发布时间: 2014-02-18
谈谈对金山手机毒霸事件的看法

  近来,"金山手机毒霸"事件被吵的沸沸扬扬的。


 所谓的金山手机毒霸事件,就是金山推出的以屏蔽Android平台广告为卖点的安全软件,可以清除软件内置广告。在推出测试版并且在未进行推广的情况下,每天都达到了数万次的装机量。


 本人看了下相关文章的评论,除了少数人称损害了开发者的利益,大部分人都在拍手叫好。


 由此可以看出,广大的Android平台手机使用者有多么“痛恨”手机广告。


 其实,从Android平台推出几年之后,个人开发者开发的应用雨后春笋般的涌出,但是支持付费软件比较有名的应用商店,也就只有移动Mobile Market而已(也包括在Mobile Market应用逐渐多起来之后,推出了一系列令开发者寒心的政策)。


  所以大部分Android都是免费的,并且加广告。


  而各个广告平台提供广告的形式也很多,从最早的Banner横幅广告,到后来的积分墙,全屏广告(用在loading处),甚至有通知广告(通知栏弹出的广告)。


  其中体验最好的收益最高的也最令人诟病的也就是积分墙广告了。


  去年万普广告平台,遭到各大应用商店封杀的原因,就是因为万普平台当时没进行提交应用的审核,导致大量恶意使用积分墙广告的应用出现,并且被各打应用商店的用户投诉。也许正是因为积分墙广告收益更高,更容易滥用,

所以像安智应用商店只允许出现banner的广告,带有积分墙的一律拒绝收录。

  

  上面只是描述了下当前手机广告平台的现状,然而,金山手机毒霸事件,导致了将近20多家移动广告平台和移动开发者的联名抵制。


  对于引起的轰动,金山无动于衷。

  以下是金山对于联名抵制的回应:

  

      全球首款APP行为管理软件手机毒霸自发布以来,受到大量用户好评的同时,也在开发者群体中激发了热烈讨论,在恶意广告已成为中国安卓手机市场中巨大毒瘤 的事实面前,如何正视这其中的害群之马、如何防止劣币驱逐良币、正当维护开发者自身权益等等课题逐渐被全行业所重视。这是自2006年PC市场掀起打击流 氓软件、净化上网环境的风潮之后,在移动互联网领域的又一次关键时刻。


  手机毒霸自8月29日发布了首个公开测试版,迅即引起用户高度关注与好评,在未进行任何推广的情况下,每天以数万次下载安装迅猛增长,在微博 里、论坛上,随处可见被频繁弹窗、静默安装等恶意广告骚扰的用户,更可以见到一些开发者拍案指责这些恶意广告的流氓程序员,声援手机毒霸。

  我们坚信,打击恶意广告、把手机选择权和自主权还给用户,不仅是饱受摧残的众多安卓手机用户的心声,也是心怀理想、踏实努力的开发者的诉求,真 正从根本上保护移动互联网产业链良性发展。然而,我们也遗憾的看到一些企业与个人出于各种原因,以“二选一、不兼容”等口号要挟手机毒霸,并抹黑手机毒霸 给用户提供自主选择的这一基本事实。在此,我们希望给关心与支持手机毒霸的用户与同行给予真诚的说明:

  1、恶意广告是危害智能手机行业发展的毒瘤

  安卓系统因其开放性和自由性,已经不可避免的沦为了恶意广告肆虐的温床。不知来源的通知栏广告、频繁弹出、无法清除,甚至在后台窃取用户手机号 码、通讯录、位置等等隐私信息,不仅造成用户使用困难,还给用户手机安全带来巨大威胁。目前,恶意广告是用户手机安全威胁的第一大因素。

  不仅如此,由于用户对恶意广告长期束手无策,更是催生了一大批“打包党”,形成了完整的黑色产业链。“打包党”将市面上流行的APP应用进行改 写,插入若干恶意广告SDK甚至恶意代码后,诱导用户下载使用,以此获取非法收益。用户往往无法识别哪些是正版APP应用,这种行为不仅伤害了用户,还严 重侵犯了APP开发者的权益,降低了用户对正版APP的评价。

  长期以往,如果不对恶意广告进行清理,加以打击,最终受伤害的不仅是用户、开发者,正规的广告商,甚至是整个安卓产业链。

  2、手机安全软件使用ROOT权限是行业惯例

  手机安全软件均需获取ROOT权限,才能保护用户手机安全,清除恶意广告和恶意软件。正如PC的安全软件都有驱动一样,其目的是为了保护PC电 脑系统,清除病毒和木马,这也是国内外各款手机安全产品的一致做法,例如国内的腾讯、360、LBE,国外的AdFree Android、MyInternetSecurity Pro - Root等等。

  手机毒霸获取系统Root权限的行为符合行业技术惯例,并且也明示用户是否同意授权。获取权限后,手机毒霸才可以识别,拦截乃至清除各类恶意软件及恶意广告,在此过程中手机毒霸并未对正常软件进行更改。

  3、手机毒霸,保护手机安全,打击恶意广告

  作为APP开发者的一员,我们了解由于目前缺少多样的变现手段,导致APP开发者生存困难,举步维艰,甚至有部分APP开发者选择了不加节制的 恶意广告模式进行变现。但是我们更加深知,泛滥的恶意广告将会严重损害用户的体验,长期以往,用户利益得不到保护,整个行业也会因此饮鸩止渴,发展受阻。

  手机毒霸第一个版本采取了将选择权完全交给用户的做法,将存在广告的APP进行罗列,是否禁止由用户选择。但是,作为一款年轻的产品,一定存在诸多需要改进的地方,我们十分愿意与大家共同探讨恶意广告的标准和界定,明确市场规范,兼顾用户利益和合法广告商的权益。

  但是,对于一边打着维护开发者权益,保护行业生态旗帜,一边通过恶意广告谋利、偷窃用户隐私的恶意厂商,我们将会把已经掌握的大量确凿事实证据,向媒体和公众进行公布,以正视听。

  

  很明显,金山的初衷肯定是没有错的:去除恶意广告,维护用户的权益。

  但金山这样的做法,将令不计其数的Android开发者心寒。金山还冠冕堂皇的说"给用户选择广告的权益",这不是扯蛋么。如果一个网站给你选择广告的权利,你难道不会选择把所有的广告都屏蔽?

  

  本人工作就是进行Android平台开发,以前业余也开发Android软件,也用过一些广告平台,也有个人开发的下载量几十万次的软件。

  最开始,我还经常看用户的评论,很多用户说:"垃圾,有广告,不要下"。后来也渐渐麻木了,也不想在业余投入过多的时间做这些吃力不讨好的事。但是在移动Mobile Market里面的收费应用,赚的钱大大不如广告平台。

  

  其实,从移动广告平台和移动应用商店这么久的发展以来,恶意广告已经不算很多了。最开始的免费软件中,很多无节制的弹通知栏广告,不使用积分墙获取积分软件就无法使用等现象。


  而现在提交到移动广告平台和移动应用上商店的软件,都会进行审核,不符合要求的将被驳回不予通过。

  在整个移动广告平台逐渐走向正规的时候,金山又来插一脚,搅浑了整个行业。


  个人觉得,整个移动行业,还是需要开发者,移动广告平台和应用商店的良好合作才能建立一个良好的健康的移动广告产业链。单纯的一个手机安全软件,以去除广告为嚎头试图提高自己软件的影响力,这样的做法,不会对大家有任何的好处,甚至会破坏整个移动广告行业的平衡,理应遭到大家的抵制。

  后续将会如何发展,我们姑且静观其变,也许只是风风火火一阵就停息,也许将会对国内移动广告平台产生不可估量的影响。

 

  转载请注明出处:http://blog.csdn.net/ml3947/




  

7楼waynewang11分钟前金山最好能在电视上拦截广告,看看还有没免费电视看。收费软件不会放广告,免费软件放广告,用得着狗拿耗子吗Re: ml39473分钟前回复waynewang本来在Android平台开发游戏和软件 获取收益就不太容易...金山这么一做..6楼su12162小时前除了少数人称损害了开发者的利益,大部分人都在拍手叫好nn那是因为只有少数人是android开发者!n有些恶意的广告确实烦人,但是不能因为这个就把广告敢绝,金山、360等做的很是过分Re: ml39471小时前回复su1216个人觉得,现在的恶意广告由于应用商店和移动广告平台的审核更严厉,已经少了很多的。但是完全屏蔽所有的广告的话,实在会打击很多Android开发者的积极性。Re: su12161小时前回复ml3947n我在我blog也分析了金山对付通知栏广告的方法,它能做的我们也一样能做。Re: ml394718分钟前回复su1216其实论坛都有很多人知道如何去广告,作为开发者只要使用Root权限,也可以去广告。金山就是把少数人会做的事平民化,不假时日,估计很多平台的广告流量都会减少很多。5楼genliu777昨天 17:35坚决抵制广告!!Re: ml39474小时前回复genliu777我觉得想完全取消广告是不太现实的。4楼zsindy昨天 15:01只想问一句什么叫恶意广告?n从金山的说法上看,没有广告不恶意。3楼pl___昨天 11:56当务之急是开发新的盈利模式2楼xunyuyou昨天 10:35当年去ad的插件一出来大家也是这种反应1楼crowgns昨天 09:57这个问题美国也遇到过。开始是立法可以过滤的,当时有一款产品电视机顶盒,能过虑电视节面下边的广告栏。后来考虑美国电视业的发展,又立法禁止过滤电视广告的产品了。过滤广告这事,公说公有理,解决的关键还是立法,否则就是混乱。

    
[2] 小弟我的程序里 《小弟我的歌声里》软件工程师版
    来源: 互联网  发布时间: 2014-02-18
我的程序里 《我的歌声里》程序员版
我的程序里

没有一点点防备
也没有一丝顾虑
突然错误出现 
在我的日志里带给我惊喜 
身不自已可是你偏又这样 
在我不知不觉中悄悄的 消失
从我的堆栈里没有音讯 
剩下了报警短信
你 存在我某一个模块里
我的梦里,我的心里,我的程序里
你 存在我深哪一个模块里
我的梦里 我的心里 我的程序里
还记得我们曾经肩并肩一起排查 
某个线上问题尽管一开始下起来没法下手
但我们没有放弃自己的借口
一个断点
一个结构
一行一行注释的背后
好像是一场战斗 不能回头
你存在我某一行代码里
我的梦里 我的心里 我的程序里
你存在我哪一行代码里?
我的梦里 我的心里 我的程序里
世界之大
为何要当码农
是年少抽风?
是为了不同你
存在程序员脑海里
我的梦里 我的心里 我的程序里
你存在我每天的生活里
我的梦里我的心里我的程序里

//献给所有的程序员

    
[3] ARM全部常用指令的实例与说明
    来源: 互联网  发布时间: 2014-02-18
ARM所有常用指令的实例与说明

 

ARM所有常用指令的实例与说明:


程序跳转类指令:
====================


BX,
 语法: bx Rn
 
 此指令执行程序跳转,执行后,cpu从Rn这个寄存器里面所存的内存地址处开始继续执行。由于是跳转,因此也会同时刷新管道线。另外,如果此Rn的最低位为1的话,随后的指令将被译作thumb指令,如果最低位为0的话,随后的指令将被译作arm32位指令。因此,此指令可以用于在32位arm指令与16位thumb指令之间进行跳转。

 32位代码转入16位代码执行:

 16位代码转入32位代码执行:


B, BL 指令,
 语法: 指令 表达式/label

 B指令就直接跳转指定的地方,bl跳转到指定的地方之前还要把当前pc保存在lr寄存器里面。

 die_loop:
  b die_loop  这样就构成了死循环

 bl add  保存当前pc到lr,然后调用add函数,
 

数据处理类指令:
====================

mov, mvn指令:
 语法: 指令 目标寄存器, 操作数
 
 mov指令把操作数拷贝到目标寄存器里面。操作数可以是:寄存器,或者立即数表达式,

  例如:
   mov r0, r1   # 把r1赋给r0
   mov r2, #7
   mov r0, r1, LSL r2 把r1左移r2位后赋给r0
   mov r2, #100   # 把立即数100赋给r2
 
 mvn指令把操作数按位取反之后把值赋给目标寄存器。

  例如:
   mov r0, r1   # 表示把r1里面的值按位取反后赋给r0

   
cmp, cmn, teq, tst, 指令:
 语法: 指令 寄存器, 操作数

 操作数可以是:寄存器,或者立即数表达式
 这四条指令都是让后面的寄存器于操作数执行相应的操作后根据结果设定cpsr寄存器里面的相应位的值。

 cmp指令把寄存器和操作数相减,根据结果设定cpsr。用于比较大小。
  
  例如:循环100次
    mov r0, #0
   loop100:
    add r0, r0, #1
    cmp r0, #100
    ble loop100
    
 cmn指令把寄存器和操作数想加,根据结果设定cpsr。用于看两个数只和会不会有进位。
 teq指令把寄存器和操作数进行按位异或,根据结果设定cpsr。用于测试两个数是否相等。
 tst指令把寄存器和操作数进行按位相与,根据结果设定cpsr。用于测试某位是否为1。

 这四条指令在执行期间都只是对寄存器和操作数进行操作,并不回写。


and, eor, sub, rsb, add, adc, sbc, rsc, orr, bic指令:

 语法:指令  Rd, Rn, Op2
 
 操作数可以是:寄存器,立即数

 and 指令对Rn和Op2按位与操作之后把结果赋值给Rd.
 eor 指令对Rn和Op2按位异或操作之后把结果赋值给Rd.
 sub 指令对Rn和Op2进行减操作之后把结果赋值给Rd.
 rsb 指令对Op2和Rn进行减操作之后把结果赋值给Rd.
 add 指令对Rn和Op2进行加操作之后把结果赋值给Rd.
 adc 指令对Rn和Op2加操作并且加上cpsr寄存器中的C位的值之后把结果赋值给Rd.
 sbc 指令执行Rn-op2-1+进位位之后把结果赋值给Rd。
 rsc 指令执行Op2-Rn-1+近位位之后把结果赋值给Rd.
 orr 指令对Rn和Op2按位或操作之后把结果赋值给Rd.
 bic 指令执行对Op2先按位取反之后再与Rn进行按位与操作,之后把结果赋值给Rd,用于对Rd中的某位置0.


mrs, msr指令:
 语法:  mrs Rd, <psr>  
   msr <psr>, Rm
   msr <psrf>, Rm
   msr <psrf>, #expression

 psr可以是cpsr, spsr, mrs用于读取psr寄存器里面的值然后赋值给Rd.
 msr用于存储Rm寄存器里面的值进入psr里面。
 msr <psrf>, Rm只修改psr里面的标志位。

 
mul, mla指令:
 语法: mul Rd, Rm, Rs
   mla Rd, Rm, Rs, Rn

 mul指令对Rm和Rs执行乘操作之后把值赋给Rd。 Rd = Rm * Rs.
 mla指令对Rd和Rs执行乘操作之后并加上Rn后赋值给Rd. Rd = Rm * Rs + Rn。


mull, mlal指令:
 语法: umull RdLo, RdHi, Rm, Rs  :把Rm和Rs当作32位无符号数执行乘法操作,然后把结果的低32位赋给RdLo, 高32位赋给RdHi
   umlal RdLo, RdHi, Rm, Rs  :把Rm和Rs当作32位无符号数执行乘法操作,再加上由RdHi和RdLo组成的64位数,然后把结果的低32位赋给RdLo, 高32位赋给RdHi
   smull RdLo, RdHi, Rm, Rs  :把Rm和Rs当作32位有符号数执行乘法操作,然后把结果的低32位赋给RdLo, 高32位赋给RdHi
   smlal RdLo, RdHi, Rm, Rs  :把Rm和Rs当作32位有符号数执行乘法操作,再加上由RdHi和RdLo组成的64位数,然后把结果的低32位赋给RdLo, 高32位赋给RdHi
 
 
ldr, str指令:
 语法:<ldr/str>{b}  Rd, <Address>

 ldr用于从内存中加载数据到寄存器。
 str用于存储寄存器中的数据到内存中。

 例子:

.LC:
  ldr r0, .LC :表示把.LC所处内存地址里面的4个字节值赋给r0 (这种情况需要此命令与标签在同一段内)
  ldr r0, =.LC :表示直接把.LC所处的地址赋给r0
  ldr r0, [r1] : 表示把把r1所代表的内存地址里面的值赋给r0
  ldr r0, [r1, #8]  : 表示r1加上8个字节代表的内存地址里面的值赋给r0
  ldr r0, [r1, #8]! : 表示r1加上8个字节代表的内存地址里面的值赋给r0, 然后把r1 = r1 + 8
  ldr r0, [r1], #4 : 表示把r1所代表的内存地址里面的值赋给r0, 之后, r1 += 4
  ldr r0, [r1, r2, LSL #2] :表示把r1+r2 * 4所代表的内存地址里面的值赋给r0
  
  str r0, [r1, r2] : 把r1 + r2所代表的内存地址里面的值赋入r0  
  str r0, [r1, r2]! : 把r1 + r2所代表的内存地址里面的值赋入r0, r1 = r1 + r2


ldm, stm指令:
 语法: <ldm/stm><ed|fd|ea|fa> Rn{!}, <Rlist>{^}

 Rlist, 表示寄存器列表。比如{r0, r2, r5-r7,r9 }
 {!},  表示执行完ldm或stm之后是否对Rn进行回写。
 {^}, 表示恢复spsr中的值到cpsr。(一般用于返回以前模式)

 寄存器列表中的数据在内存中将被存放的顺序为低寄存器对应低内存地址的顺序存放。
 stm操作始终与所指定的栈的方向保持相同,ldm相反。stm就相当于压栈,ldm就相当于退栈。
 
 stm表示把寄存器的数据存入内存
 ldm表示把内存中的数据加载到寄存器上。
 
 例如:
  ldmfd sp, {r0,r1,r2} 表示把sp所指的内存地址开始的12个字节分别赋值给r0,r1,r2。  
  ldmfd sp!, {r0,r1,r2} 表示把sp所指的内存地址开始的12个字节分别赋值给r0,r1,r2,之后sp = sp + 12
  ldmfd sp!, {r15}^ 表示把sp棧所指的4个字节里面的值赋给r15, 同时把spsr赋值给cpsr,并且sp += 4
 
  stmfd sp, {r0, r1, r2} 表示把r2,r1,r0按照sp所指地址递减存储。也就相当于下面3条指令:
   str r2, [sp, #-4]
   str r1, [sp, #-8]
   str r0, [sp, #-12]

  stmfd sp!, {r0, r1, r2}  表示把r2,r1,r0按照sp所指地址递减存储。并且把sp = sp - 12,也就相当于下面4条指令:
   str r2, [sp, #-4]
   str r1, [sp, #-8]
   str r0, [sp, #-12]
   sub sp, sp, #12

  
  特殊用法:

   stmfd sp!, {r0-r15}^ : 表示把用户模式下面的r0-r15寄存器存在当前模式下面的sp所指向的栈中。
   stmfd sp!, {r0-r14}^ : 表示把用户模式下面的r0-r14寄存器存在当前模式下面的sp所指向的栈中。用于进程切换的时候保存用户模式下面的寄存器。
   ldmfd sp!, {r0-r14}^ : 寄存器列表这里面不带有r15(pc), 表示把当前模式下面sp所指的栈中的15个int拷贝用户模式下面的r0-r14。这个用于恢复进程状态。
  
  

swp指令: 
 语法: <swp><b/h> Rd, Rm, [rn]

 swp指令执行单字节或单字的内存于寄存器的数据交换原子操作。把rn所指内存里面的值赋值给Rd, 然后把R1存入R2所指的内存。经常用于内核中实现控制互斥与信号等功能。

 例如:
 
 swp r0, r1,[r2] :表示把r2所指的内存地址里面的值赋值给r0, 然后把r1存入r2所指内存地址。相当于下面2条指令的原子操作。
   ldr r0, [r2]
   str r1, [r2] 
 
   


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android中实现为TextView添加多个可点击的文本 iis7站长之家
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3