Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android studio中使用facebook sdk_Android_Facebook_Android Studio_Facebook Android Sdk_Android Gradle Plugin - Fatal编程技术网

在Android studio中使用facebook sdk

在Android studio中使用facebook sdk,android,facebook,android-studio,facebook-android-sdk,android-gradle-plugin,Android,Facebook,Android Studio,Facebook Android Sdk,Android Gradle Plugin,我跟在后面。当我运行我的应用程序时,我得到下面提到的警告 Gradle: module 'facebook' won't be compiled. Unfortunately you can't have non-Gradle Java module and Android-Gradle module in one project. 我应该如何解决这个问题 我尝试了@Scott Barta的答案,得到了以下错误消息 A problem occurred configuring proj

我跟在后面。当我运行我的应用程序时,我得到下面提到的警告

Gradle: module 'facebook' won't be compiled. Unfortunately you can't have non-Gradle Java module and Android-Gradle module in one project.
我应该如何解决这个问题

我尝试了@Scott Barta的答案,得到了以下错误消息

    A problem occurred configuring project ':App'.
> Failed to notify project evaluation listener.
   > A problem occurred configuring project ':libraries:facebook'.
      > Failed to notify project evaluation listener.
         > Could not resolve all dependencies for configuration ':libraries:facebook:_DebugCompile'.
            > Could not find any version that matches com.android.support:support-v4:+.
              Required by:
                  MyApplication2.libraries:facebook:unspecified

在facebook sdk项目中创建build.gradle文件:

apply plugin: 'android-library'

dependencies {
    compile 'com.android.support:support-v4:18.0.+'
}

android {
    compileSdkVersion 8
    buildToolsVersion "19.0.0"

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }

        // Move the build types to build-types/<type>
        // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
        // This moves them out of them default location under src/<type>/... which would
        // conflict with src/ being used by the main source set.
        // Adding new build types or product flavors should be accompanied
        // by a similar customization.
        debug.setRoot('build-types/debug')
        release.setRoot('build-types/release')
    }
}
apply插件:“android库”
依赖关系{
编译'com.android.support:support-v4:18.0.+'
}
安卓{
编译DK8版
buildToolsVersion“19.0.0”
源集{
主要{
manifest.src文件“AndroidManifest.xml”
java.srcDirs=['src']
resources.srcDirs=['src']
res.srcDirs=['res']
assets.srcDirs=['assets']
}
//将生成类型移动到生成类型/
//例如,build-types/debug/java、build-types/debug/AndroidManifest.xml。。。
//这会将它们移出src/…下的默认位置,这将
//与主源集正在使用的src/冲突。
//应同时添加新的构建类型或产品风格
//通过类似的定制。
setRoot('build-types/debug')
setRoot('build-types/release')
}
}
然后在
设置中添加
include':libs:facebook'
等于
/libs/facebook
(库路径)。gradle
注意

对于AndroidStudio 0.5.5及更高版本,以及Facebook SDK的更高版本,此过程比下面所述的(为这两个版本的早期版本编写的)要简单得多。如果您正在运行最新版本,则只需执行以下操作:

  • 从下载Facebook SDK
  • 解压归档文件
  • 在Android Studio 0.5.5或更高版本中,从文件菜单中选择“导入模块”
  • 在向导中,将要导入的模块的源路径设置为解包存档中的“facebook”目录。(注意:如果选择整个父文件夹,它不仅会引入库本身,还会引入所有示例应用,每个应用都作为一个单独的模块。这可能会起作用,但可能不是您想要的)
  • 按Ctrl+Shift+Alt+S打开项目结构,然后选择依赖项选项卡。单击
    +
    按钮并选择模块依赖项。在新窗口弹出窗口中选择
    :facebook.
  • 你该走了

  • 旧版Android Studio和旧版Facebook SDK的说明

    这适用于Android Studio 0.5.4及更早版本,对于Facebook为发行版提供Gradle构建文件之前的Facebook SDK版本来说最有意义。我不知道他们在SDK的哪个版本中做了这样的更改

    Facebook页面上“将SDK导入Android Studio项目”下的说明对于基于Gradle的项目是错误的(即,您的项目是使用Android Studio的新项目向导构建的,并且/或者您的应用程序模块具有
    build.Gradle
    文件)。请按照以下说明操作:

  • 在项目主目录下创建一个
    libraries
    文件夹。 例如,如果您的项目是HelloWorldProject,您将创建 一个
    HelloWorldProject/libraries
    文件夹

  • 现在从SDK复制整个
    facebook
    目录 安装到刚刚创建的
    文件夹中

  • 删除
    facebook
    目录中的
    libs
    文件夹。如果你愿意, 删除
    project.properties
    build.xml
    .classpath
    .project
    。还有文件。你不需要它们

  • 使用 以下内容:

    buildscript {
        repositories {
            mavenCentral()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:0.6.+'
        }
    }
    
    apply plugin: 'android-library'
    
    dependencies {
        compile 'com.android.support:support-v4:+'
    }
    
    android {
        compileSdkVersion 17
        buildToolsVersion "19.0.0"
    
        defaultConfig {
            minSdkVersion 7
            targetSdkVersion 16
        }
    
        sourceSets {
            main {
                manifest.srcFile 'AndroidManifest.xml'
                java.srcDirs = ['src']
                resources.srcDirs = ['src']
                res.srcDirs = ['res']
            }
        }
    }
    
    请注意,与编写时相比,您可能需要调整
    classpath'com.android.tools.build:gradle:0.6.+'
    行,以引用较新版本的gradle插件,这取决于您何时遵循这些说明。很快我们将需要0.7或更高版本。试一试,如果你得到一个错误,需要更新版本的Gradle插件,那就是你必须编辑的那一行

  • 确保SDK管理器中的Android支持库已安装

  • 编辑应用程序主目录中的
    设置.gradle
    文件 并添加以下行:

    include ':libraries:facebook'
    
  • 如果您的项目已经在Android Studio中打开,请单击工具栏中的“将项目与Gradle文件同步”按钮。完成后,将显示
    facebook
    模块。

  • 打开“项目结构”对话框。从左侧选择模块 列表中,单击应用程序的模块,单击依赖项 选项卡,然后单击+按钮添加新的依赖项。
  • 选择 “模块依赖性”。它将弹出一个对话框,其中包含 可供选择的模块;选择“:图书馆:facebook”。
  • 单击“确定”按钮 所有的对话。 Android Studio将自动重新同步您的项目(无需再次单击“用渐变文件同步项目”按钮),然后 选择新的依赖项。你该走了

  • Scott Barta的解决方案对我很有效,只是我必须将这些添加到我的主项目build.gradle文件的依赖项中:

    compile files('libs/android-support-v4.jar')
    compile project(':libraries:facebook')
    
    同样值得一提的是,您需要确保:

    android {
        compileSdkVersion 18
        buildToolsVersion "18.1.1"
    
        defaultConfig {
            minSdkVersion 7
            targetSdkVersion 18
        }
    

    在两个build.gradle文件中都是相同的…一旦我这样做了,它就运行得很好。

    使用git时,您可以轻松地合并最新的facebook android sdk

    • 添加facebook android sdk作为子模块:
      git子模块添加
      https://github.com/facebook/facebook-android-sdk.git
    • 将sdk添加为gradle项目:编辑settings.gradle并添加行:
      include':facebook安卓sdk:facebook'
    • 将sdk作为依赖项添加到模块:编辑build.gradle并在其中添加 依赖项块:
      编译
      项目(“:facebook android sdk:facebook”)

    我将Facebook Android SDK部署到Sonatype存储库中

    repositories {
        maven {
            url 'https://oss.sonatype.org/content/groups/public'
        }
    }
    
    dependencies {
        compile 'com.shamanland:facebook-android-sdk:3.15.0-SNAPSHOT'
    }
    
        apply plugin: 'android-library'
    
        dependencies {
            compile 'com.android.support:support-v4:19.1.+'
            provided files('./libs/bolts.jar')
        }
    
        android {
            compileSdkVersion 20
            buildToolsVersion '20.0.0'
    
            defaultConfig {
                minSdkVersion 14
                targetSdkVersion 20
            }
    
            lintOptions {
                abortOnError false
            }
    
            sourceSets {
                main {
                    manifest.srcFile 'AndroidManifest.xml'
                    java.srcDirs = ['src']
                    res.srcDirs = ['res']
                }
            }
        }
    
    repositories {
        jcenter()       // IntelliJ main repo.
    }
    
    dependencies {
        compile 'com.facebook.android:facebook-android-sdk:+'
    }
    
    repositories {
        jcenter()       // This is the default repo
        mavenCentral()  //  This is the Maven Central repo
    }
    
    dependencies {
    
        compile 'com.facebook.android:facebook-android-sdk:4.5.0' // Adjust the version accordingly
        // All your other dependencies.
    }
    
    ANDROID_BUILD_TARGET_SDK_VERSION=21<br>
    ANDROID_BUILD_MIN_SDK_VERSION=15<br>
    ANDROID_BUILD_TOOLS_VERSION=21.1.2<br>
    ANDROID_BUILD_SDK_VERSION=21<br>
    
    dependencies {
        compile 'com.facebook.android:facebook-android-sdk:4.4.0'
    }
    
      compile 'com.facebook.android:facebook-android-sdk:[4,5)'
    
    repositories {
            mavenCentral()
        }
    
     compile 'com.facebook.android:facebook-android-sdk:4.10.0'
    
     <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="your app id from facebook developer console"/>
    
         <activity android:name="com.facebook.FacebookActivity"
                   android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
                   android:theme="@android:style/Theme.Translucent.NoTitleBar"
                   android:label="@string/app_name" />
    
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context="com.demonuts.fblogin.MainActivity">
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#000"
            android:layout_marginLeft="10dp"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:id="@+id/text"/>
    
        <com.facebook.login.widget.LoginButton
            android:id="@+id/btnfb"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="10dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    
    </LinearLayout>
    
    import android.content.Intent;
    import android.content.pm.PackageInfo;
    import android.content.pm.PackageManager;
    import android.content.pm.Signature;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.util.Base64;
    import android.util.Log;
    import android.widget.TextView;
    
    import com.facebook.AccessToken;
    import com.facebook.AccessTokenTracker;
    import com.facebook.CallbackManager;
    import com.facebook.FacebookCallback;
    import com.facebook.FacebookException;
    import com.facebook.FacebookSdk;
    import com.facebook.GraphRequest;
    import com.facebook.GraphResponse;
    import com.facebook.Profile;
    import com.facebook.ProfileTracker;
    import com.facebook.login.LoginResult;
    import com.facebook.login.widget.LoginButton;
    
    import org.json.JSONException;
    import org.json.JSONObject;
    
    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    import java.util.Arrays;
    
    
    public class MainActivity extends AppCompatActivity {
    
        private TextView tvdetails;
        private CallbackManager callbackManager;
        private AccessTokenTracker accessTokenTracker;
        private ProfileTracker profileTracker;
        private LoginButton loginButton;
        private FacebookCallback<LoginResult> callback = new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                GraphRequest request = GraphRequest.newMeRequest(
                        loginResult.getAccessToken(),
                        new GraphRequest.GraphJSONObjectCallback() {
                            @Override
                            public void onCompleted(JSONObject object, GraphResponse response) {
                                Log.v("LoginActivity", response.toString());
    
                                // Application code
                                try {
                                    Log.d("tttttt",object.getString("id"));
                                    String birthday="";
                                    if(object.has("birthday")){
                                        birthday = object.getString("birthday"); // 01/31/1980 format
                                    }
    
                                    String fnm = object.getString("first_name");
                                    String lnm = object.getString("last_name");
                                    String mail = object.getString("email");
                                    String gender = object.getString("gender");
                                    String fid = object.getString("id");
                                    tvdetails.setText(fnm+" "+lnm+" \n"+mail+" \n"+gender+" \n"+fid+" \n"+birthday);
    
                                } catch (JSONException e) {
                                    e.printStackTrace();
                                }
    
                            }
                        });
                Bundle parameters = new Bundle();
                parameters.putString("fields", "id, first_name, last_name, email, gender, birthday, location");
                request.setParameters(parameters);
                request.executeAsync();
    
            }
    
            @Override
            public void onCancel() {
    
            }
    
            @Override
            public void onError(FacebookException error) {
    
            }
        };
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            FacebookSdk.sdkInitialize(this);
            setContentView(R.layout.activity_main);
    
            tvdetails = (TextView) findViewById(R.id.text);
    
            loginButton = (LoginButton) findViewById(R.id.btnfb);
    
            callbackManager = CallbackManager.Factory.create();
    
            accessTokenTracker= new AccessTokenTracker() {
                @Override
                protected void onCurrentAccessTokenChanged(AccessToken oldToken, AccessToken newToken) {
    
                }
            };
    
            profileTracker = new ProfileTracker() {
                @Override
                protected void onCurrentProfileChanged(Profile oldProfile, Profile newProfile) {
    
                }
            };
    
            accessTokenTracker.startTracking();
            profileTracker.startTracking();
            loginButton.setReadPermissions(Arrays.asList("public_profile", "email", "user_birthday", "user_friends"));
            loginButton.registerCallback(callbackManager, callback);
    
        }
    
        @Override
        public void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            callbackManager.onActivityResult(requestCode, resultCode, data);
    
        }
    
        @Override
        public void onStop() {
            super.onStop();
            accessTokenTracker.stopTracking();
            profileTracker.stopTracking();
        }
    
        @Override
        public void onResume() {
            super.onResume();
            Profile profile = Profile.getCurrentProfile();
    
        }
    
    }