Unity离线/内网Gradle打包Apk

一切源于内网外隔离。Unity版本为2018.4.17
1.下载Android SDK和NDK。
网上一大堆攻略烂大街,不赘述。
我是从Android官网下载 Android Studio3.4版本,然后通过里面的SDK Manager下载SDK。需要先把Command line tools only下载下来,解压出来就是1.0版本的tools文件夹,放到SDK文件夹下面。然后再用SDK Manager升级到26.1.1以上。
Unity离线/内网Gradle打包Apk_第1张图片
从Android官网下载 NDK-r16b。
把它们传到内网,找个位置放着。
Unity点击菜单Editor->Preferences->External Tools,把SDK和NDK路径填好。这里写着NDK要求r16b的版本,其他版本打不了包。
2.下载Android Gradle Plugin
Android官网下载离线包 找到Offline components,把Android Gradle Plugin和Google Maven dependencies下载下来,并按照文档 来配置。
Unity离线/内网Gradle打包Apk_第2张图片
Windows上%USER_HOME%就是C:\Users\Administrator。
Unity离线/内网Gradle打包Apk_第3张图片

def reposDir = new File(System.properties['user.home'], ".android/manual-offline-m2")
    def repos = new ArrayList()
    reposDir.eachDir {repos.add(it) }
    repos.sort()

    allprojects {
      buildscript {
        repositories {
          for (repo in repos) {
            maven {
              name = "injected_offline_${repo.name}"
              url = repo.toURI().toURL()
            }
          }
        }
      }
      repositories {
        for (repo in repos) {
          maven {
            name = "injected_offline_${repo.name}"
            url = repo.toURI().toURL()
          }
        }
      }
    }
    

3.Unity Gradle打apk
File->Build Settings,切换到Android平台,Build System选Gradle。点击Player Settings,设置Publishing Settings相关内容。
Unity离线/内网Gradle打包Apk_第4张图片
Keystore是必须的,自己创建一个新的就行了,网上一堆攻略,不再赘述。
勾了这个Custom Gradle Template之后,Unity会生成一个mainTemplate.gradle放在下面的路径。
用sublime text之类的编辑器打开它,把那几个repositories注释掉,不然它就会去下载。
Unity离线/内网Gradle打包Apk_第5张图片
第11行的android gradle plugin就是要3.4.0的,因为它对应着gradle 5.1.1,我们刚才下载的google maven dependencies里面已经包含了。但是官网下载的android gradle plugin是最新版的,所以缺失了一些旧版的东西。
这时候我们先Build一下,会发现报Gradle Build Failed。看里面的报错,然后去mvnrepository.com把缺失的包下载下来传到内网,放到对应的目录下就行了。
在这里插入图片描述
比如我这里缺了一个guava-26.0-jre.jar,gradle找了4个路径都没找到,因为我的android gradle plugin太新了,里面只有27.0.1-jre,于是搜索com.google.guava
Unity离线/内网Gradle打包Apk_第6张图片
从里面找到26.0版本的jar下载下来就行了
Unity离线/内网Gradle打包Apk_第7张图片
其他缺失的文件也是这样操作。

你可能感兴趣的:(Unity,unity,gradle,android,apk)