QQ官方SDK下载
地址:http://wiki.open.qq.com/wiki/mobile/SDK%E4%B8%8B%E8%BD%BD版本为:Android_SDK_V3.3.3
Unity5.3.5f1以上版本 64位
eclipse下载
地址:https://www.eclipse.org/downloads/ Version: Oxygen.3a Release (4.7.3a) 64位
*ADT下载
地址:http://tools.android-studio.org/index.php/adt-bundle-plugin 我这里下载的是ADT-23.0.6(64位) 压缩包下载后不要解压
android SDK
地址:http://tools.android-studio.org/index.php/sdk android SDK下载后,还需要 一系列的配置下载才能使用
JDK下载
地址:http://jdk.android-studio.org/ 版本最好使用1.8以上 1.9以下 同样是64位
eclipse的安装以及SDK,JDk环境的配置这里就不多说了,ADT下载后直接点击Help->Install New Software…
取消左下角updated勾选,点击Add,弹出Add Repository界面,然后点击Archive选择adt文件,之后随意取个名字
一路点击Next完成安装。
接下来New Project新建Android Application project工程
Application Name和Project Name可以随便起名字。但是Package Name(包名)要跟Unity里面写的一样。下面SDK的选择最好也要跟Unity一样。一直点击Next,最后点击Finish.
Minimum Required SDK最好选择android 4.x,不然Unity里面打包可能会报错
然后将在开放平台下载的android SDK里面的open_sdk_r6008_lite.jar,以及opensdk_lite+demo\connect-sdk-Demo\sample\libs里面的android-support-v4.jar,放入android项目中的libs文件夹中(没有libs则新建libs文件夹吧),然后分别右击,选择Build Path->Add to Build Path。
因为需要跟Unity交互,我们需要Unity的jar文件,在Unity安装目录下找到它,放入android项目中的libs文件夹中,然后右击它,选择Build Path->Add to Build Path。
导入完成后如下图目录所示:
现在我们开始配置AndroidManifest.xml文件,里面内容都是参考QQ开放平台里面的案例,可以对照着看看。
//这里填写的是QQ开发平台上自己申请的APPID。
接着开始在src文件夹下的MainActivity.java中添加供Unity调用的接口(可以参照下载的SDK中的《Andriod_SDK_V3.3.3接口调用说明》来添加自己想要调用的接口)
package com.Tecent.TecentYule;
import org.json.JSONObject;
import com.tencent.connect.common.Constants;
import com.tencent.tauth.IUiListener;
import com.tencent.tauth.Tencent;
import com.tencent.tauth.UiError;
import com.unity3d.player.UnityPlayerActivity;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends UnityPlayerActivity {
public static Tencent mTencent;
public SharedPreferences sharedPrefrences;
public Editor editor;
public Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
}
//登录方法
public void LoginAndSend()
{//定义一个对象,里面的第一个参数是自己在QQ开放平台上申请的APPID。
mTencent = Tencent.createInstance("100371282",this.getApplicationContext());
if (!mTencent.isSessionValid())
{
mTencent.login(this, "all", loginListener);
}
}
IUiListener loginListener = new BaseUiListener() {
@Override
protected void doComplete(JSONObject values) {
initOpenidAndToken(values);
}
};
public static void initOpenidAndToken(JSONObject jsonObject) {
try {
String token = jsonObject.getString(Constants.PARAM_ACCESS_TOKEN);
String expires = jsonObject.getString(Constants.PARAM_EXPIRES_IN);
String openId = jsonObject.getString(Constants.PARAM_OPEN_ID);
if (!TextUtils.isEmpty(token) && !TextUtils.isEmpty(expires)
&& !TextUtils.isEmpty(openId)) {
mTencent.setAccessToken(token, expires);
mTencent.setOpenId(openId);
}
} catch(Exception e) {
}
}
@Override //这段代码非常重要,不加的话无法获取回调
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == Constants.REQUEST_LOGIN ||
requestCode == Constants.REQUEST_APPBAR) {
Tencent.onActivityResultData(requestCode,resultCode,data,loginListener);
}
super.onActivityResult(requestCode, resultCode, data);
}
private class BaseUiListener implements IUiListener {
@Override
public void onComplete(Object response) {
if (null == response) {
return;
}
JSONObject jsonResponse = (JSONObject) response;
if (null != jsonResponse && jsonResponse.length() == 0) {
return;
}
doComplete((JSONObject) response);
}
protected void doComplete(JSONObject values) {
}
@Override
public void onError(UiError e) {
}
@Override
public void onCancel() {
}
}
}
接着我们要从eclipse中导出jar文件。选择整个项目,右击点击,在目录中选择Export,弹出选框后选择java->JAR file.点击继续
清除所有选项,只选择src,libs,res三个文件夹,同时libs文件中classes要取消掉,不然在unity里面打包会报错。在下面选择打包地址和名字,然后点击Finsih,获得一个test.jar文件。
最后在unity里面创建一个安卓项目。
在Assests 中新建Floder命名为“Plugins”,在“Plugins”文件夹中新建Floder命名为“Android” ,在“Android”文件夹新建Floder命名为”bin”,并将刚刚导出的test.ja文件和open_sdk_r6008_lite.jar文件放入此文件夹中。再将Eclipse 的Android项目中复制res文件夹和AndroidManifest.xml一并放入“Android”文件夹中。
在unity中创建一个脚本,并挂在摄像机上。
using UnityEngine;
using System.Collections;
public class TestLogin : MonoBehaviour {
void Update () {
if (Input.GetMouseButtonDown(0))
{
AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject jo = jc.GetStatic("currentActivity");
jo.Call("LoginAndSend");
}
}
}
完成后打包测试,效果图如图: