导航:首页 > 操作系统 > androidappuid

androidappuid

发布时间:2024-06-08 23:32:03

android应用程序获取system权限

支持原作者 : http://www.xugaoxiang.com/blog/index.php/archives/53/
软硬件环境

ubuntu 14.04
Android studio2.1.2
Android 5.1.1
前言

一般的Android应用程序,在安装后,程序只能访问/data/data/${程序包名}下的数据,如常见的SharedPreferences、database等。
而如果想让app访问其它地方的资源时,就必须要获取更高的权限丛团,像system或者root。本文完成system权限的获取,实际上一般的应用有system的权限基本上也够了。

修改apk内的AndroidManifest.xml

在app中的AndroidManifest.xml文件中的manifest标签中加入


android:sharedUserId="android.uid.system"
APP工程生成apk文件

android studio或者eclipse自动就帮你生成好了

给apk文件进行签名

这里分两种情况,一种是厂商,有android系统源码,既可以把app源码导入到android源码中,也可以单独完成签名。第二种磨历是你仅仅是做应用的,拿不到厂商的source code,而且
这种情况也相当普遍,怎么办?别着急,我们今天就来解决这个问题。

签名需要的几个文件

这个你必须找厂商要,signapk.jar、platform.x509.pem、platform.pk8,如果你有source code,signapk.jar存瞎郑搜放在prebuilts/sdk/tools/,platform.* 两个key文件存放在build/target/proct/security/下

签名具体命令

java -jar signapk.jar platform.x509.pem platform.pk8 unsigned.apk signed.apk
制作新的image文件

如果你的应用需要预置到android系统中,将signed.apk导入到android源码目录中(一般是out/target/proct/${hardware}/system/app/下),编译生成新的
system.img,再烧录到目标板中。如果不需要预置,那就直接adb install好了。

测试

待系统启动后adb shell到板子上,ls -l查看app安装目录(/data/data/${程序包名})的权限,看看是不是变成system:system了。

② 安卓APP如何统计流量

安卓app统计流量使用,方式如下:

因为getUidRxBytes(int uid)和getUidTxbytes(int uid)包括了所有网络形式的流量,即包括WIFI和3g/2g.故需要监听WIFI变化,并记录WIFI过程中该uid应用使用的流量记录.

`

stants{
@Override
publicvoidonReceive(Contextcontext,Intentintent){
if(intent.getAction().equals(WifiManager.WIFI_STATE_CHANGED_ACTION)){
intwifistate=intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE,WifiManager.WIFI_STATE_DISABLED);
if(wifistate==WifiManager.WIFI_STATE_DISABLED){//如果关闭
//结余本次wifi过程中uid应用的流量
}elseif(wifistate==WifiManager.WIFI_STATE_ENABLED){
//记录当前uid应用的流量.
}
}
}

③ 如何反编译android应用以及重编译,签名和对齐优化

首先,了解一下我们为什么需要反编译apk
大部分情况下,是由于想本地化一款优秀的应用,才需要做这事儿;又或者进行少量的smali修改以达到想要的效果(如添加归属地,使3G版Nexus 7支持Wi-Fi热点)。

下面我们先准备运行环境和工具
建立工作目录,如.\workspace\apktoolbox (下面同样以此路径为例)
必不可少的JDK:Oracle Java下载,安装完成后把<jdk-inst-path>\bin添加到$PATH环境变量中
反编译和重编译工具apktool:Google Code下载,按平台下载(一个apktool-install-<platform>-<ver>-tar.bz2,一个apktool<ver>.tar.bz2,下载完成后解压至.\workspace\apktoolbox\bin
密钥文件,共4组。test/shared/media/platform,从android source中获取,分别对应不同共享用户ID时签名所需(查看应用AndroidManifest.xml第二行android:sharedUserId项 ),放到.\workspace\apktoolbox\bin下
test - 无android:sharedUserId项
shared - android:sharedUserId=android.uid.shared
media - android:sharedUserId=android.uid.media
platform - android:sharedUserId=android.uid.system
签名工具signapk.jar,放到.\workspace\apktoolbox\bin下
对齐优化工具zipalign(从android sdk中获取,在tools目录下),放到.\workspace\apktoolbox\bin下
准备工作完成

接下来我们就要开始工作了(以本地化工作为例)
把待反编译的apk放到.\workspace\apktoolbox\apks下
在命令行模式下进入.\workspace\apktoolbox\bin目录,输入以下命令进行解包(反编译)
apktool d ..\apks\<apkfile>.apk ..\apks\<outdir>
.\workspace\apktoolbox\apks\<outdir>\res下的values目录(英文原版)和values-r<locale>目录(本地化)就是我们需要的对象。
本地化工作完成后,在命令行中输入以下命令进行重新打包(重新编译)
apktool b ..\apks\<outdir>

.\workspace\apktoolbox\apks\<outdir>\dist目录下会生成重新打包后的apk(未签名,未对齐优化)
重新打包完成后,在命令行中输入以下命令进行签名(根据实际情况选用密钥,这里以test密钥为例)
java -jar signapk.jar testkey.x509.pem testkey.pk8 ..\apks\<outdir>\dist\<apkfile>.apk ..\apks\<apkfile>_signed.apk

签名完成后,在命令行中输入以下命令进行对齐优化
zipalign -f -v 4 ..\apks\<apkfile>_signed.apk ..\apks\<apkfile>_zipaligned.apk

<apkfile>_zipaligned.apk就是我们最终需要的apk了。
完成
部分apk需要系统框架资源,没有的话在重新打包时会报错,这种情况下我们只需要先安装一下对应系统框架即可(从你目标ROM中把/system/framework/framework-res.apk提取出,放到.\workspace\apktoolbox\apks下)。在命令行中输入以下命令进行安装
apktool if ..\apks\framework-res.apk

④ 濡备綍浣緼ndroid搴旂敤绋嫔簭銮峰彇绯荤粺𨱒冮檺 𨱒ヤ慨鏀圭郴缁熸椂闂

鍦 android 镄𪞝PI涓链夋彁渚 SystemClock.setCurrentTimeMillis()鍑芥暟𨱒ヤ慨鏀圭郴缁熸椂闂达纴鍙𨱍沧棤璁轰綘镐庝箞璋幂敤杩欎釜鍑芥暟閮芥槸娌$敤镄勶纴镞犺烘ā𨰾熷櫒杩樻槸鐪熸満锛屽湪logcat涓镐讳细寰楀埌"Unable to open alarm driver: Permission denied ".杩欎釜鍑芥暟闇瑕乺oot𨱒冮檺鎴栬呰繍琛屼笌绯荤粺杩涚▼涓镓嶅彲浠ョ敤銆 链𨱒ヤ互涓哄氨娌℃湁锷炴硶鍦ㄥ簲鐢ㄧ▼搴忚繖涓灞傛敼绯荤粺镞堕棿浜嗭纴钖庢潵鍦ㄧ绣涓婃悳浜嗗ソ涔咃纴鐭ラ亾杩欎釜鐩镄勮缮鏄鍙浠ヨ揪鍒扮殑銆 绗涓涓鏂规硶绠鍗旷偣锛屼笉杩囬渶瑕佸湪Android绯荤粺婧愮爜镄勭幆澧冧笅鐢╩ake𨱒ョ紪璇: 1. 鍦ㄥ簲鐢ㄧ▼搴忕殑AndroidManifest.xml涓镄刴anifest鑺傜偣涓锷犲叆 "android:sharedUserId="android.uid.system"杩欎釜灞炴с 2. 淇鏀笰ndroid.mk鏂囦欢锛屽姞鍏LOCAL_CERTIFICATE := platform杩欎竴琛 3. 浣跨敤mm锻戒护𨱒ョ紪璇戯纴鐢熸垚镄刟pk灏辨湁淇鏀圭郴缁熸椂闂寸殑𨱒冮檺浜嗐 绗浜屼釜鏂规硶楹荤储镣癸纴涓嶈繃涓岖敤寮铏氭嫙链鸿窇鍒版簮镰佺幆澧冧笅鐢╩ake𨱒ョ紪璇: 1. 钖屼笂锛屽姞鍏"android:sharedUserId="android.uid.system"杩欎釜灞炴с 2. 浣跨敤eclipse缂栬疟鍑篴pk鏂囦欢锛屼絾鏄杩欎釜apk鏂囦欢鏄涓嶈兘鐢ㄧ殑銆 3. 鐢ㄥ帇缂╄蒋浠舵墦寮apk鏂囦欢锛屽垹鎺塎ETA-INF鐩褰曚笅镄凛ERT.SF鍜孋ERT.RSA涓や釜鏂囦欢銆 4. 浣跨敤鐩镙囩郴缁熺殑platform瀵嗛挜𨱒ラ吨鏂扮粰apk鏂囦欢绛惧悕銆傝繖姝ユ瘆杈冮夯鐑︼纴 棣栧厛镓惧埌瀵嗛挜鏂囦欢锛屽湪鎴戠殑Android婧愮爜鐩褰曚腑镄勪綅缃鏄"build argetproctsecurity"锛屼笅闱㈢殑platform.pk8鍜宲latform.x509.pem涓や釜鏂囦欢銆 铹跺悗鐢ˋndroid鎻愪緵镄凷ignapk宸ュ叿𨱒ョ惧悕锛宻ignapk镄勬簮浠g爜鏄鍦"build oolssignapk"涓嬶纴鐢ㄦ硶涓"signapk platform.x509.pem platform.pk8 input.apk output.apk"锛屾枃浠跺悕链濂戒娇鐢ㄧ粷瀵硅矾寰勯槻姝㈡垒涓嶅埌锛屼篃鍙浠ヤ慨鏀规簮浠g爜鐩存帴浣跨敤銆傝繖镙锋渶钖庡缑鍒扮殑apk鍜岀涓涓鏂规硶鏄涓镙风殑銆 链钖庤В閲娄竴涓嫔师鐞嗭纴棣栧厛锷犲叆android:sharedUserId="android.uid.system"杩欎釜灞炴с傞氲繃Shared User id,𨰾ユ湁钖屼竴涓猆ser id镄勫氢釜APK鍙浠ラ厤缃鎴愯繍琛屽湪钖屼竴涓杩涚▼涓銆傞偅涔堟妸绋嫔簭镄刄ID閰嶆垚android.uid.system锛屼篃灏辨槸瑕佽╃▼搴忚繍琛屽湪绯荤粺杩涚▼涓锛岃繖镙峰氨链夋潈闄愭潵淇鏀圭郴缁熸椂闂翠简銆 鍙鏄锷犲叆UID杩树笉澶燂纴濡傛灉杩欐椂鍊椤畨瑁匒PK镄勮瘽鍙戠幇镞犳硶瀹夎咃纴鎻愮ず绛惧悕涓岖︼纴铡熷洜鏄绋嫔簭𨱍宠佽繍琛屽湪绯荤粺杩涚▼涓杩樿佹湁鐩镙囩郴缁熺殑platform key锛屽氨鏄涓婇溃绗浜屼釜鏂规硶鎻愬埌镄刾latform.pk8鍜宲latform.x509.pem涓や釜鏂囦欢銆傜敤杩欎袱涓猭ey绛惧悕钖巃pk镓岖湡姝e彲浠ユ斁鍏ョ郴缁熻繘绋嬩腑銆傜涓涓鏂规硶涓锷犲叆LOCAL_CERTIFICATE := platform鍏跺疄灏辨槸鐢ㄨ繖涓や釜key𨱒ョ惧悕銆 杩欎篃链変竴涓闂棰桡纴灏辨槸杩欐牱鐢熸垚镄勭▼搴忓彧链夊湪铡熷嬬殑Android绯荤粺鎴栬呮槸镊宸辩紪璇戠殑绯荤粺涓镓嶅彲浠ョ敤锛屽洜涓鸿繖镙风殑绯荤粺镓嶅彲浠ユ嬁鍒 platform.pk8鍜宲latform.x509.pem涓や釜鏂囦欢銆傝佹槸鍒瀹跺叕鍙稿仛镄𪞝ndroid涓婅繛瀹夎呴兘瀹夎呬笉浜嗐傝瘯璇曞师濮嬬殑Android 涓镄刱ey𨱒ョ惧悕锛岀▼搴忓湪妯℃嫙鍣ㄤ笂杩愯孙K锛屼笉杩囨斁鍒癎3涓婂畨瑁呯洿鎺ユ彁绀"Package ... has no signatures that match those in shared user android.uid.system"锛岃繖镙蜂篃鏄淇濇姢浜嗙郴缁熺殑瀹夊叏銆

⑤ android系统中的app安装后的各个文件路径在哪里

在系统中system/app文件夹中。

在android系统中安装软件时,系统会将其安装在设定好的路径当中,即system/app路径。后来下载的APP可以卸载,但系统自带的APP不能卸载,否则会引发系统的崩溃。

在安装APP时,也可以直接将文件复制到手机里(手机内存、Storage Card都可以),在手机上执行该CAB文件即可安装。

(5)androidappuid扩展阅读

android系统中的app不同格式安装:

1、CAB格式,直接将文件到手机里,都可以在手机上执行该CAB文件即可安装。

2、EXE格式,EXE格式的程序可分为手机上直接运行(即绿色软件的形式)和连接电脑同步安装2种形式。

3、免安装软件(绿色软件),将文件直接拷贝到手机里(手机内存、Storage Card都可以)即可运行。这种软件在网上下载时一般是RAR或ZIP格式压缩包,只需先在电脑上解压,将解压出来的文件夹拷贝到手机里即可运行。

4、Cpl文件,将文件直接拷贝到手机windows目录下,即可在设置中出现相应的选项。如SoftKeyAppleEx.cpl对应会出现软件设置选项。

阅读全文

与androidappuid相关的资料

热点内容
普通化学原理pdf 浏览:901
java的圣经 浏览:36
python遍历两个数组 浏览:393
手游搭建云服务器 浏览:401
视易锋云服务器启动黑屏 浏览:139
python怎么获取网页a标签内容 浏览:982
app更新后老的安装包去哪里了 浏览:199
集合运算法则差集 浏览:310
x2pdf 浏览:271
python源码cs 浏览:101
数控机床自动编程软件 浏览:738
方舟的服务器号是什么 浏览:111
没有服务器怎么发现其他节点 浏览:337
文明传奇怎么开服务器 浏览:56
javalistint 浏览:675
程序员到公司当领导 浏览:225
用算法控制玩家的行为 浏览:484
androidsdk17下载 浏览:793
怎么给单独表格添加密码 浏览:14
下载压缩密码 浏览:260