用android studio编写启动程序吗,如何在从android studio开发的系统/应用程序中安装应用程序...

自动部署系统应用程序

您可以创建一个将执行该作业的脚本,并在每次在AS中运行时自动运行该脚本.

1.创建脚本

您可以根据需要调整我创建的脚本.将其放在:project_directory / installSystem.sh中

#!/bin/bash

# CHANGE THESE

app_package="com.example"

dir_app_name="MySysApp"

MAIN_ACTIVITY="SysAppMainActivity"

ADB="adb" # how you execute adb

$ADB_SH="$ADB shell" # this script assumes using `adb root`. for `adb su` see `Caveats`

path_sysapp="/system/priv-app" # assuming the app is priviledged

apk_host="./app/build/outputs/apk/app-debug.apk"

apk_name=$dir_app_name".apk"

apk_target_dir="$path_sysapp/$dir_app_name"

apk_target_sys="$apk_target_dir/$apk_name"

# Delete previous APK

rm -f $apk_host

# Compile the APK: you can adapt this for production build, flavors, etc.

./gradlew assembleDebug || exit -1 # exit on failure

# Install APK: using adb root

$ADB root 2> /dev/null

$ADB remount # mount system

$ADB push $apk_host $apk_target_sys

# Give permissions

$ADB_SH "chmod 755 $apk_target_dir"

$ADB_SH "chmod 644 $apk_target_sys"

#Unmount system

$ADB_SH "mount -o remount,ro /"

# Stop the app

$ADB shell "am force-stop $app_package"

# Re execute the app

$ADB shell "am start -n \"$app_package/$app_package.$MAIN_ACTIVITY\" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER"

2.用AS Run绑定

>转到运行 – >编辑配置

>在常规选项卡(您的模块)上进行以下更改

>安装选项 – > Deplay:没有

>启动选项 – >启动:没有

>启动前:按,然后运行外部工具,选择您的脚本.

>在新对话框中:

>设置任何名称.

>“工具设置” – >程序:导航到项目的目录,然后选择您的脚本

警告:

首次安装

在您的应用程序的第一次安装中,设备需要重新启动(adb重新启动)一次.之后,你可以简单地按下Run,一切都会自动发生.

这是因为主机编译器(dex2oat)没有被自动调用.不知怎的,这个新系统应用程序尚未通知操作系统.手动拨打电话可以解决这个问题,但是我没有运气.如果有人解决了,请分享.

adb根问题

有时(通常是重新启动后的初始执行)调用adb root找不到设备.您可以简单地从AStudio重新播放,或在成功的adb根后睡一秒钟.

使用su而不是adb root

在安装系统和授予权限的情况下,adb push将无法正常工作.要使其工作,请使用以下命令替换ADB_SH变量和脚本的安装部分:

..

ADB_SH="$ADB shell su -c"

..

# Install APK: using adb su

$ADB_SH "mount -o rw,remount /system"

$ADB_SH "chmod 777 /system/lib/"

$ADB_SH "mkdir -p /sdcard/tmp" 2> /dev/null

$ADB_SH "mkdir -p $apk_target_dir" 2> /dev/null

$ADB push $apk_host /sdcard/tmp/$apk_name 2> /dev/null

$ADB_SH "mv /sdcard/tmp/$apk_name $apk_target_sys"

$ADB_SH "rmdir /sdcard/tmp" 2> /dev/null

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值