为什么我的资产文件没有更新?

时间:2011-04-23 06:08:00

标签: android eclipse directory apk assets

我的程序从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的文件进行更改并保存文件时,当我再次运行程序时,我的更改不会反映在模拟器上。该项目保存到拇指驱动器。我检查了它以确保只有一个具有该名称的文件,并且它是最新的。我知道由于代码的更改,应用程序被重新下载。我正在使用egit,Eclipse版本3.6.2和ADT版本10.0.1。有人知道为什么我的程序没有处理这个保存的文件吗?

更新:刷新然后再次清理项目无济于事。

6 个答案:

答案 0 :(得分:8)

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

如果文件很小,请将其复制到app's private data directory

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

答案 1 :(得分:3)

我在资产文件夹中使用.sqlite文件发生了这件事,我通过

解决了这个问题
  1. 从手机中卸载应用
  2. 并重建。

答案 2 :(得分:2)

databaseeleven.txt的文件大小是什么?

资产文件的每个文件限制为1MB,如果文件大小超过此限制,则在apk中将无法使用。

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

  • 将文件拆分为1MB块,在this SO question
  • 中有一个示例
  • 使用未经Android压缩的文件扩展名,如建议的here。请注意,您的文件不会被压缩,您最终可能会得到一个大的apk。

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

在eclipse和clean& amp;再建一次。希望您能够找到模拟器中反映的更改

答案 5 :(得分:0)

如果它是你的格式的txt文件,你应该做这样的事情

InputStream ins =  getResources().openRawResource(R.raw.options);

其中“options”是〜/ res / raw文件夹中的options.txt文件。

对此文件的任何更改仍需要发布/部署回设备/模拟器,因此它具有最新的apk。

希望这会有所帮助......