我的应用程序有一个样本数据文件,是私有类型的,自从它最初为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;
}
Android Studio 3.0.1版本构建的问题是,assMan.open方法跳转到异常处理程序并显示“文件未找到”错误。资产文件夹和文件确实存在,并且根据类似问题的建议,我删除并重新创建了资产文件夹,并将文件复制回其中。在Project视图窗格中,“assets”文件夹直接位于“main”下面,并具有与“res”文件夹相同的图标。该项目现在针对SDK 26进行目标设置,但是在我尝试过的所有旧Android版本上都会出现此故障。
我是否需要执行特定操作才能使我的文件被识别,或者是否有其他变化?还是这只是一个错误?
问题已关闭:由于疏忽,没有尝试执行“Clean Project”操作,认为“Rebuild All”会包括此操作。现在资产文件夹已在APK中,一切正常运行。
assets/
目录放错位置了(通常应该在main/src/
中),或者你的 Gradle 文件中有些东西告诉 Gradle 资源文件的位置不是标准位置。 - CommonsWare