【发布时间】:2012-01-24 05:31:42
【问题描述】:
我正在尝试将自定义壁纸添加到 Android 中的默认壁纸集。使用模拟器(2.3.3 虚拟设备),我在 /system/app/Launcher2.apk 中找到了它们。我已经提取了 APK 并使用 apktool 对其进行了解码,在壁纸文件夹中添加了壁纸,然后使用 apktool 再次重新编码了 APK。但我无法将新的 apk 推送到模拟器。
在系统终端上,打开模拟器,我使用“adb remount”使文件系统可写,然后使用“adb push”推送文件,但出现“复制失败:目录非空”错误.如果我尝试使用“adb install”,我会得到:
1159 KB/s (5598893 bytes in 4.714s)
pkg: /data/local/tmp/Launcher2.apk
Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES]
我不确定错误是什么,但我担心唯一的解决方案可能是从源代码重新编译 Android,这对于我想要做的事情可能有点矫枉过正。
我尝试将壁纸插入系统本身的唯一原因是因为默认壁纸和用户壁纸的处理方式似乎不同。我有这张非常简单的壁纸,天空晴朗,底部有一朵云;它主要是蓝色渐变,顶部为深蓝色,底部为浅蓝色。与默认壁纸集非常相似的图像可以正常显示,但是当我尝试将图像设置为壁纸时,我会看到明显的色带,而默认图像则不会。
我尝试从 APK 中提取默认壁纸,然后将其作为 DCIM 文件夹中的常规图片推送到模拟器,当我将其设置为用户定义的壁纸时,我注意到它的显示不像我had picked it from the default set: you have to crop it first just like any other image, but when picking the whole image I realized that the default wallpapers are actually cropped, but not as much as the default selection when setting up a wallpaper.也就是说,选择默认壁纸时,实际显示的内容比将相同图像放入 SD 卡并手动选择作为壁纸时显示的内容要少。
我只是想了解 Android 如何处理壁纸,看看我是否只是对图像做错了,或者这是否是 Android 的实际问题,需要以某种方式“欺骗”它。原始图像是 800x480 JPG,按比例重新缩放并使用 GIMP 裁剪为 480x320(它适用于具有 240x320 屏幕的设备)。在我的电脑上,图像显示正常。
原图
调整大小的图像
我用于比较的默认设置的壁纸
请注意,默认设置的壁纸是 640x480。将我的图像重新缩放到 640x480 也不起作用。
我知道这实际上是 2 个问题,而不仅仅是一个问题,但我不确定解释我的问题的最佳方式。感谢理解。
【问题讨论】:
-
也许this 的问题可能会有所帮助?不,您不能修改现有的 APK 并重新部署它。
-
感谢APK证书说明;尽管这不是我的实际问题,但将来会很有帮助。