Android go app 安装包,android - 如何从android studio开发时在system / app中安装应用程序...

在android studio上开发时,是否有一种方法可以让应用程序直接安装在system/app文件夹中(该设备是根目录)?

也就是说,当我按下“运行应用程序”按钮时,我希望将APK放在系统/应用程序中。

如果这是不可能的,那么在构建和测试系统应用程序时,推荐的最方便的方法是什么?

最佳答案:

从AS自动部署系统应用程序

您可以创建一个脚本来完成该作业,并在每次单击“运行方式”时自动运行该脚本。

1。创建脚本

你可以修改我根据需要创建的这个脚本。放入:project_directory/installsystem.sh#!/bin/bash

# CHANGE THESE FOR YOUR APP

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。在运行时将其绑定

转到运行->编辑配置

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

安装选项->取消显示:无

启动选项->启动:无

启动前:按+,然后按Run External Tool,选择脚本。

在“新建”对话框中:

设置任何名称。

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

注意事项:

第一次安装

第一次安装应用程序时,只需重新启动一次设备(adb reboot)。然后,只需按Run即可自动执行所有操作。

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

adb root问题

有时(通常是重新启动后的初始执行),对adb root的调用找不到设备。成功后,您只需从AStudio或sleep重新播放一秒钟即可。

使用adb root而不是su

adb root将不会工作,尽管安装系统和授予权限。要使其正常工作,请将脚本的adb push变量和install部分替换为以下内容:

..

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值