zoukankan      html  css  js  c++  java
  • adb将Apk内置到系统中(system/priv-app)

    https://blog.csdn.net/starhosea/article/details/78697007

    so文件的处理是目前遇到过的问题。文章中解释了。

    正文:

    有时候我们在Android 系统内置自己的应用,在测试时,Android Studio 默认的安装方式是将我们开发的应用作为普通应用安装到系统中的。本文提供一种方式,在开发过程中,将apk内置到系统中,而不需要系统源代码。

    adb 将apk内置到系统的方法很多人已经提到过了,但是大多都过时了,或者叙述不详细。下面的方式在我在 Android 7.1.1 测试通过

    内置Apk的特权
    Android 内置 apk 有如下特权:
    1. 不能被普通用户卸载
    2. 具有比普通应用更高的权限,可以使用受限的系统 API,
    3. 结合某些 Manifest.xml 声明,可以实现更多效果,例如系统级保活
    4. 可以声明 priority > 0 的 组件
    (其他特权有待发现..)

    准备apk
    点击Android Studio 的 Build -> Build Apk(s) ,生成我们测试用的 apk。

    如果你的 apk 带有 .so库,需要同时准备对应目标系统平台的 .so。我的测试机是 arm64-v8a,则我需要的 .so库 在工程的 app/build/intermediates/cmake/debug/obj/arm64-v8a/ 下。

    清理旧的安装
    之前测试过程中,你可能已经安装过apk到系统中,需要先卸载,不然有可能影响我们之后内置方式安装的apk的执行。

    卸载方式一
    通过手机自带软件管理卸载。这种比较简单了,不多说。

    卸载方式二
    通过adb卸载。
    打开控制台,输入下面的命令卸载旧的安装

    > adb uninstall <your package name>
    1
    例如我的报名是 com.star.test,我的完整卸载命令是

    > adb uninstall com.star.test
    1
    看到控制台输出 SUCCESS 即表示卸载完成。

    签名(可跳过)
    如果我们的应用需要某些系统权限,可能需要使用系统签名,参考这篇文章为应用打上系统签名。

    将应用Push到系统目录下
    注: 以下命令运行可能报错 Read-only file system,解决该问题请参看 获取Android System 写入权限

    推送apk到系统目录
    输入如下名命令

    > adb push <your apk path> /system/priv-app
    1
    Android 4.4 之后,系统核心apk安装在 /system/priv-app 中,以前是安装在 /system/app 中。

    推送 .so 到系统库目录下
    如果apk带有 .so 库,.so 库也需要单独push到 /system/lib 或者 /system/lib64 中,具体看你的系统有哪个目录。当然,.so 的ABI需要和系统ABI符合。

    安装应用
    在 Android 5.0 以前,推送到系统应用目录中的apk会被自动安装,Android 5.0 之后,只在系统启动时,系统会自动安装它。

    确认有没有被实际安装,可以通过如下命令

    > adb shell //进入adb shell 模式
    # pm list packages | grep <your package name>//在所有已安装的apk中,查找指定的apk有没有安装
    1
    2
    如果安装成功,则会有一行输出,显示自己的应用包名,否则不会有任何输出提示。

    可以通过重启系统来使刚刚push进入的apk安装到系统中。如果完全重启系统的话,花费时间较长,可以通过部分重启来节省时间。在cmd中执行如下命令。

    > abd shell//进入adb shell 模式
    # am restart //重启系统(非完全重启)
    1
    2
    重启之后正常情况下应用应该已经安装了,接下来测试下应用是否能能够工作。
    ---------------------
    作者:Star丶Xing
    来源:CSDN
    原文:https://blog.csdn.net/starhosea/article/details/78697007
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    如何只通过Sandboxed Solution启动一个定时执行的操作
    创建与SharePoint 2010风格一致的下拉菜单 (续) 整合Feature Custom Action框架
    创建与SharePoint 2010风格一致的下拉菜单
    《SharePoint 2010 应用程序开发指南》第二章预览
    SharePoint 2013 App 开发 (1) 什么是SharePoint App?
    使用Jscex增强SharePoint 2010 JavaScript Client Object Model (JSOM)
    搜索范围的管理
    SharePoint 2010 服务应用程序(Service Application)架构(1)
    SharePoint 2010 服务应用程序(Service Application)架构(2)
    SharePoint 2013 App 开发 (2) 建立开发环境
  • 原文地址:https://www.cnblogs.com/jdhdevelop/p/11226374.html
Copyright © 2011-2022 走看看