资产文件不在使用Android Studio 3.0.1的内部版本中

资产文件不在使用Android Studio 3.0.1的内部版本中,android,android-studio,Android,Android Studio,我的应用程序有一个私有类型的示例数据文件,自从该应用程序最初为Android 2.3构建以来,它就包含在其中。引用它的代码如下所示: Resources res = mCtx.getResources(); AssetManager assMan = res.getAssets(); try { is = assMan.open(DB_SAMPLE); // stuff that copies to destination... } catch (IOException e)

我的应用程序有一个私有类型的示例数据文件,自从该应用程序最初为Android 2.3构建以来,它就包含在其中。引用它的代码如下所示:

Resources res = mCtx.getResources();
AssetManager assMan = res.getAssets();

try {
    is = assMan.open(DB_SAMPLE);

    // stuff that copies to destination...
}
catch (IOException e) {
    stat = false;
}
来自AndroidStudio 3.0.1的构建发生的情况是,assMan.open方法跳转到异常处理程序,并出现“未找到文件”错误。资产文件夹和文件肯定在那里,基于类似的问题,我删除并重新创建了资产文件夹,并将文件复制回其中。在“项目视图”窗格中,“资产”文件夹直接位于“主”下,并具有与“资源”文件夹相同的图标。该项目现在的目标是SDK 26,但我尝试过的所有旧Android版本也会出现这种失败

我必须做些什么才能让我的文件被识别,还是做了一些其他的改变?还是仅仅是一只虫子


问题结束:忽略了尝试做一个干净的项目,认为所有的重建都包括这样做。“资产”文件夹现在位于APK中,所有内容都正常工作。

不是第一次学到的经验教训:如果有疑问,请在重建版本之前始终执行一个干净的项目。“资产”文件夹回到了它所属的APK中。

在Android Studio中,使用APK分析器确认您的资产确实在APK中,并且在构建过程中没有以某种方式被删除。事实上,APK中没有资产文件夹,而它在Studio早期版本的APK中。最近我只是偶尔开发Android,所以最后一次可能是在几次发布之前。也许
assets/
目录位于错误的位置(通常应该位于
main/src/
)或者你的Gradle文件中有东西告诉Gradle关于资产的其他位置,而不是正常位置。不幸的是,我不知道如何找到或修复这样的错误。我想知道几年前开始以Android 2.3为目标的项目(根据你的书,顺便说一句)是否会出现问题,并且已经向上迁移到后续版本的构建工具。但在12月底升级到最新的工作室之前,我上一次在11月17日构建它时,它确实起到了作用。“不幸的是,我不知道如何找到或修复这样的错误”--编辑您的问题,并发布项目树的屏幕截图,显示
资产/
在哪里,并发布模块的
build.gradle
文件的内容。或者,将您的项目与其他具有
资产/
的项目进行比较,例如,看看在
资产/
位置和渐变配置方面有什么不同。这相当奇怪。虽然清理项目通常有助于解决代码或资源问题,但这是我第一次听说它解决了资产问题。但是,我很高兴它对你有用!