Android 为什么不';我的资产文件没有更新吗?

Android 为什么不';我的资产文件没有更新吗?,android,eclipse,directory,apk,assets,Android,Eclipse,Directory,Apk,Assets,我的程序从assets文件夹中打开一个.txt文件并从中读取。代码如下: AssetManager myAssetManager = myContext.getAssets(); try{ InputStream is = myAssetManager.open("databaseeleven.txt"); byte[] bytes = new byte[is.availabl

我的程序从assets文件夹中打开一个.txt文件并从中读取。代码如下:

           AssetManager myAssetManager = myContext.getAssets();
           try{
                   InputStream is = myAssetManager.open("databaseeleven.txt");
                   byte[] bytes = new byte[is.available()];
                   is.read(bytes);
                   commands = new String(bytes);

           } catch(IOException e){
                   Toast.makeText(myContext, e.getMessage(), Toast.LENGTH_SHORT).show();
                   e.printStackTrace();
           }//try-catch
我注意到,当我更改名为databaseeleven.txt的文件并保存该文件时,当我再次运行程序时,我的更改不会反映在模拟器上。项目将保存到thumb驱动器中。我检查了它以确保只有一个文件具有该名称,并且它是最新的。我知道由于代码更改,应用程序被重新下载。我正在使用egit、Eclipse版本3.6.2和ADT版本10.0.1。有人知道为什么我的程序不能使用这个保存的文件吗


更新:刷新然后再次清理项目没有帮助。

编辑文件后清理项目…希望这有帮助。

在eclipse中刷新项目后重试,然后再次清理和构建它。希望您能够找到emulator中反映的更改

databaseeleven.txt的文件大小是多少

对于资产文件,每个文件有1MB的限制,如果文件大小超过此限制,则在apk中不可用

如果这是您的情况,我知道有两种选择:

  • 把你的文件分成1MB的块,你有一个这样的例子
  • 按照建议,使用Android不会压缩的文件扩展名。请注意,您的文件不会被压缩,您可能会得到一个大的apk

注意:Android 2.3中似乎删除了1MB限制,因此这只适用于2.2及更低版本。

如果我正确理解了您的问题,您正在尝试更改
/assets
文件夹中的文件。无法在签名后更改
.apk
内容

如果文件很小,请将其复制到
应用程序的私有数据目录中


如果文件较大,请将其复制到
/sdcard

如果是您格式的txt文件,您应该执行以下操作

InputStream ins =  getResources().openRawResource(R.raw.options);
其中“options”是~/res/raw文件夹中的options.txt文件

对此文件的任何更改仍需要发布/部署回设备/仿真器,以使其具有最新的apk


希望这有帮助…

我在assets文件夹中遇到了一个.sqlite文件,我通过

  • 从手机卸载应用程序
  • 重建

  • 不幸的是,刷新和清理项目没有帮助。这个问题可能是重复的,我不认为它是重复的,因为原始海报在重建之前更改了资产文件,而不是在运行时。如果尝试将应用程序安装到其他手机上,会发生什么情况?它有资产文件的最新版本还是更早版本?在明确删除后在第一部手机上重新安装它也一样?在这两种情况下,.txt文件中的更改都会显示出来。Bummer:bounty即将到期,没有解决方案:-(我的.txt文件只有32121字节,但谢谢您的回答。@sthompso山姆说的是对的。您存储在资产中的文件是只读的。sthompso(我的同事)通过将一个新文件拖动到Eclipse项目资源管理器中的Assets目录中,然后重新生成,然后重新刷新,更改了资产文件。重新生成不会对应用程序重新签名,或者它总是具有相同的签名吗?@espertus,虽然上面是正确的,但它不会回答OPs问题。这与该问题无关。R电子安装apk实际上应该将旧apk的资产替换为新apk的资产,就像它替换了实际的应用程序一样。@espertus&@sthompso,如果您在emulator中遇到刷新问题,一种方法是清除“管理应用程序”下的数据文件,或者您可以取消安装应用程序并尝试重新安装。当eclips时可能会发生这种情况e尝试执行代码“热交换”,并且资产文件可能不会被视为代码更改。这不是模拟器,而是实际的手机。不过,谢谢。相当糟糕的开发经验,太干净的构建在一个大型项目上花费了很长时间。这是Eclipse,尝试成为IDE是荒谬的。这也发生在我身上,这是更新f的唯一方法“资产”文件夹中的文件。