我删除了系统应用程序(com.android.mms),并拥有恢复它所需的.apk,但是它不会通过标准渠道进行安装(运行.apk会使我“应用程序未安装”)。安装系统应用程序的.apk的正确方法是什么?

#1 楼

在使用使用/system/app的Android 4.3时,您需要将.apk推送到手机的系统分区到文件夹/system/priv-appadb中。您可以在此处找到有关adb的更多信息:http://android-dls.com/wiki/index.php?title=ADB。

要写入/system,您可能必须重新安装才能读取-write:

adb shell
su
mount -o rw,remount /system


或者,完全从主机的ADB进行操作:

adb root
adb remount


现在您可以放置.apk

adb push my-app.apk /sdcard/
adb shell
su
cd /sdcard
mv my-app.apk /system/app
# or when using Android 4.3 or higher
mv my-app.apk /system/priv-app


之后,如果尚未设置标志,请更改权限。所有系统应用程序都需要具有权限rw-r--r--。您也可以使用命令chmod 644 /path_to/your_file通过ADB更改它们。尽管它已经很老了,但这可能会有所帮助。

放置.apk之后,您需要重新启动设备。例如adb reboot

评论


是的,我认为这是要走的路,尝试了一下,不好的签名说。我使用了Mms.apk,该文件是.zip rom的一部分,用于安装当前运行的android。

–德米特里(Dmitriy Likhten)
2010-09-13 20:34

漂亮的答案。谢谢。一则评论,我无法“ mv my-app.apk / system / app”。我收到一个错误“在“ XXX.apk”上失败-跨设备链接”。如android.stackexchange.com/questions/75920/中所述,我能够CP和RM apk

–Michael Levy
2015年3月3日在22:15



考虑使用cp而不是mv,因为您在不同的文件系统之间移动,并且并非所有mv版本都支持它

–安德烈斯
2015年5月4日,0:05



这不会使用apk的位置更新android权限,这对于使用apk的软件包是必需的

–pa增加
15年5月16日在1:23

#2 楼

卡尔·帕克(Carl Parker)在Android Authority上对此进行了描述:
(如果原始帖子掉了,请在此处部分复制)


对于安装在设备上的应用程序

>
假设您已在设备上安装了该应用程序,请转到该应用程序的
Google Play商店链接,并记下“?id =”后的单词,而
忽略其余内容。
通过USB
电缆将设备连接到计算机。
打开计算机上的命令提示符,然后键入以下
命令:



adb remount 
adb shell 
su 
cd /data/app/ 




键入命令ls appfilename*(其中“ appfilename”是Google Play上该应用的ID。
请确保在最后加上星号)。此命令
将显示应用的完整APK文件名。
输入以下命令:




mv apk_full_filename_here /system/app/apk_full_filename_here 
exit 
exit 
adb reboot 




现在设备将重新启动。您的应用现在已另存为系统应用。

对于APK在PC硬盘上的应用程序


在计算机上打开命令提示符,并导航至APK
文件所在的位置。
在设备上启用USB调试,然后通过USB电缆将
设备连接到计算机。
输入以下命令:



adb remount
adb push apk-filename-here /system/app/
adb shell chmod 644 /system/app/apk-filename-here
adb reboot



手机将自动重启。您的应用现在将另存为系统应用。


#3 楼

请注意,在使用adb玩游戏时,您将通过其程序包文件名安装应用程序(也就是说,在命令提示符下,键入> adb install myFile.apk)

,但您将通过其程序包名将其卸载( > adb卸载com.this.that.otherthing)

在卸载之前的版本之前,您将无法安装软件包。

将adb添加到您的PATH会有所帮助,这样您就可以转到.apk文件所在的目录,然后键入adb install myFile.apk。

评论


谢谢!不知道卸载机制:)

–德米特里(Dmitriy Likhten)
2010-09-13 20:34

尚未尝试使用系统应用程序,但对于通常的应用程序,/ system / bin / pm(软件包管理器)实用程序对我有用。类似于pm install -r myFile.apk(-r表示“替换”)。这样,您无需卸载并知道软件包名称。

–亚历山大·马拉霍夫(Alexander Malakhov)
13年7月4日在4:29

#4 楼

您需要安装Android SDK(或至少一个称为adb的工具)。
还需要在设备上允许“非市场安装”。

完成此操作后,转到带有控制台的包含文件的文件夹。
然后连接您的手机(通过USB)并运行adb install appname.apk

评论


查看其他答案的评论。自从我安装了swype以来,已经启用了非市场安装:)

–德米特里(Dmitriy Likhten)
2010-09-13 20:35