如何往anroid源码中移入一个像Settings或其他一开机就已经存在且不可卸载的app

本文介绍了如何将一个应用程序移植到Android系统中,使其成为类似Settings的系统内置app。通过编译系统源码,并在核心配置文件中设置,确保app在系统启动时自动加载。以Terminal应用移植为例,详细阐述了AndroidManifest.xml、Android.mk和CleanSpec.mk的修改,以及编译过程中遇到的so库问题。
摘要由CSDN通过智能技术生成

现在有很多系统app的开发,我不知道市面上的系统开发,是直接把软件植入了,还是也是做成apk包,在系统启动时自动加载,用的是何种方式;


接下来我介绍的一种就是类似与Settings这种,由系统绑定,整体代码在系统内,通过编译自身达到生产app的情况;

  • 我会已我移植过的android上自带的terminal为例子;当然系统中已经有了Termianl,但它的功能无法满足我们的开发需求,所有我移植了一款源码,方便自己根据开发需求定制,另一方面这个的一直有些难度,在过程在碰到一些问题,更有代表性;
  • 接下来进入正题;
  • 首先明确路径
    我们要移植的package工程,在package/apps/下边,你会发现系统所有的应用都在此处
    我们会用到build下面的build/target/product/core.mk的配置文件,(此处是你的app能否被加载起来的关键)
    再有,我们要有所需要的源码,一般github上的,都可用。当然也不乏一些拥有androidStudio的apk编译代码,它主要是通过gradle编译的,所以直接移入此类的是无法编译成功的,我们需要转译成通过.mk文件编译的,一边大致的目录结构;
    这里写图片描述
    一款应用,AndroidManifest.xml/Androd.mk/CleanSpeck.mk/res/src是不可缺少的,其他的jni,aidl看你的工程的需要。

  • 接下俩一点点分析,先说res|src两个文件夹,大家都知道res放的布局文件,配置信息,valuse属性等,src中就是我们的代码主题,这没什么可说的,直接移植进来就好。

  • 接下来是我们的AndroidManifest.xml,清单配置文件,大家应该也都不陌生;
1 <?xml version="1.0" encoding="utf-8"?>
  2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3     package="jackpal.androidterm"
  4       android:versionName="1.0.70"
  5       android:versionCode="71"
  6       android:installLocation="auto">
  7     <uses-feature android:name="android.hardware.touchscreen" android:required="false" />
  8     <uses-permission android:name="android.permission.INTERNET" />
  9     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
 10     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
 11     <uses-permission android:name="android.permission.ACCESS_SUPERUSER" />
 12     <uses-permission android:name="android.permission.WAKE_LOCK" />
 13     <permission android:name="jackpal.androidterm.permissi
访问 Android 内置的 Linux 命令行 shell。 受欢迎的“Android Terminal Emulator”的一个新版本。同样的程序,新的名字。 主要功能 + 完整的 Linux 终端模拟器。 + 多窗口。 + 启动器快捷显示 + 支持 UTF-8 文本。(阿拉伯语、文、希腊语、希伯来文、日语、韩文、俄语、泰文等。) + 全免费,无广告、无内置付费项目,无烦人的屏幕。 常见问题简述: + 如果遇到输入问题,请安装免费的“Hacker's Keyboard IME”。(尤其是对于三星或 HTC 设备。) + 该应用非游戏模拟器。 + 该应用不用于获取手机 root 权限或更改手机 IMEI 码。 + 需知道(或愿意学习)通过该应用使用命令行。 + 为了使用 Android 设备内置命令之外的命令,需安装一组命令行应用,比如 Busy Box 或 Debian chroot。 + 在版本低于 5.0 的 Android 系统上安装该应用,如果出现 -505 错误,表示其他应用正在使用同样的权限。为了成功安装本应用,请先卸载这些应用。(有用户反馈称,导致该问题的原因是 jrummy's Toolbox Pro。) 想要了解更多有关 Terminal Emulator for Android 的信息? 请加入 G+ 社区:#Android Terminal Emulator https://plus.google.com/u/0/communities/106164413936367578283 或查看文档 wiki: http://github.com/jackpal/Android-Terminal-Emulator/wiki 想要参加 Terminal Emulator for Android 的翻译或校对?请访问 https://github.com/jackpal/Android-Terminal-Emulator/wiki/Translating-to-Other-Languages for instructions。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值