Unity本地接入wechat-sdk-android-6.8.

2021-12-03  本文已影响0人  陈迪斯

网上很多教程讲Unity接入微信支付的方法多是接入以前的微信支付SDK,但是因为已微信官方已经改用gradle形式,将SDK发布到 Maven Central。如果直接在在build.gradle文件中,根据官方提示添加如下依赖:

dependencies {

    api 'com.tencent.mm.opensdk:wechat-sdk-android:+'

}

虽然Android Studio里可以正常编译,但是Make Project后导出的aar包不含微信SDK。

所以,我的解决方法还是采用把arr包放入Android工程Libs本地的的方式。

想办法找到了wechat-sdk-android-6.8.0.aar,然后粘贴到App/Libs文件夹。因为网上很多教程都是讲导入的是jar格式的微信SDK,现在我们导入的是aar格式,App的Gradle文件还要稍微修改一下——

apply plugin: 'com.android.library'

//默认以arr形式输出

android {

    compileSdkVersion 29

    defaultConfig {

        minSdkVersion 16

        targetSdkVersion 29

        versionCode 1

        versionName "1.0"

//        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

    }

    buildTypes {

        release {

            minifyEnabled false

            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'

        }

    }

}

repositories{

    flatDir{

        dirs 'libs'

    }

}

dependencies {

    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'androidx.appcompat:appcompat:1.0.2'

    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'

    testImplementation 'junit:junit:4.12'

    androidTestImplementation 'androidx.test.ext:junit:1.1.0'

    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'

    implementation files('libs\\classes.jar')

    implementation (name: 'wechat-sdk-android-6.8.0', ext: 'aar')

}

Make Project导出aar包后,用压缩软件打开里面的AndroidManifest.xml,修改如下——

<?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="你的包名"

    android:versionCode="1"

    android:versionName="1.0" >

    <uses-sdk

        android:minSdkVersion="15"

        android:targetSdkVersion="29" />

    <!-- 申请网络访问权限 -->

    <uses-permission android:name="android.permission.INTERNET" />

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <application

        android:allowBackup="true"

        android:icon="@drawable/app_icon"

        android:label="@string/app_name"

        android:supportsRtl="true"

        android:theme="@style/UnityThemeSelector"

        tools:replace="android:icon, android:theme"        >

        <activity

            android:name="你的包名.MainActivity"

            android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen"

            android:exported="true"

            android:launchMode="singleTask"

            android:noHistory="false" >

            <intent-filter>

                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

        </activity>

        <activity

            android:name="你的包名.wxapi.WXPayEntryActivity"

            android:exported="true"

            android:launchMode="singleTop" />

        <activity

            android:name="你的包名.wxapi.WXEntryActivity"

            android:exported="true"

            android:launchMode="singleTop" />

    </application>

</manifest>

注意,如果最后发生微信支付可以调用,但支付回调和分享都不能调用的情况,很有可能是activity声明里的“.wxapi”漏了。

最后,把Android Studio生成并经过处理的aar包和wechat-sdk-android-6.8.0.aar一起导入到Unity工程中,就可以正常调用微信开放功能了。

具体接入微信支付的教程,大家可以自己网上找资料,有很多,这里我就不详细叙述了。

上一篇下一篇

猜你喜欢

热点阅读