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的接入就完成了  !

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM