Unity接入九游SDK
学习之路漫漫,应修之期远兮。持之以恒,方得始终。
这几日接入九游SDK,于浑浑噩噩中成长。
下面是步骤:
一:下载九游SDK
二:打开Android Studio新建一个工程,并且新建一个AndroidLibrary的Moudle,这里的命名随意。包名设置成你想设的名字。
三:
1:把Unity中的class.jar文件放入Android Studio项目下的libs文件夹。
2:找到九游sdk下的aar文件解压,把里面的class.jar改名为ucgamesdk.jar,连同九游sdk依赖库下的alipaySdk-20160825.jar一同放入Android Studio下的libs文件夹。
3:并且复制aar包里的Asserts和res文件夹放入工程中
四:复制代码到包下,新建一个你自己的启动Activity或者直接复制。我这里复制的是Demo中的代码。复制完以后会有报错,按照说明修改。把全部文件修改的没有报错。
五:修改AndroidManifest文件
登录后复制
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.chen.ucsdkdemo"
android:versionCode="1"
android:versionName="1.0" >
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:resizeable="true"
android:smallScreens="true" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- 8x新增加 -->
<application
android:label="@string/app_name" >
<activity
android:name="com.chen.ucsdkdemo.MainActivity"
android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale"
android:label="@string/app_name"
android:launchMode="singleTask"
android:screenOrientation="fullSensor">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
</intent-filter>
<meta-data
android:name="unityplayer.UnityActivity"
android:value="true" />
</activity>
<activity
android:name="cn.gundam.sdk.shell.activity.ProxyActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:label="@string/app_name"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:windowSoftInputMode="adjustResize" >
<intent-filter>
<action android:name="cn.uc.gamesdk.sdkweb" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<!--
android:taskAffinity 填上游戏的包名,如游戏包名为cn.uc.gamesdk.demo,
则下面填 cn.uc.gamesdk.demo.diff
-->
<!--
data android:scheme 里填上”ng+当前游戏的gameId”,如游戏ID是123456,则填
上ng123456
-->
<activity
android:name="cn.uc.gamesdk.activity.PullupActivity"
android:excludeFromRecents="true"
android:exported="true"
android:label="PullupActivity"
android:launchMode="singleTop"
android:taskAffinity="com.chen.ucsdkdemo.diff"
android:theme="@android:style/Theme.Translucent"
tools:node="replace" >
<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="ng119474" />
</intent-filter>
</activity>
<!-- alipay sdk begin -->
<activity
android:name="com.alipay.sdk.app.H5PayActivity"
android:configChanges="orientation|keyboardHidden|navigation|screenSize"
android:exported="false"
android:screenOrientation="behind" >
</activity>
<activity
android:name="com.alipay.sdk.auth.AuthActivity"
android:configChanges="orientation|keyboardHidden|navigation|screenSize"
android:exported="false"
android:screenOrientation="behind" >
</activity>
<activity
android:name="com.alipay.sdk.app.H5AuthActivity"
android:configChanges="orientation|keyboardHidden|navigation|screenSize"
android:exported="false"
android:screenOrientation="behind" >
</activity>
<!-- alipay sdk end -->
<!-- sdk service 1.1.3新增 -->
<service
android:name="cn.gundam.sdk.shell.service.ProxyService"
android:exported="true"
android:process=":bgservice" />
<!-- sdk service end -->
</application>
</manifest>
六:Build一下,打出aar包,解压aar包,把其中的主目录下的class.jar文件拷贝到libs文件夹下 删除原libs文件夹下的class.jar文件(原libs下的class.jar文件为Unity的jar包,不删除的话会打包失败,报重复jar错误。)并且把AndroidManifest文件、libs文件夹、res文件夹和Assets文件夹一并复制到Unity中的Plugins/Android文件夹下
文件目录如下:
七:复制九游sdkdemo中的c#代码到Unity,并且修改其中关于代码调用部分的包名,改为你自己的包名
八:把代码挂在MainCamera上,打包测试,搞定。
接入过程中有几个坑这里记录一下:
1:报错日志:
ERROR: Unable to find method 'org.gradle.api.tasks.compile.CompileOptions.setBootClasspath(Ljava/lang/String;)V'.
Possible causes for this unexpected error include:
原因:应该是gradle版本不对的原因
解决:build.gradle里面classpath 'com.android.tools.build:gradle:3.0.1 改为了3.4.1或者其他如3.3.1 就解决了 。
2:报错日志:
CommandInvokationFailure: Unable to convert classes into dex format.
/Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/bin/java -Xmx2048M -Dcom.android.sdkmanager.toolsdir="/Users/chentianliang/Documents/ResourceFile/Android/AndroidSDK/android-sdk-macosx/tools" -Dfile.encoding=UTF8 -jar "/Applications/Unity/PlaybackEngines/AndroidPlayer/Tools/sdktools.jar" -
原因:包重复
解决:删除aar包中libs下原Unity的jar包(class.jar)。
3: 报错日志:
Deprecated Gradle features were used in this build, making it incompatible with Gradle 6.0.
原因:这个好像是因为Gradle版本太高了
解决:Android Studio -->File-->Project Structure -->Android Gradle Plugin Version改为 3.3.1 Gradle Version 改为4.10.1 点击ok 搞定。
4:游戏安装之后打不开,闪崩,连上日志发现两个问题:
1:AndroidManifest.xml里面的permission 有所报错。
2:包名调用错误,复制过来的代码要修改成自己的包名。
5:游戏包安装不上,安装上以后立即被删除:
经过排查,发现是AndroidManifest.xml里面新增的8.x部分的permission 有问题,删掉就好了
这个地方权限问题,我也弄不清具体为什么,等待以后慢慢排查。
这里整个九游sdk的接入就完成了 !
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删