作者gpc (gpc)
看板AndroidDev
标题Re: [问题] 软体需要root权限?
时间Thu Mar 17 13:52:35 2011
※ 引述《sometimes4 (赔了夫人又折兵)》之铭言:
: 请问有些软体安装使用时,会声明需要root权限,
: 想问的是使用sdk开发时,有那些api会需要root权限,
: 如果没有,那是ndk开发才有可能吗?
API =>不需要root
NDK =>还是不需要ROOT
android的 JAVA 应用程式 不可能 具有ROOT 权限
除了去zygote那边搞些破坏,才有可能吧
为什麽要取得ROOT呢,那你必须要了解root是甚麽
定义上就是用 UID=0 的身分来做事情 叫做取得root权限
但所有的APK不可能让自己UID=0,最强只能到UID=1000(system),
但这部分就是由zygote决定的,做应用程式的话没办法做到这样
而且UID=1000还是很弱...很多事情都不能做..XD
所以一般来说ap要root就是用shell comand去跑程式,
shell command可以让你从JAVA去叫linux的C程式来跑,
然後对他(C程式)打些命令,他就会帮你做一些需要UID=0的事情
由於android的linux里面并没有sudo,
所以ROOT的机器(意味着使用非官方的ROM)会直接把"修改版" su 程式
放到你的手机中,然後该su程式有些额外的功能,
可以让你用root的身分执行一些其他你想要的程式
当然,他执行前,可能会多一些有趣的检查,像是现在普片使用的"授权程式"的APK
就是帮忙把关的
如果你要做一些root的动作,你就必须要准备好C的程式,
然後在JAVA中,可以使用类似
Runtime.getRuntime().exec("su -c helloworld");
这类的功能来使用,su根据你机器中的版本不能,功能性也不一样
像有些机器的su是不能接受 -c 参数的....
也就是说你做出来的应用程式,放到android market上,
可能有些"号称"root过的user不能使用
他可能会因此给你 "一颗星" 的评分
这方面就是很多经验的累积了 :(
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.211.38.194
1F:推 nowar100:收录至 z-3-1-8 03/17 15:39
2F:推 NotExist:官方ROM应该还是可以用su? 03/17 16:35
3F:推 sometimes4:感谢你的回答,我了解了 03/17 19:59