如何把应用程序app编译进android系统

 我来答
huanglenzhi
2015-12-19 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
采纳数:117538 获赞数:517190
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。

向TA提问 私信TA
展开全部

  准备工作:
  一、开启ROOT权限。
       ROOT方法:下载一键ROOT之类的软件,根据操作步骤进行,就可以获取ROOT权限了。
  二、安装RE文件管理器。
  清理系统自带应用
  一、用RE打开系统根目录下的system/app,进行精简系统自带应用,注意,要对照一些总结可删减程序的文件,以免删错了导致系统故障。
  二、根目录:preload目录下,可能会有系统的预装应用,不用的也可以全部删掉。
  移动APK到system/app 目录
  一、移动apk:用RE管理器把要安装的apk软件移动到/system/app 目录下。

  在操作前,将/system/app 目录挂载为可读写;

  注意软件名不要有中文 、空格及其他特殊字符等;

  如果无法移动,显示空间不足时,可以先移动到data/app/下,再移动到/system/app;

  二、修改apk权限: 对移动进来的apk软件更改权限,即改为:用户权限为 读+写,分组权限为 读,其他权限为 读。
  三、提取 .so文件:用RE提取apk软件中/lib/目录下的所有 .so文件,将其移动到/system/lib中。

  点击apk软件,用RE查看文件内容,即可找到 ,so文件。

  四、修改 .so文件权限:方法同上。
  五、重启手机。在此过程中,可能加载的时间稍长点,请耐心等待即可。
        完成以上操作后,手机的可用内存空间就会增大一些,同时,/system的剩余空间也可以有效的利用,机器运行时的速度也会有所提升了。
  注意:在以后的恢复出厂设置中,还原的系统就会变为现在修改过的系统了。
操作截图如下:

du小悟
2015-01-23 · TA获得超过1.4万个赞
知道大有可为答主
回答量:4397
采纳率:88%
帮助的人:2555万
展开全部
把常用的应用程序编译到img文件中,就成了系统的一部分,用户不必自己安装,当然也卸载不了;
同时也可以删减系统自带的应用程序,精简系统;

1.\build\target\product 目录下generic.mk文件:
Java代码 收藏代码
PRODUCT_PACKAGES := \
AccountAndSyncSettings \
DeskClock \
AlarmProvider \
Bluetooth \
Calculator \
Calendar \
Camera \
testMid \
CertInstaller \
DrmProvider \
Email \
Gallery3D \
LatinIME \
Launcher2 \
Mms \
Music \

我们添加一个testMid \ 应用名称。
2.把testMid包放入
\packages\apps 目录下,修改android.mk文件。

Java代码 收藏代码
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_PACKAGE_NAME := testMid
LOCAL_CERTIFICATE := platform

include $(BUILD_PACKAGE)

注:LOCAL_PACKAGE_NAME := testMid (包名必须和generic.mk中添加的相同)
编译源码,可以看到在
\out\target\product\smdkv210\system\app
目录下生存了testMid.apk了。这时system.img也包含了此应用。
-------------------------------------------------------------------
特殊情况:有时,应用需要包含jar包,这时的app导入源码时会出现问题:
MODULE.TARGET.JAVA_LIBRARIES.libarity already defined by ... stop

由于 LOCAL_STATIC_JAVA_LIBRARIES := libarity 会引发错误信息。
目前解决方法是:
\build\core 目录下修改base_rules.mk
注释掉错误信息:

ifdef $(module_id)
#$(error $(LOCAL_PATH): $(module_id) already defined by $($(module_id)))
endif
$(module_id) := $(LOCAL_PATH)

--重新编译,这时可以通过了。

(2)、删除原厂(Telchips)带源码的应用程序,如DTV_DVBT
在/device/telechips/m801/device.mk
注释掉相应语句:
# PRODUCT_PACKAGES += \
# SampleDVBTPlayer \
同时,在/out/target/product/m801/system/app 找到相应的.APK包,并删除
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式