android systemui机制,在AS中开发SystemUI(4):设置项目运行机制

1、期望项目如何运行?

普通 App 在 run 之后,会编译出 APK,然后 AS 会自动调用 install 命令进行安装,完成安装后会启动 App 的 Launcher Activity。这些 AS 已经帮你自动完成了。如果你的 App 不像 SystemUI 或 Settings 这样贴近 Framework 层,且有入口 Activity,那么完全可以直接运行。

如果你开发的系统应用,并不局限于指定设备,比如相册应用,那么完全可以将 /system/app 下的 APK 删除,重启,然后即可直接运行,或者如果你用的是系统签名,无需删除 APK 即可覆盖安装运行。

但是像 SystemUI 这样的应用,首先是没有默认的 Activity 的,其次它必须 push 到指定目录后,杀死进程才能生效,因此接下来需要解决 APK push 到设备指定目录的问题。

当然,经过前面文章的操作,已经可以生成 APK 了,那么手动使用 adb 命令 push 也没问题的,但是我们这里要做到的是全自动,在需要运行的时候只需要点击 run 按钮即可。这样才能达到节省开发时间的目的。

不管测试设备使用的是手机或模拟器,都需要执行:

adb root

adb remount

使得 system 目录处于可重写的状态。在 remount 之前,也许还需要执行:

adb disable-verity

再重启设备,具体得看 remount 是否成功。

在我写这篇文章时,我发现 Android 10 的模拟器是无法 remount 的,具体原因未知。

如果是使用的模拟器,在启动时需要以可读写的方式启动,在使用 AVD Manager 创建好模拟器后,执行以下命令。

# 查看当前有哪些模拟器

emulator -list-avds

# XXX 是模拟器的名称

emulator -avd XXX -writable-system

emulator 命令在 SDK 的 emulator 目录中,配置系统变量中即可执行。

这样模拟器就可以 remount 了。

2、让生成的 APK 文件 push 到设备的指定目录下

我们需要写一个 bat 命令行脚本文件。让 AS 在生成 APK 之后,自动执行这个脚本文件。

需要注意的是,开启 instan run 或者 Apply Changes 功能时,debug 运行的项目生成的 APK 不在 app\build\outputs\apk\debug 目录下,而且,如果应用是需要 push 进行验证的,开启了这个功能也没用,因为需要杀死进程。

因此,不要开启这个功能。

493b7876c480e513e38833b79c21fbe0.png

Instant run

如果这个功能无法关闭,那么运行时构建方式需要选择 release 模式:Build - Select Build Variant...,将 Active Build Variant 改成 release。

51d4db8d954e829f1cb041bbe3b11ae6.png

Select Build Variant...

同时不要开启混淆:build.gradle 的 buildTypes 区块下的 release 区块,其 minifyEnabled 属性设置为 false。

buildTypes {

release {

minifyEnabled false

proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'

}

}

然后根据生成的 APK 位置,去修改上方的脚本文件对应的信息。可以手动在 cmd 中验证脚本命令。

我们先来看如何让 AS 去自动执行脚本。

installSysPrivApp.bat 内容如下:

```bat

:: 熟悉 Windows 命令行的同学就知道,set 操作是创建变量,%xxx% 是引用变量

:: 应用包名

set app_package=com.android.systemui

:: 目标目录名称

set dir_app_name=SystemUI

:: 系统目录

set path_sysapp=/system/priv-app

:: apk的位置,在AS3.2后,debug的apk不知道跑哪里去了,但是可以直接Release,不要开启混淆,以便调试

set apk_host=.\app\build\outputs\apk\debug\app-debug.apk

:: apk名称

set apk_name=%dir_app_name%.apk

:: 目标目录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/567141.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手机屏幕厂家信息软件_警惕假个税手机软件蹭热点,千万别被窃取私人信息

新个税法从1月初开始实施。2018年12月31日,国家税务总局推出“个人所得税”APP,方便纳税人线上填报资料进行专项抵扣。几天来,这款APP的下载量和注册量大幅增长。随之而来的是,很多商业公司制作的各类“个税”APP也成为热门。这其…

paramiko执行nohup_记一次使用django+paramiko远程操作时报错无法返回问题

前提:以前能力不足,只能用linux命令行形式写了个线上发布工具。采用的是paramiko来调用远程指令。最近自学了点前端的东西,打算用django写一个web版的发布工具,在做正常异步远程操作时候发现都没有什么问题。但是当调用我们游戏的…

图片动画效果html5,8个实用炫酷的HTML5图片动画应用

原标题:8个实用炫酷的HTML5图片动画应用近期我们发布了不少关于HTML5和jQuery的图片动画应用,很多都比较实用,也有一些效果非常炫酷,比如一些HTML5 3D图片动画特效。本文精选了8个实用而且炫酷的HTML5图片动画应用,希望…

ado execute open区别_二极管IN4148和IN4007的应用区别

二极管IN4148和IN4007的定义1N4148 是开关二极管,耐压100V,电流150mA,反向恢复速度快。1N4007 是普通整流二极管,耐压1000V,电流1A ,反向恢复时间在ms级别,只能用于低频电路中。二极管IN4148和I…

cmd imp导入dmp文件_cmd 导入oracle数据的dmp文件

在前面已经安装好orcale,现在导入数据库并开始使用。步骤如下:设置表空间自动扩容登录 用system as sysdba 登录 密码为空查询表SYSTEM表空间的数据文件的物理路径,语句为SELECT FILE_NAME FROM DBA_DATA_FILES WHERE (TABLESPACE_NAME SYST…

html列目录带图片,根据目录下的图片的个数,往html文件填充对应数量的img标签,请问有没有实现这种需求的工具?...

这直接JS就能实现了,实现方式分为【预加载】和【延迟加载】下面是个预加载的例子:首先来一个空的HTML页面和最基本的CSS初始化样式Document* {margin: 0;padding: 0;}.imgwrap li {list-style-type: none;}img {vertical-align: top;}然后我们要往标签里…

input maxlength 汉字_汉字原来这么好玩 第A15版:亲子悦读 20201104期 都市女报

山东师范大学附属小学三年级二班马荃 指导教师:范新瑞《汉字好好玩》是我非常喜欢的一套书,它的作者是台湾女作家张宏如,她毕业于台湾大学历史系,是台湾以哲学的角度研究汉字的第一人。这套书一共有5本。第一本有汉字脸谱、日月星…

exe msdt 无法上网_windows10系统连接网络提示无法连接到此网络错误怎么办

最近有windows10系统用户到本站咨询说遇到这样一个问题,就是要连接网络的时候,提示无法连接到此网络错误,导致无法连接到internet,该怎么办呢,本文就给大家讲解一下windows10系统连接网络提示无法连接到此网络错误的具…

将类似html数据打印机,机器人和3D打印机的架构有哪些相似之处

工业4.0参考架构模型(RAMI 4.0)以一个三维模型展示了制造业涉及的所有关键要素,在这个模型的等级层次维度(右侧水平轴)描述了一个7层的自动化层级,如图1所示,从下到上依次是:产品,现场设备,控制设备&#x…

access inner join 数据类型不匹配_用Access开发生产管理系统

刚接触Excel,自以为已经对数据的处理掌握到炉火纯青的地步了,殊不知,山外有山人外有人,自从学习了Access,才发现,原来,数据的处理还真不是我们日常工作中所遇到的那么简单。下面,我就…

git修改远程源_Git如何修改远程仓库地址

公司搬移, 作为git仓库的服务器IP地址变了。 本地代码挺多,重新检出太占时间,可以修改一个什么配置让我本地仓库和新的远程仓库建立关联吗, 答案是肯定的!方法有很多,这里简单介绍几种:以下均以…

html文件打开是搜索导航,GitHub - bituplink/OneHtmlNav: 单文件html的网络导航页面,简约并不简单...

OneHtmlNav这是基于小呆导航的超级精简版本,之所以投入了不少精力折腾这个导航,是之前自己网站的导航有点功能不足,看到了小呆导航有我需要的功能,但是确是基于CMS的,有点复杂我又不想再搭建一个平台,所以就…

matlab中结束脚本运行_MATLAB脱单指南

之前发过一篇文章,是关于2019年的小目标,“打浦桥锦鲤”。有留言说,发paper的……有留言说,学习python的……居然还有好多人留言说,要!脱!单!公众号的关注者,女生比例只有…

python花括号代替缩进_Python 为什么甩掉累赘的花括号,使用缩进来划分代码块?...

人人好,这是“Python为什么”系列节目的文字稿(文末有旁观地址)。本期话题:Python 为什么使用缩进来划分代码块,而不像其它语言使用花括号 {} 或者 “end” 之类的语法?Python 的缩进是一个老生常谈的话题,经常有人会提…

安卓手机可以改鸿蒙吗,华为鸿蒙2.0可以替代安卓吗,华为鸿蒙2.0优势在哪

在华为开发者大会上,华为消费业务CEO 余承东,正式发布鸿蒙OS2.0,并宣布华为鸿蒙OS将全面启用全场景生态,并将于2020年12月发布手机版。余承东还表示,明年,华为的智能手机将全面升级,以支持鸿蒙操…

怎样把电脑恢复出厂设置_数据蛙:苹果恢复出厂设置,彻底释放手机内存

点击蓝字关注我们苹果手机有时候用久了出现卡顿的现象,这个时候我们可以通过苹果恢复出厂设置,以让手机彻底释放内存。恢复出厂设置在哪里?恢复出厂设置后会怎样?如果您还不知道的话,在本文中数据蛙就告诉您答案&#…

扫地机器人开机充电还是关机充电器_适用于智能扫地机器人的充电方法与流程...

技术领域本发明涉及一种智能扫地机,具体涉及适用于智能扫地机器人的充电方法。背景技术:扫地机器人又叫懒人扫地机,是一种能对地面进行自动吸尘的智能家用电器。因为它能对房间大小、家具摆放、地面清洁度等因素进行检测,并依靠内…

html图片怎么设置行高,html行高怎么设置

html设置行高的方法:首先创建一个HTML示例文件;然后在body中通过p标签创建几行文本内容;最后通过给文本添加“line-height:20px;”样式来设置行高即可。本文操作环境:windows7系统、HTML5&&CSS3版,DELL G3电脑…

怎么从某个div跳转到另一个_另一个伊甸伊丝卡怎么样 伊丝卡使用攻略_

另一个伊甸中,伊丝卡是游戏中的四星角色之一,那么伊丝卡怎么样,下面一起来看看伊丝卡使用攻略吧。 【人物攻略】伊丝卡 LV1 - 【团队合作很重要呢】 给予敌方全体力量下降10%智慧下降10%(1回合) LV2 - 【让我来稳定战局】 给予敌方全体力量下…

乒乓球十一分制比赛规则_乒乓球竞赛规则 赛制和比赛规则

附:赛制和比赛规则一、赛制1.比赛执行国家体育总局最新审定的《乒乓球竞赛规则》,比赛使用红双喜40毫米白色乒乓球,执行国际乒联关于“11分”制,一分钟暂停,“无遮挡发球”的竞赛规定。2.男子团体比赛采用五场三胜,每盘…