Manifest准备

我们需要先在Unity中打一个Android Gradle包,再在输出的文件夹中找到AndroidManifest.xml,我们使用这个Manifest替换Android Studio工程中生成的Manifest。

首先在Unity中打开Build Settings,勾选Export Project,点击Export并指定好输出的路径。然后再在如下的路径找到AndroidManifest.xml

1
2
E:\UnityBuilds\ResloadPrg_Gradle\launcher\src\main
E:\UnityBuilds\ResloadPrg_Gradle\unityLibrary\src\main

其中launcher里面的Manifest属于入口,我们并不需要修改。主要修改unityLibrary的Manifest

打开这个AndroidManifest.xml,将uses-permission提到前面,并修改activity的入口。添加QQ的activity

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.unity3d.player" xmlns:tools="http://schemas.android.com/tools">
<!--将用户权限提到前面,安卓的存储、相机等权限需要用户授权动态获取-->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application android:extractNativeLibs="true">
<!--将android:name="com.unity3d.player.UnityPlayerActivity"改为android:name="com.unity3d.player.MainActivity"-->
<activity android:name="com.unity3d.player.MainActivity" android:theme="@style/UnityThemeSelector" android:screenOrientation="reverseLandscape" android:launchMode="singleTask" android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale|layoutDirection|density" android:resizeableActivity="false" android:hardwareAccelerated="false">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data android:name="unityplayer.UnityActivity" android:value="true" />
<meta-data android:name="android.notch_support" android:value="true" />
</activity>
<!--下面是QQ需要添加的activity-->
<activity android:name="com.tencent.tauth.AuthActivity" android:noHistory="true" android:launchMode="singleTask" >
<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="tencent你的AppId" /><!--添加自己的APPID,保留前面的tencent-->
</intent-filter>
</activity>
<activity
android:name="com.tencent.connect.common.AssistActivity"
android:configChanges="orientation|keyboardHidden"
android:screenOrientation="behind"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />

<meta-data android:name="unity.splash-mode" android:value="0" />
<meta-data android:name="unity.splash-enable" android:value="True" />
<meta-data android:name="unity.launch-fullscreen" android:value="True" />
<meta-data android:name="unity.allow-resizable-window" android:value="False" />
<meta-data android:name="notch.config" android:value="portrait|landscape" />
<meta-data android:name="unity.auto-report-fully-drawn" android:value="true" />
</application>
<uses-feature android:glEsVersion="0x00030000" />
<uses-feature android:name="android.hardware.vulkan.version" android:required="false" />
<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
<uses-feature android:name="android.hardware.touchscreen.multitouch" android:required="false" />
<uses-feature android:name="android.hardware.touchscreen.multitouch.distinct" android:required="false" />
</manifest>

修改Unity配置

打开Unity,进入Project Settings——Player,选择安卓选项卡——Publish Settings——勾选“Custom Main Manifest”

这样我们的Assets——Plugins——Android文件夹内就出现了一个AndroidManifest.xml文件,我们将上面的Manifest文件拷贝过来替换掉这个文件。