1.使用NetBean下载安卓开发sdk,部署开发环境。即是要在NetBean的IDE的插件管理器中下载安卓开发插件。这个是安卓开发的必须要的。

 

2.使用NetBean打开下载的MSDK中的MSDKLibrary项目。构建项目。构建成功之后在bin目录中出现对应的apk文件。我们需要接入unity3d,所以apk不是我们需要的。

我们将unity3d安装目录的Editor\Data\PlaybackEngines\androidplayer\bin 之下可以发现classes.jar文件。我们把它引入MSDKLibrary项目中。

我们需要创建一个继承于UnityPlayerActivity的类,并在onCreate方法中,初始化MSDK。

也需要提供两个方法,Pay以及Login,方便在unity3d游戏中调用。

public void
        super.onCreate(savedInstanceState);
用代码, 游戏需自行检测自身是否重复, 检测到吃重复的Activity则要把自己finish掉
        if (WGPlatform.IsDifferentActivity(this)) {
            Logger.d("Warning!Reduplicate game activity was detected.Activity will finish immediately.");
            this.finish();
            return;
        }
        
        baseInfo = new MsdkBaseInfo();
游戏必须使用自己的QQ AppId联调
        baseInfo.qqAppId = "100703379";
        baseInfo.qqAppKey = "4578e54fb3a1bd18e0681bc1c734514e";
        baseInfo.wxAppId = "wxcde873f99466f74a";
        baseInfo.wxAppKey = "bc0994f30c0a12a9908e353cf05d4dea";
订阅型测试用offerId
        baseInfo.offerId = "100703379"; 
        
        WGPlatform.Initialized(this, baseInfo);
        WGPlatform.handleCallback(getIntent());
 
        WGPlatform.WGSetObserver(new MsdkCallback());// 
 
要加载必要的动态库
 
游戏需要加载此动态库, 数据上报用
        //System.loadLibrary("NativeRQD"); 
游戏不需要这个, 这是MSDKSample自用的
        //System.loadLibrary("WeGameSample");
 
}
 
public void
        WGPlatform.WGLogin(ePlatform_QQ);
    }
    
public void
    {
        Intent intent = new Intent(this,AndroidPaySample.class);   
        this.startActivity(intent);   
    }

 

 

在AndroidManifest.xml文件中,增加需要的Activity的配置。

我们主要需要自己新增加的主Activity以及MSDK中的登录和支付Acitvity。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.yywlkj"
    android:versionCode="1"
    android:versionName="1.0" >
 
    <application android:label="@string/app_name" android:icon="@drawable/ic_launcher">
        <activity android:name="com.****.****"
                  android:label="@string/app_name"
                  android:configChanges="orientation|screenSize|keyboardHidden"
                  android:screenOrientation="landscape">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
星号为主类的路径 -->
 
        <activity
          android:name="com.tencent.tauth.AuthActivity"
          android:launchMode="singleTask"
          android:noHistory="true" >
          <intent-filter>
              <action android:name="android.intent.action.VIEW" />
              <category android:name="android.intent.category.DEFAULT" />
              <category android:name="android.intent.category.BROWSABLE" />
              <data android:scheme="tencent100703379" />
          </intent-filter>
      </activity>
      <activity
          android:name="com.tencent.connect.common.AssistActivity"
          android:configChanges="orientation|screenSize|keyboardHidden"
          android:screenOrientation="portrait"
          android:theme="@android:style/Theme.Translucent.NoTitleBar" />
      <activity   
            android:name="com.yywlkj.AndroidPaySample"   
            android:theme="@android:style/Theme.NoTitleBar.Fullscreen"   
            >   
        </activity>  
接入 QQ接入配置 END -->
  
   </application>
接入必须权限模块 START -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- TODO SDK接入 必须权限模块 END -->
 
</manifest>


 

 

3.构建项目

成功构建之后,在bin目录有对应的apk文件。也会有class目录,我们需要把class目录中的所有类打包。

使用jdk安装目录中的jar程序,打包classes目录中的所有文件

jar -cvf class.jar *

4.在unity3d项目中的插件目录中,新建Android目录,并将MSDK项目中的Res,Libs目录的所有文件拷贝到这个新建目录中,并创建bin目录,将打包好的class.jar拷贝进去。(注意:不需要拷贝之前从Unity安装目录引入的classes.jar文件。

 

Unity如何导入stl Unity如何导入DTM_jar

 

5.从unity3d游戏中,可以调用java的Pay以及Login方法,打开MSDK的支付以及登录界面。具体可以参考雨松momo的博客Unity3D研究院之打开Activity与调用JAVA代码传递参数

 

AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
        jo.Call("Login");