Android gradle 插件 2.2.0 在读取资产时导致 FileNotFoundException
Android gradle plugin 2.2.0 causes FileNotFoundException while reading from assets
升级到 Android gradle 插件 2.2.0(和 Android Studio 2.2)后,我无法读取位于 [=14] 的 zip 文件=] 它曾经在插件版本 2.1.3 和之前工作正常,但现在它抛出以下异常
java.io.FileNotFoundException: magic_info.zip
at android.content.res.AssetManager.openAsset(Native Method)
at android.content.res.AssetManager.open(AssetManager.java:334)
at android.content.res.AssetManager.open(AssetManager.java:308)
出于某种原因,它无法从资产中找到该文件。
这是我过去使用过的代码。
public static ZipInputStream getZipInputStream(Context context)
{
try
{
return new ZipInputStream(context.getAssets().open("magic_info.zip"));
}
catch (IOException e)
{
e.printStackTrace();
}
return null;
}
知道这有什么问题吗?我错过了什么吗?
替换为:
return new ZipInputStream(context.getAssets().open("magic_info.zip"));
有了这个:
return new ZipInputStream(getResources().getAssets().open("magic_info.zip"));
好的,我已经弄明白了,但有点奇怪。
从 Android Studio 2.2 和 gradle 插件 2.2 开始,您需要安装与您的测试设备相对应的 android SDK 以及安装在您机器上的目标 SDK,如果您希望一切正常。
现在我可以定位 API 24,但我将我的应用程序测试到设备 运行 棒棒糖 (API 21)。一旦我安装了 SDK 21,文件就可以正常读取了。
升级到 Android gradle 插件 2.2.0(和 Android Studio 2.2)后,我无法读取位于 [=14] 的 zip 文件=] 它曾经在插件版本 2.1.3 和之前工作正常,但现在它抛出以下异常
java.io.FileNotFoundException: magic_info.zip
at android.content.res.AssetManager.openAsset(Native Method)
at android.content.res.AssetManager.open(AssetManager.java:334)
at android.content.res.AssetManager.open(AssetManager.java:308)
出于某种原因,它无法从资产中找到该文件。
这是我过去使用过的代码。
public static ZipInputStream getZipInputStream(Context context)
{
try
{
return new ZipInputStream(context.getAssets().open("magic_info.zip"));
}
catch (IOException e)
{
e.printStackTrace();
}
return null;
}
知道这有什么问题吗?我错过了什么吗?
替换为:
return new ZipInputStream(context.getAssets().open("magic_info.zip"));
有了这个:
return new ZipInputStream(getResources().getAssets().open("magic_info.zip"));
好的,我已经弄明白了,但有点奇怪。
从 Android Studio 2.2 和 gradle 插件 2.2 开始,您需要安装与您的测试设备相对应的 android SDK 以及安装在您机器上的目标 SDK,如果您希望一切正常。
现在我可以定位 API 24,但我将我的应用程序测试到设备 运行 棒棒糖 (API 21)。一旦我安装了 SDK 21,文件就可以正常读取了。