Android会缓存库吗?

时间:2013-12-02 07:52:11

标签: android device-driver

我正在研究Android应用程序使用的设备驱动程序。每当我对驱动程序进行一些小修改并重新编译修改过的驱动程序时,似乎应用程序没有使用修改后的驱动程序,但仍然使用=以前的版本。我确信这是因为所做的修改包括打印声明,该声明在应用程序运行时不会显示。

但是,一旦我删除驱动程序并重建它或重新启动系统,它似乎工作正常。 这样做的问题是耗时,因为我必须确保应用程序正在使用最新的驱动程序。

所以我的问题是android是否缓存库?如果是这样,有任何简单的黑客可以阻止它这样做吗?

修改:   事实上,我可以删除我的设备驱动程序,使用它的应用程序仍在运行而不报告有关缺少驱动程序的问题!!!!!!!!!!!!!!!!!

2 个答案:

答案 0 :(得分:1)

是的,android apks会缓存库。如果您在主板上安装了xyz.apk,则会创建一个名为com.xyz的文件夹,此文件夹将包含一个cache文件夹,用于缓存库,因此不会选择新修改的驱动程序由apk提升 要绕过此效果,您可以

  1. 从上述位置手动删除cache文件夹。
  2. 卸载apk并重新安装agian
  3. 重新启动主板

答案 1 :(得分:0)

HTTP缓存既重要,因为它减少了带宽使用并提高了性能,而且复杂,因为规则远非简单。根据我的经验,大多数Java和Android应用程序要么不进行HTTP缓存,要么自己动手做错,或者做得过于复杂。换句话说,他们创建了一个非标准的,一次性的,无法维护的解决方案。恕我直言,这根本就没有解决方案。

如果您发现自己使用HttpClient,则可以使用HttpClient-Cache,这对Java来说很容易。请参阅我之前关于Android的HttpClient-Cache的帖子。但是如果你正在使用HttpUrlConnection(也就是java.net.URL.openConnection()),那么常规Java或Android就没有好的解决方案。好吧,在Android 4.0及更高版本中,您可以使用HttpResponseCache,但只有一小部分Android设备使用4.0或更高版本,这不是一个非常好的解决方案。如果你使用谷歌推荐的Android 4.0 +的HttpResponseCache,那么之前的所有Android版本都没有HTTP响应缓存 - 这会导致服务器负载过重,应用程序性能降低,以及不必要的带宽使用。

为了解决这个问题,我从AOSP中获取了实现Android 4.0的HttpResponseCache的所有代码,并使其成为一个单独的库。该库易于使用,适用于Java 1.5+,所有Android版本,并在APLv2下获得许可(就像AOSP中的其他所有内容一样)。真的,没有理由不使用它!您甚至可以在Java服务器应用程序中使用,例如那些使用Spring的应用程序。