经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » 游戏设计 » 查看文章
Unity接入九游SDK学习与踩坑
来源:cnblogs  作者:你这只母牛  时间:2019/7/8 8:33:49  对本文有异议

学习之路漫漫,应修之期远兮。持之以恒,方得始终。

 这几日接入九游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文件

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:tools="http://schemas.android.com/tools"
  4. package="com.chen.ucsdkdemo"
  5. android:versionCode="1"
  6. android:versionName="1.0" >
  7.  
  8.  
  9. <supports-screens
  10. android:anyDensity="true"
  11. android:largeScreens="true"
  12. android:normalScreens="true"
  13. android:resizeable="true"
  14. android:smallScreens="true" />
  15.  
  16. <uses-permission android:name="android.permission.INTERNET" />
  17. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  18. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  19. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  20. <uses-permission android:name="android.permission.READ_PHONE_STATE" />
  21. <uses-permission android:name="android.permission.SEND_SMS" />
  22. <uses-permission android:name="android.permission.GET_TASKS" />
  23. <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
  24. <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
  25. <uses-permission android:name="android.permission.USE_CREDENTIALS" />
  26. <uses-permission android:name="android.permission.GET_ACCOUNTS" />
  27. <uses-permission android:name="android.permission.RECORD_AUDIO" />
  28. <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
  29. <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  30. <!-- 8x新增加 -->
  31.  
  32.  
  33. <application
  34. android:label="@string/app_name" >
  35.  
  36. <activity
  37. android:name="com.chen.ucsdkdemo.MainActivity"
  38. android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale"
  39. android:label="@string/app_name"
  40. android:launchMode="singleTask"
  41. android:screenOrientation="fullSensor">
  42. <intent-filter>
  43. <action android:name="android.intent.action.MAIN" />
  44.  
  45. <category android:name="android.intent.category.LAUNCHER" />
  46. <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
  47. </intent-filter>
  48. <meta-data
  49. android:name="unityplayer.UnityActivity"
  50. android:value="true" />
  51. </activity>
  52.  
  53.  
  54. <activity
  55. android:name="cn.gundam.sdk.shell.activity.ProxyActivity"
  56. android:configChanges="keyboardHidden|orientation|screenSize"
  57. android:label="@string/app_name"
  58. android:theme="@android:style/Theme.Translucent.NoTitleBar"
  59. android:windowSoftInputMode="adjustResize" >
  60. <intent-filter>
  61. <action android:name="cn.uc.gamesdk.sdkweb" />
  62.  
  63. <category android:name="android.intent.category.DEFAULT" />
  64. </intent-filter>
  65. </activity>
  66. <!--
  67. android:taskAffinity 填上游戏的包名,如游戏包名为cn.uc.gamesdk.demo,
  68. 则下面填 cn.uc.gamesdk.demo.diff
  69. -->
  70. <!--
  71. data android:scheme 里填上”ng+当前游戏的gameId”,如游戏ID是123456,则填
  72. 上ng123456
  73. -->
  74. <activity
  75. android:name="cn.uc.gamesdk.activity.PullupActivity"
  76. android:excludeFromRecents="true"
  77. android:exported="true"
  78. android:label="PullupActivity"
  79. android:launchMode="singleTop"
  80. android:taskAffinity="com.chen.ucsdkdemo.diff"
  81. android:theme="@android:style/Theme.Translucent"
  82. tools:node="replace" >
  83. <intent-filter>
  84. <action android:name="android.intent.action.VIEW" />
  85.  
  86. <category android:name="android.intent.category.DEFAULT" />
  87. <category android:name="android.intent.category.BROWSABLE" />
  88.  
  89. <data android:scheme="ng119474" />
  90. </intent-filter>
  91. </activity>
  92. <!-- alipay sdk begin -->
  93. <activity
  94. android:name="com.alipay.sdk.app.H5PayActivity"
  95. android:configChanges="orientation|keyboardHidden|navigation|screenSize"
  96. android:exported="false"
  97. android:screenOrientation="behind" >
  98. </activity>
  99. <activity
  100. android:name="com.alipay.sdk.auth.AuthActivity"
  101. android:configChanges="orientation|keyboardHidden|navigation|screenSize"
  102. android:exported="false"
  103. android:screenOrientation="behind" >
  104. </activity>
  105. <activity
  106. android:name="com.alipay.sdk.app.H5AuthActivity"
  107. android:configChanges="orientation|keyboardHidden|navigation|screenSize"
  108. android:exported="false"
  109. android:screenOrientation="behind" >
  110. </activity>
  111. <!-- alipay sdk end -->
  112. <!-- sdk service 1.1.3新增 -->
  113. <service
  114. android:name="cn.gundam.sdk.shell.service.ProxyService"
  115. android:exported="true"
  116. android:process=":bgservice" />
  117. <!-- sdk service end -->
  118. </application>
  119.  
  120. </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的接入就完成了  !

 

原文链接:http://www.cnblogs.com/MuniuTian/p/11133341.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号