# 3. Android平台导入说明

# (1) mainTemplate.gradle生成和说明

生成打包时必须的mainTemplate.gradle文件,生成路径如下图所示: (由于不同版本的Unity3d工具生成的gradle文件会不一样,需要开发者删除后重新生成自身Unity3d工具下的gradle文件,SDK中的仅供参考)

1

2

注意

针对生成后的mainTemplate.gradle需增加以下配置,见下方代码中1、2所示:

buildscript {
    repositories {
        google()
        jcenter()
    }

    dependencies {
          //不同的Unity3d工具生成的版本号有可能会不一样
        classpath 'com.android.tools.build:gradle:3.2.0'
**BUILD_SCRIPT_DEPS**}
}

....

//1、仅在Unity 2018版本及以下有效,2019版请查看后续章节说明
([rootProject] + (rootProject.subprojects as List)).each {
    ext {
        it.setProperty("android.useAndroidX", true)
        it.setProperty("android.enableJetifier", true)
    }
}

apply plugin: 'com.android.application'
**APPLY_PLUGINS**

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
**DEPS**}

android {
    compileSdkVersion **APIVERSION**
    buildToolsVersion '**BUILDTOOLS**'

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    defaultConfig {
        minSdkVersion **MINSDKVERSION**
        targetSdkVersion **TARGETSDKVERSION**
        applicationId '**APPLICATIONID**'
        ndk {
            abiFilters **ABIFILTERS**
        }
        versionCode **VERSIONCODE**
        versionName '**VERSIONNAME**'
        multiDexEnabled true //2、需要额外补充设置,是为了当代码行数超过64k的时候设置的
    }
    .....

}
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
44
45
46
47
48
49
50
51
52

# (2) 新版变更说明

新版SDK调整了广告平台SDK的依赖引入方式,请根据以下步骤进行操作:

  1. 确保已经生成mainTemplate.gradle文件

  2. 勾选 Patch mainTemplate.gradle 选项(Unity 菜单栏:AssetsExternal Dependency ManagerAndroid ResolverSettings3 4

  3. 开始解析依赖(Unity 菜单栏:AssetsExternal Dependency ManagerAndroid ResolverResolve),解析成功后将在mainTemplate.gradle文件中引入依赖

5

# (3) 使用Unity 2019版的工程配置

在项目的Assets/Plugins/Editor新增文件SupportAndroidXGradlePropertiesBuildProcessor.cs,内容如下:

using System.IO;
using UnityEditor.Android;
using UnityEngine;

public class SupportAndroidXGradlePropertiesBuildProcessor : IPostGenerateGradleAndroidProject
{
    public int callbackOrder
    {
        // 同种插件的优先级
        get { return 999; }
    }
    public void OnPostGenerateGradleAndroidProject(string path)
    {
        Debug.Log("Bulid path : " + path);
        string gradlePropertiesFile = path + "/../gradle.properties"; //2019版及其以上使用的路径
        if (File.Exists(gradlePropertiesFile))
        {
            File.Delete(gradlePropertiesFile);
        }
        StreamWriter writer = File.CreateText(gradlePropertiesFile);
        writer.WriteLine("org.gradle.jvmargs=-Xmx4096M");
        writer.WriteLine("android.useAndroidX=true");
        writer.WriteLine("android.enableJetifier=true");
        writer.Flush();
        writer.Close();
    }
}

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

# (4) 配置AndroidManifest.xml

Assets/Plugins/Android目录下创建文件命名为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="com.superapp.filemanager"
    android:versionCode="2"
    android:versionName="1.1" >

<uses-sdk
    android:minSdkVersion="16"
    android:targetSdkVersion="28"
    android:usesCleartextTraffic="true" />

<!--其中usesCleartextTraffic的配置必须设置,主要作用是让游戏里可以使用http请求(必须使用)-->
<application android:usesCleartextTraffic="true">

    <activity android:name="com.unity3d.player.UnityPlayerActivity" android:label="@string/app_name">
        <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" />
    </activity>

    <!--这个设置主要是为了适配9.0以上的机器(必须使用)-->
    <uses-library android:name="org.apache.http.legacy" android:required="false"/>
</application>

<!--必须要有的权限-->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

</manifest>
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

# (5) 与其他第三方Android SDK合并

(1)必须把第三方的jar包和aar包放在目录:/Assets/Plugins/Android/libs

(2)如果第三方sdk有资源,则把资源的文件夹放在目录:/Assets/Plugins/Android/

(3)如果第三方存在AndroidManifest文件,则需要和/Assets/Plugins/Android/AndroidManifest.xml文件内容合并

# (6) 如何选择Android的部分AAR或者Jar不进行打包

(1)选择可展示Unity3d中的展示文件的目录

6

(2)全选SDK文件夹,在隔壁一列全选所有的aar包和jar包,然后在最右侧会出现平台的选择

7

# (7) 把Android平台的打包选择去掉,然后选择Apply,就完成剔除打包的操作

8