Android Studio - 无法打开PNG文件

时间:2013-09-01 07:36:46

标签: android facebook android-studio

我正在尝试将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 \ explosion-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 \样本\ AplikaceBeta1.0.1Project \ AplikaceBeta1.0.1 \建立\水库\所有\调试\绘制\ com_facebook_profile_picture_blank_square.png   错误代码:       42   输出:       C:\ Users \用户大卫\桌面\ Facebook的Android的SDK-3.5 \ Facebook的Android的SDK-3.5 \样本\ AplikaceBeta1.0.1Project \ AplikaceBeta1.0.1 \建立\爆炸,包\ AplikaceBeta101ProjectLibrariesFacebookUnspecified.aar \水库\绘制\ 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引起的。

2 个答案:

答案 0 :(得分:58)

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

  

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

另见discussion why the limitation Windows exists.

答案 1 :(得分:0)

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