转至:https://blog.csdn.net/ls9512/article/details/80690910
公司有一个海外项目需要接入 Admob
并聚合多家广告联盟,同时需要接入 Facekbook
相关服务。由于 Google Play Service
的基础库比较多,加入其它广告SDK后,遇到了 64K问题
,安卓代码中方法数量超过了 65536
个,导致 Unity 默认的打包方式 Internal
无法打包成功。
为了解决 64K问题
,必须改用 Gradle
方式打包。经过测试,选择 Export Project
导出 Gradle Project
并用 Android Studio
打开,是可以成功编译出 APK 的,但是在 Unity 中直接 Build, 就会报出如下错误:
CommandInvokationFailure: Gradle build failed.
D:/SDK/Java/jdk1.8.0_171\bin\java.exe -classpath "D:\Program Files\Unity565f1\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\gradle\lib\gradle-launcher-4.0.1.jar" org.gradle.launcher.GradleMain "assembleRelease"
stderr[
FAILURE: Build failed with an exception.
* What went wrong:
A problem occurred configuring root project 'gradleOut'.
> Could not resolve all files for configuration ':classpath'.
> Could not resolve com.android.tools.build:gradle:2.1.0.
Required by:
project :
> Could not resolve com.android.tools.build:gradle:2.1.0.
> Could not get resource 'https://jcenter.bintray.com/com/android/tools/build/gradle/2.1.0/gradle-2.1.0.pom'.
> Could not HEAD 'https://jcenter.bintray.com/com/android/tools/build/gradle/2.1.0/gradle-2.1.0.pom'.
> Connect to 127.0.0.1:80 [/127.0.0.1] failed: Connection refused: connect
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED in 8s
]
stdout[
Starting a Gradle Daemon (subsequent builds will be faster)
]
exit code: 1
UnityEditor.Android.Command.Run (System.Diagnostics.ProcessStartInfo psi, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
UnityEditor.Android.GradleWrapper.RunJava (System.String args, System.String workingdir, UnityEditor.Android.Progress progress)
Rethrow as GradleInvokationException: Gradle build failed
UnityEditor.Android.GradleWrapper.RunJava (System.String args, System.String workingdir, UnityEditor.Android.Progress progress)
UnityEditor.Android.GradleWrapper.Run (System.String workingdir, System.String task, UnityEditor.Android.Progress progress)
UnityEditor.Android.PostProcessor.Tasks.BuildGradleProject.Execute (UnityEditor.Android.PostProcessor.PostProcessorContext context)
UnityEditor.Android.PostProcessor.PostProcessRunner.RunAllTasks (UnityEditor.Android.PostProcessor.PostProcessorContext context)
UnityEditor.HostView:OnGUI()
gradle.properties
观察报错内容,其中有 > Connect to 127.0.0.1:80 [/127.0.0.1] failed: Connection refused: connect
,第一反映是网络代理问题,于是找到 系统盘符:\Users\管理员用户名\.gradle
文件夹中的 gradle.properties
文件,将其中的代理相关设置,用 #
注释掉。
# systemProp.http.proxyHost=127.0.0.1
# systemProp.http.proxyPort=80
# systemProp.https.proxyHost=127.0.0.1
# systemProp.https.proxyPort=80
gralde\lib
经过以上修改,在一般环境下,就已经可以成功打包了,但是也遇到了任然无法打包的情况,报错如下:
CommandInvokationFailure: Gradle build failed.
D:/SDK/Java/jdk1.8.0_171\bin\java.exe -classpath "D:\Program Files\Unity565f1\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\gradle\lib\gradle-launcher-4.0.1.jar" org.gradle.launcher.GradleMain "assembleRelease"
stderr[
FAILURE: Build failed with an exception.
* Where:
Build file 'E:\Unity3D\TTAiLaoyu\Temp\gradleOut\build.gradle' line: 20
* What went wrong:
A problem occurred evaluating root project 'gradleOut'.
> Failed to apply plugin [id 'com.android.application']
> Gradle version 2.10 is required. Current version is 4.0.1. If using the gradle wrapper, try editing the distributionUrl in E:\Unity3D\TTAiLaoyu\Temp\gradleOut\gradle\wrapper\gradle-wrapper.properties to gradle-2.10-all.zip
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED in 16s
]
stdout[
]
exit code: 1
UnityEditor.Android.Command.Run (System.Diagnostics.ProcessStartInfo psi, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
UnityEditor.Android.GradleWrapper.RunJava (System.String args, System.String workingdir, UnityEditor.Android.Progress progress)
Rethrow as GradleInvokationException: Gradle build failed
UnityEditor.Android.GradleWrapper.RunJava (System.String args, System.String workingdir, UnityEditor.Android.Progress progress)
UnityEditor.Android.GradleWrapper.Run (System.String workingdir, System.String task, UnityEditor.Android.Progress progress)
UnityEditor.Android.PostProcessor.Tasks.BuildGradleProject.Execute (UnityEditor.Android.PostProcessor.PostProcessorContext context)
UnityEditor.Android.PostProcessor.PostProcessRunner.RunAllTasks (UnityEditor.Android.PostProcessor.PostProcessorContext context)
UnityEditor.HostView:OnGUI()
经过测试,类似结构的项目,在 Unity 2018.1.2f1
中可以打包成功,因此怀疑是 Unity 集成的 Gradle 版本与项目中某些设置不匹配导致的。
Unity 2018.1.2f1
中集成 Gralde 版本为 4.0.1
。Unity 5.6.51
中集成 Gralde 版本为 2.1.4
。尝试做如下修改:
Unity 5.6.x
和 Unity 2018.x
的安装目录中 Unity安装目录\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\gradle\
中的 lib
文件夹, Unity 5.6.x
的 lib
,并将 Unity 2018.x
的 lib
复制过来。Unity 5.6.x
的 Unity安装目录\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\GradleTemplates
文件夹, mainTemplate.gradle
和 libTemplate.gradle
两个文件中的 Gralde 版本号改为 2.3.0
。这两个文件,分别是 Gradle 项目的 项目级 build.gradle
模板和 模块级 build.gradle
模板。Unity 5.6.x
测试打包,成功。 <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/markdown_views-ea0013b516.css">
</div>
(1)在父进程中,fork返回新创建子进程的进程ID;(2)在子进程中,fork返回0;(3)如果出现错误,fork返回一个-1。打印父子进程fork函数的返回值代码: 此段代码不够严谨哈!!!!#include<stdio.h>#include <sys/types.h>#include <unistd.h>int main(){ pid_t pid; pid_t pid2; pid...
文章目录一、安装二、配置三、使用1、创建项目仓库2、更新文件3、回退四、总结五、参考一、安装1.下载git通过官网下载对应操作系统git并完成安装下载链接二、配置1.在idea中点击file,再点击setting。2.在setting中找到Git3.选择安装git的路径后点击OK4.点击Github使用github账号密码登录如果登录时出现404提示,可以使用token的方式登录可以参考如何获取github的token三、使用1、创建项目仓库1.点击VCS->imp
Section 3:EGP3.1 IBGP3.2 EBGP3.3转载于:https://www.cnblogs.com/xuebing666666/p/6665524.html
字符串缓冲区是在内存堆区自选回答
转载文章包含SVN的概念、检出、分支创建和分支代码合并等内容。知识无极限,与你来相见,欢迎点赞支持!
QWebEngineView类提供了一个用于查看和编辑web文档的小部件。QWebEngineView是Qt WebEngine web浏览模块的主要部件。它可以用于各种应用程序,以显示来自互联网的实时web内容。一个网站可以通过load()函数加载到QWebEngineView上。和所有Qt小部件一样,为了显示QWebEngineView,必须调用show()函数。下面的代码片段说明了这一点: QWebEngineView *view = new QWebEngineView(pare..
1、nohup ----后台执行,执行记录默认输出到当前目录下的nohup.out文件nohup find /etc -name passwd2、/dev/null介绍把/dev/null看作"黑洞",它相当于一个只写文件;所有写入它的内容都会丢弃. 而无法它那儿读取内容;2、/dev/null用途a、禁止标准输出.cat $filename >/dev/null ...
经历过考研的同学们,应该都能发现:在图书馆或自习室,甚至是背书的走廊楼梯间地下室,总能碰到“眼熟”的人;而自己位置附近的人,仿佛一直是同一拨。大家彼此叫不出名字,也没有说过一句话,但却早已...
本文翻译自 2020 年的一篇英文博客《How to use eBPF for accelerating Cloud Native applications》。原文标题非常宽泛,但内容其实...
在项目中常用到的页面跳转的方式主要有两种:1、通过在startActivity后执行overridePendingTransition方法进行动画的切换。overridePendingTransition(R.anim.left_in,R.anim.left_out); 其中第一个参数为activity进入时的效果,具体效果可以自己实现。left_in:xml versi
在学习前端的时候,我们应该知道css给html标记添加各种样式,用来告诉浏览器,因该如何显示这些标记里面的内容。既然css是用来给html添加各种样式的,那么,html中如何引入外部的css文呢?本篇文章将给大家来介绍关于html引入css文件的四种方法,下面我们就来看看具体的内容。1、html引入css文件之直接在div中使用css样式制作div+css网页<div style="border:1px red solid;">html引入css文件</div>说明:ht
python实现网页登陆操作,常见的方法有:requests模块和selenium模块。使用后者的webdriver调用浏览器来模拟登陆,会比前者更加直观简单一些。本文使用了webdriver来控制浏览器,进行网页打开、网页元素的定位、发送数据、点击按钮等操作。WebDriver是Selenium 的核心 ,它是一个编写指令集的接口,可以在许多浏览器中互换运行(Chrome、Edge、Firefox等),可以使用它很方便地模拟用户在网页上的基本操作。本文使用的是Chrome浏览器及对应的。