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…

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本。第一本有汉字脸谱、日月星…

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

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

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

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

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

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

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

之前发过一篇文章,是关于2019年的小目标,“打浦桥锦鲤”。有留言说,发paper的……有留言说,学习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 - 【让我来稳定战局】 给予敌方全体力量下…

html如何添加文档,如何在HTML中添加行

如何在HTML中添加行在HTML中,我们可以使用以下不同方式轻松地在文档中添加横线:使用HTML标签使用内部CSS使用HTML如果要使用Html标签在Html文档中添加水平线,则必须遵循以下步骤。使用这些步骤,我们可以轻松地添加以下行&#xff…

ffmpeg-win32-v3.2.4 下载_iTOP-4412开发板android4.4代码下载和编译

基于迅为iTOP4412开发板Android 源码可以从光盘,网盘获取稳定版本,也可以从 GitHub 下载我们的开发版本。GitHub 仅提供源码下载,不提供二进制下载,二进制文件存放在光盘和网盘中。6.3.2.1 repo 下载android 代码管理不同于 uboot…

九宫怎么排列和使用_什么是九宫飞星,九宫飞星在生活中的应用

什么是九宫飞星?如何看九宫飞星?如果您能配合老黄历的每日忌宜、时辰忌宜、时辰吉凶、五行旺衰、今日卦象、三煞七煞等资料综合应用,那么您就可以随时随地趋吉避凶、心想事成了。九星即为一白、二黑、三碧、四绿、五黄、六白、七赤、八白及九…

qt html导pdf 页眉,如何使用wkhtmltopdf unpatched qt在每个页面上添加页眉和页脚?

我能弄清楚,我工作的解决方案。它非常混乱,但它的工作原理控制器public function printPDF(Request $request){$parts Parts::all();$date $this->getTime();// divide by 36 because I can fit 36 items on each page$totalPages ceil(count($par…

sendencpac文件能删吗_“手机刷短视频”躺赚?安装自动阅读文件,开机就能挣钱?靠谱吗?...

原标题:“手机刷短视频”躺赚?安装自动阅读文件,开机就能挣钱?靠谱吗?我开始一个月赚三五十万的时候,悟出了一个道理,能做大生意千万别做小生意,能做小生意别打工,小财考…

mysql 值为0 但却被认为null_MySQL介于普通读和锁定读的加锁方式

在阅读本文前最好先看过三篇语句加锁分析文章:超全面MySQL语句加锁分析(上篇)(求转)超全面MySQL语句加锁分析(中篇)(求转)超全面MySQL语句加锁分析(下篇)(求转)事前准备为了故事的顺利发展,我们先建一个表,并向表中插入一些记录,下…