Android Studioを使用したAndroid向けFacebook SDK を使用しています。アプリケーションを実行すると、以下の警告が表示されます。
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
注意
Android Studio 0.5.5以降およびそれ以降のバージョンのFacebook SDKでは、このプロセスは、以下に記載されているもの(両方の以前のバージョン用に作成されたもの)よりもはるかに簡単です。最新版を実行している場合、必要なことはこれだけです:
Ctrl + Shift + Alt + S
でプロジェクト構造を開き、[依存関係]タブを選択します。 +
ボタンをクリックして、「モジュールの依存関係」を選択します。新しいウィンドウでポップアップを選択します:facebook.
古いAndroid Studioおよび古いFacebook SDKの手順
これはAndroid Studio 0.5.4以前に適用され、Facebookが配布用のGradleビルドファイルを提供する前のFacebook SDKのバージョンに最も意味があります。どのバージョンのSDKでその変更を行ったかはわかりません。
https://developers.facebook.com/docs/getting-started/facebook-sdk-for-Android-using-Android-studio/3.0の「Android StudioプロジェクトにSDKをインポートする」にあるFacebookの手順/ Gradleベースのプロジェクトではページが間違っています(つまり、プロジェクトはAndroid Studioの新しいプロジェクトウィザードを使用してビルドされた、および/またはアプリケーションモジュール用のbuild.gradle
ファイルを持っています)。代わりに次の指示に従ってください。
プロジェクトのメインディレクトリの下にlibraries
フォルダーを作成します。たとえば、プロジェクトがHelloWorldProjectの場合、HelloWorldProject/libraries
フォルダーを作成します。
ここで、facebook
ディレクトリ全体をSDKインストールから作成したlibraries
フォルダーにコピーします。
libs
ディレクトリ内のfacebook
フォルダーを削除します。必要に応じて、project.properties
、build.xml
、.classpath
、および.project
を削除します。ファイルも。それらは必要ありません。
facebook
ディレクトリに、次の内容のbuild.gradle
ファイルを作成します。
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プラグインの新しいバージョンが必要であるというエラーが表示された場合は、編集する必要のある行です。
確認してください Androidサポートライブラリ SDKマネージャーにインストールされます。
アプリケーションのメインディレクトリにあるsettings.gradle
ファイルを編集して、次の行を追加します。
include ':libraries:facebook'
プロジェクトが既にAndroid Studioで開いている場合は、ツールバーの[プロジェクトをGradleファイルと同期]ボタンをクリックします。完了すると、facebook
モジュールが表示されます。
Facebookは実際にSDKをMaven Centralリポジトリに追加しました。 Mavenリポジトリのインスタンスを使用してプロジェクトを構成するには、2つのことを行う必要があります。
プロジェクトトップレベルbuild.gradleファイルで、Maven Centralリポジトリを追加します。私のものは次のようになります。
repositories {
jcenter() // This is the default repo
mavenCentral() // This is the Maven Central repo
}
app-level build.gradeファイルで、Facebook SDK依存関係を追加します。
dependencies {
compile 'com.facebook.Android:facebook-Android-sdk:4.5.0' // Adjust the version accordingly
// All your other dependencies.
}
特定のFacebook SDKバージョンも調整できます。 Mavenリポジトリで利用可能なバージョンのリストについては、 このリンクをクリックしてください
Facebookはmaven centralでSDKを公開しています:
追加するだけです:
repositories {
jcenter() // IntelliJ main repo.
}
dependencies {
compile 'com.facebook.Android:facebook-Android-sdk:+'
}
スコットバルタのソリューションは私のために働きましたが、メインプロジェクト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を簡単に組み込むことができます。
git submodule add https://github.com/facebook/facebook-Android-sdk.git
include ':facebook-Android-sdk:facebook'
compile project(':facebook-Android-sdk:facebook')
FacebookアプリSDK 4.10.0を使用して、Androidアプリにログインを統合しました。私が従ったチュートリアルは次のとおりです。
Facebbokから名、姓、メール、性別、FacebookのID、誕生日を取得できます。
上記のチュートリアルでは、ビデオを通じてFacebook開発者コンソールでアプリを作成する方法も説明しています。
build.gradle(Module:app)
ファイルに以下を追加します。
repositories {
mavenCentral()
}
そして
compile 'com.facebook.Android:facebook-Android-sdk:4.10.0'
androidManifest.xmlファイルに以下を追加します。
<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" />
activity_main.xmlファイルに次を追加します。
<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>
最後に、MainActivity.Javaファイルに以下を追加します。
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();
}
}
Facebook Android SDKをSonatypeリポジトリにデプロイしました。
このライブラリをGradle依存関係として含めることができます。
repositories {
maven {
url 'https://oss.sonatype.org/content/groups/public'
}
}
dependencies {
compile 'com.shamanland:facebook-Android-sdk:3.15.0-SNAPSHOT'
}
元の投稿 ここ 。
私は修正しました
「プロジェクト「:facebook」でプロパティ「Android_BUILD_SDK_VERSION」が見つかりませんでした。」
build.gradle
ファイルにエラーがあります。gradle.properties
に値を追加します。
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>
Android Studio 0.8.6を使用している人は次のことができます。
Facebook-Android-sdk-xxxディレクトリの下のONLY facebook dirをapp /とともにプロジェクトにコピーします
モジュールとしてFacebookを表示しているAndroid Studioが表示されます
provided files('./libs/bolts.jar')
compileSdkVersion 20
またはアプリで定義した他のバージョンbuildToolsVersion '20.0.0'
minSdkVersion 14
targetSdkVersion 20
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']
}
}
}
Gradleファイルを再同期すると、正常に機能するはずです!
* Facebook SDKのGradleリポジトリ。
dependencies {
compile 'com.facebook.Android:facebook-Android-sdk:4.4.0'
}
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')
}
}
次に、include ':libs:facebook'
と等しい<project_directory>/libs/facebook
(ライブラリへのパス)をsettings.gradle
に追加します。
androidスタジオでfacebook sdkを使用するのは非常に簡単です、あなたのgradleに次の行を追加するだけです
compile 'com.facebook.Android:facebook-Android-sdk:[4,5)'
androidサポートリポジトリが更新されていることを確認してください。更新されていない場合は、スタンドアロンのSDKマネージャーを使用して更新してください。