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 onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // MSDKSample用代码, 游戏需自行检测自身是否重复, 检测到吃重复的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());//
// TODO GAME 要加载必要的动态库
// 游戏需要加载此动态库, 数据上报用 //System.loadLibrary("NativeRQD"); // 游戏不需要这个, 这是MSDKSample自用的 //System.loadLibrary("WeGameSample");
}
public void Login() { WGPlatform.WGLogin(ePlatform_QQ); }
public void Pay() { 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> <!-- TODO SDK接入 QQ接入配置 END -->
</application> <!-- TODO SDK接入必须权限模块 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文件。
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"); |