Android是否缓存库?

Android是否缓存库?,android,device-driver,Android,Device Driver,我正在开发android应用程序使用的设备驱动程序。每当我对驱动程序进行一个小的修改并重新编译修改后的驱动程序时,应用程序似乎没有使用修改后的驱动程序,但仍然使用以前的版本。我确信这一点,因为所做的修改包括打印语句,在应用程序运行时不会显示该语句 但是,一旦我删除驱动程序并重建它或重新启动系统,它似乎就可以正常工作了。 这样做的问题是耗时,因为我必须确保应用程序使用的是最新的驱动程序 所以我的问题是android是否缓存库?如果是的话,有没有简单的黑客阻止它这样做 编辑: 事实上,我可以删除我的

我正在开发android应用程序使用的设备驱动程序。每当我对驱动程序进行一个小的修改并重新编译修改后的驱动程序时,应用程序似乎没有使用修改后的驱动程序,但仍然使用以前的版本。我确信这一点,因为所做的修改包括打印语句,在应用程序运行时不会显示该语句

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

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

编辑
事实上,我可以删除我的设备驱动程序,并且使用它的应用程序仍然运行,而不会报告缺少驱动程序的问题

HTTP缓存既重要,因为它减少了带宽使用并提高了性能,又复杂,因为规则远非简单。根据我的经验,大多数Java和Android应用程序要么不做HTTP缓存,要么他们自己滚来滚去做错事,要么方式过于复杂。换句话说,他们创建了一个非标准、一次性、无法维护的解决方案。还有,伊姆霍,这根本不是解决办法

如果您发现自己正在使用HttpClient,那么可以使用HttpClient缓存,这是Java的一个简单插件。请参阅我上一篇关于Android的HttpClient缓存的文章。但是,如果您使用的是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的应用程序。

是的,
android apks
确实缓存库。如果您已在电路板上安装了
xyz.apk
,则将创建名为
com.xyz
的文件夹,该文件夹将包含一个
缓存
文件夹,该文件夹将缓存库,因此
apk
不会拾取新修改的驱动程序
要绕过此效果,您可以

  • 从上述位置手动删除
    缓存
    文件夹
  • 卸载apk并重新安装
  • 重新启动电路板

  • 如何安装驱动程序?它是应用程序的一部分吗?(重新安装应用程序不应缓存任何内容)构建驱动程序(现在我正在交叉编译),然后将其保存在/system/lib。。。。这样应用程序就可以在运行时获取它。该应用程序只是一个普通的android应用程序Ex:am,这是一个可以播放视频的厨房应用程序。。。。。但重新安装应用程序与重新启动系统相同。。。缓存的东西被丢弃了杀掉应用程序进程还不够吗?你的“驱动程序”只是一个库,你可以动态加载到应用程序进程中,对吗?是的。。。我就是这么想的。。。顺便说一句,你的意思是在应用程序上使用kill命令吗。。。我的应用程序播放视频几秒钟后关闭。。。。我在视频结束后做了ps,发现我的应用程序没有被列出……有可能Android(或zygote)正在启动时缓存它们,至少表明它有能力这样做。另见。