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,文件就可以正常读取了。