用Androd studio 开发的app,编译出apk, 想获取system权限

环境:编译好的apk, android 源码环境,有root权限和源码对应的开发板,我这里是user版本。

思路:1 可以的话直接把整个app源码移到 android源码上编译,但是问题重重,sdk版本和兼容包,依赖包等等。最后关键是,编译成系统app时,需要依赖的so库和动态jar包 是不会被打包到apk中的。(略坑,有可能是没有找着正确的android.mk)

2 app 添加上 android:sharedUserId="android.uid.system" 属性,然后编译出来的apk 用源码环境重签名。push 到设备 /system/app/xx_your_app_/. 再重启设备。

第二种方法,重签名:

重签名可以 直接用签名的工具和系统的签名文件,不过一般系统都有预制第三方app,一般源码工程中vendor(厂商)目录 就有,可以借鉴,直接用一个Android.mk文件去完成了。

1.0 修改原app的 AndroidManifest.xml文件,在 <mainfest  ....> 标签中加入  android:sharedUserId="android.uid.system"

2.0 把编译好的apk拷贝到源码编译环境自己建立的空文件夹下,同时添加一个Android.mk

#vlc
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := java_sample-debug
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
LOCAL_MODULE_CLASS := APPS
LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
LOCAL_CERTIFICATE := platform
LOCAL_DEX_PREOPT := falseLOCAL_PROGUARD_ENABLED := disabled
include $(BUILD_PREBUILT)#LOCAL_MODULE                  -----------apk名称
#LOCAP_MODULE_TAGS  := optional-----------optional:指该模块在所有版本下都编译
#LOCAL_MODULE_CLASS
#LOCAL_MODULE_SUFFIX ---------------------module的后缀,=.apk
#LOCAL_CERTIFICATE := platform -----------platform key签名
#LOCAL_DEX_PREOPT  -----------------------apk 优化 #给fale
#LOCAL_PROGUARD_ENABLED-------------------java 混淆,防反编译
# BUILD_PREBUILT 

进去mm一下即可。会在 out/target/product/**/system/app/xx/  下得到对应重签名的apk.

xx 为LOCAL_MODULE  指定的名称       ** 编译的对应平台名

注意容易出错的点:

1.0 修改 AndroidMainfest.xml 文件的时候,xml 文件写错了 <> 没有匹配,但是android studio只是报了错误提示,apk还是可以编译安装?正确的是这样子:

失误第一次修改的时候copy过来,写成了这样:

在package= 这一行后面原先 ">" 已经结束了这个标签,所以后续一行添加的 android:shareUserId="android.uid.system">  没有起作用的,但是android studio 只是给了个 ”灯泡“ 编译运行还是通过了,android studio 3.2 还以为是android studio buid.gradle又有什么机制把这个属性给覆盖了,找半天。

2.0 重签名后,push覆盖原来的apk,直接启动app可能还是没有以system用户启动app:用push的方法 “安装”到系统目录 。如果刚开始的时候已经push过 没有修改 shareUserId ="android.uid.system"的同名apk到同一个目录,重新修改再push进行覆盖,app可以再启动,但是启动是不会以system 用户来启动的。究其原因,push进去只是把文件拷贝进去,并不是安装,所以app启动的时候还是以上次安装的信息 来启动.

猜测----------------  所以应该先删掉原来的,重启,(会清除原先的信息) ,再push新app,重启(会安装新的app),猜测重启后系统app应该有一次“安装”的过程,新的shareUserId属性在这个安装过程才起作用。这个需要去探究app安装和启动。

A: android studio编译出来的apk: build/outputs/debug/*.apk

B:查看app是否以system用户启动了: adb 登录进去,用linux的ps查看一下即可 执行 # ps | grep "xxx"      xxx为app的包名的一部分即可:

android第三方app改为系统app,加入system组,获取system权限相关推荐

  1. Android旅游景点美食点评系统app

    高德地图: https://lbs.amap.com Android旅游景点美食点评系统app 开发工具: AndroidStudio Idea Mysql 技术栈: Web端 后台前端:Layui. ...

  2. 基于android的外卖在线订餐系统app

    本外卖订餐系统是一个Android 客户端+JSP Servlet服务端应用程序,启动Android上的应用程序后可以登录.查看菜品等,再者学校学生人数的增加,学生对餐饮服务的要求更加高:许多学生不满 ...

  3. android打印doc文件,安卓系统APP打印开发实例.doc

    S&PS Solution Tips PAGE 5 | Page 主题 安卓系统APP打印开发实例 适用范围 带网口Honeywell系列 intermec系列 解决方案 当你想要在安卓DPA ...

  4. 基于android手机的健身预约系统APP开发

    目录 一.本课题国内外研究动态及意义 二.毕业设计(论文)研究内容.拟解决的主要问题 三.毕业设计(论文)研究方法.步骤及措施 四.主要参考文献 一.本课题国内外研究动态及意义 随着社会不断的进步,健 ...

  5. java计算机毕业设计基于安卓Android的校园安保巡查系统APP

    项目介绍  校园安保巡查系统APP管理是校园安保巡查系统管理中对学生必不可少的一个部分.在人们校园安保巡查系统管理的整个过程中,校园安保巡查系统APP管理担负着最重要的角色.为满足如今日益复杂的管理需 ...

  6. 基于android的旅游信息查询系统APP(ssm+uinapp+Mysql)

    网络的广泛应用给生活带来了十分的便利.所以把旅游信息查询管理与现在网络相结合,利用java技术建设基于安卓的旅游信息查询系统,实现旅游信息查询的信息化.则对于进一步提高旅游信息查询管理发展,丰富旅游信 ...

  7. 基于Android课程学习在线考试系统APP

    课程学习在线考试系统APP采用结构化设计方法,可以实现用户注册登陆.查看教程,在线测试,错题收集,视频观看,在线交流.利用RecyclerView等进行界面布局.用户可登录注册系统,在线浏览相关操作系 ...

  8. 基于Android的掌上校园系统app

    需求信息: 客户端: 1:用户注册登录:通过手机号码.用户名称以及密码完成用户的注册和登录 2:校园新闻:学生可以查看校园新闻信息 3:校园活动:学生可以查看活动信息 4:校园论坛:学生可以在此发布想 ...

  9. java计算机毕业设计基于安卓Android的高校校园跑腿系统app(源码+系统+mysql数据库+Lw文档)

    项目介绍 随着计算机技术的发展,带来社会各行业的进步,信息化逐渐运用到人们的生活中,电子商务的发展又促进了快递行业的诞生,由此延伸出相应的跑腿业务,特别是在校园内最后一公里为模式的平台迅速发展起来.为 ...

最新文章

  1. oracle进程对文件没有写权限,ORACLE SYS用户没有权限一天半的救库过程
  2. Oracle 学习笔记 11 -- 视图 (VIEW)
  3. centos复制到另外一台电脑连不上网
  4. Android的IPC机制Binder
  5. Windows上的单个进程所能访问的最大内存量是多少?它与系统的最大虚拟内存一样吗?这对于系统设计有什么影响?...
  6. SAP UI5 初学者教程之二十三 - 列表控件的排序 Sort 和分组 Group 试读版
  7. java手机网站开发工具_制作网站常用的网页开发工具有哪些
  8. 人脸识别运行之前需要处理的问题
  9. 有100个GMAIL的邀请,需要的来信就可以啦。
  10. DP 最优二叉树 的四边形不等式优化
  11. 微信小程序 图片显示不出来的问题 100%管用
  12. AD15复制相同模块布局
  13. ubuntu 配置Thinkpad T400 的小红点(trackpad)
  14. [ZT]COMPAQ PROLIANT 8500上手动安装NetWare 4.11
  15. 2021,自动驾驶的“五代十国”
  16. Python基础学习(2)基本数据类型、三元运算、深浅拷贝、函数式编程、参数、变量、lambda表达式、python内置函数、文件处理、上下文管理、递归、命名空间、闭包
  17. 【转载】国内主要的量化交易平台及链接
  18. 陶金的操作纪律和操盘
  19. 接入点 CMNET和CMWAP 区别
  20. AST实战|免安装一键还原ob混淆详细使用教程

热门文章

  1. 实习笔记Day8(2022.8.16)
  2. oracle 把西历转换成日本年号
  3. 爬虫-某直播平台图片批量爬取url并下载
  4. 【mud】object增加颜色的代码以及参考
  5. 基于FPGA的SSI接口协议实现
  6. java mybatis 返回map_Mybatis中返回Map
  7. 2021.2.10记一次极路由3HC5861无ROOT刷机登录ssh的经历
  8. VSCODE:从零点五开始运行一个小型vaadin项目
  9. 基于python+django框架+Mysql数据库的多用户B2C商城平台系统设计与实现
  10. bootstrap表头如何展示不动_bootstrap-table实现表头固定以及列固定的方法示例