【问题标题】:Android Studio - Unable to open PNG fileAndroid Studio - 无法打开 PNG 文件
【发布时间】:2013-09-01 07:36:45
【问题描述】:

我正在尝试将 Facebook 集成到我的应用中,但是在 Android Studio 中运行它时,我得到了这个:

Gradle:任务“:AplikaceBeta1.0.1:mergeDebugResources”执行失败。 运行命令失败: C:\Users\David\AppData\Local\Android\android-studio\sdk\build-tools\android-4.2.2\aapt.exe s -i C:\Users\David\Desktop\facebook-android-sdk- 3.5\facebook-android-sdk-3.5\samples\AplikaceBeta1.0.1Project\AplikaceBeta1.0.1\build\exploded-bundles\AplikaceBeta101ProjectLibrariesFacebookUnspecified.aar\res\drawable\com_facebook_profile_picture_blank_square.png -o C:\Users\David\Desktop\facebook -android-sdk-3.5\facebook-android-sdk-3.5\samples\AplikaceBeta1.0.1Project\AplikaceBeta1.0.1\build\res\all\debug\drawable\com_facebook_profile_picture_blank_square.png 错误代码: 42 输出: C:\Users\David\Desktop\facebook-android-sdk-3.5\facebook-android-sdk-3.5\samples\AplikaceBeta1.0.1Project\AplikaceBeta1.0.1\build\exploded-bundles\AplikaceBeta101ProjectLibrariesFacebookUnspecified.aar\res\drawable\ com_facebook_profile_picture_blank_square.png 错误:无法打开 PNG 文件

无法打开 PNG 文件...什么?!

代码与“Getting Started with the Facebook SDK for Android (Android Studio)”指南中的代码完全相同。真的很简单,这是我的MainActivity.java:

package com.example.aplikacebeta101;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.widget.TextView;
import com.facebook.*;
import com.facebook.model.*;

public class MainActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // start Facebook Login
        Session.openActiveSession(this, true, new Session.StatusCallback() {

            // callback when session changes state
            @Override
            public void call(Session session, SessionState state, Exception exception)             {
            if (session.isOpened()) {

                // make request to the /me API
                Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {

                    // callback after Graph API response with user object
                    @Override
                    public void onCompleted(GraphUser user, Response response) {
                        if (user != null) {
                            TextView welcome = (TextView) findViewById(R.id.welcome);
                            welcome.setText("Hello " + user.getName() + "!");
                        }
                    }
                });
            }
        }
    });
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
}

}

有什么想法吗?我知道,Android Studio 仍然是 EAP,但我认为这不是 Android Studio 造成的。

【问题讨论】:

  • 此错误与 Gradle 而不是 Android Studio 相关。当我想在从 Mac 复制的 Windows 上运行一个项目时,我就有了它。我真的不知道为什么,但是当我将同一个项目从 Windows 复制到 Windows 时,一切正常......
  • 这可能与太长的路径有关...但我不确定
  • 在 Windows Shell 中,如果您想使用超过 260 个字符的路径,您必须在它们前面加上 \\?\。这看起来我们可以很容易地通过稍微改变构建规则来解决。我会向 Android Studio 团队提及。

标签: android facebook android-studio


【解决方案1】:

您使用的是 Windows 吗?如果生成的构建文件路径超过 Windows(不是 NTFS260 个字符的最大路径长度,则可能会发生此错误。确保您的项目路径不会太长,同时使用短名称。 More info from MS:

最大路径长度限制 在 Windows API(以下段落中讨论的一些例外情况)中,路径的最大长度为 MAX_PATH,定义为 260 个字符。本地路径按以下顺序构造:驱动器号、冒号、反斜杠、由反斜杠分隔的名称组件和终止空字符。例如,驱动器 D 上的最大路径是“D:\some 256-character path string”,其中“”表示当前系统代码页的不可见终止空字符。 (这里使用字符 是为了视觉清晰,不能作为有效路径字符串的一部分。)

另见discussion why the limitation Windows exists.

【讨论】:

  • awsme 非常感谢!!我浪费了很长时间来调试这个!多谢 !!!!为我工作
  • @NiravShah 你做了什么也解决了这个路径问题,使它工作??
  • @mukeshpatel 只需将您的工作区移动到例如根文件夹 C:\yourapp
  • @mukeshpatel:正确。将您的项目移动到最近的根文件夹,如 C:\\ 、 D:\\ 等
【解决方案2】:

正如@for3st 所说,这是 Windows 中的路径长度问题。 尝试使用此映射虚拟驾驶并缩短路径:http://www.ntwind.com/software/utilities/visual-subst.html

【讨论】:

    猜你喜欢
    • 2014-02-08
    • 2021-04-20
    • 1970-01-01
    • 2019-04-01
    • 2022-08-15
    • 1970-01-01
    • 2018-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多