android studio3.X以后版本 gradle依赖改为 implementation

2017 年google 后,Android studio 版本更新至3.0,更新中,连带着com.android.tools.build:gradle 工具也升级到了3.0.0,在3.0.0中使用了最新的Gralde 4.0 里程碑版本作为gradle 的编译版本,该版本gradle编译速度有所加速,更加欣喜的是,完全支持Java8。当然,对于Kotlin的支持,在这个版本也有所体现,Kotlin插件默认是安装的。

//在com.android.tools.build:gradle 3.0 以下版本依赖在gradle 中的声明写法
compile fileTree(dir: 'libs', include: ['*.jar'])
//但在3.0后的写法为
implementation fileTree(dir: 'libs', include: ['*.jar'])
或
api fileTree(dir: 'libs', include: ['*.jar'])

api 指令

完全等同于compile指令,没区别,你将所有的compile改成api,完全没有错。

implement指令

这个指令的特点就是,对于使用了该命令编译的依赖,对该项目有依赖的项目将无法访问到使用该命令编译的依赖中的任何程序,也就是将该依赖隐藏在内部,而不对外部公开。
用api指令编译,Glide依赖对app Module 是可见的
用implement指令编译依赖对app Module 是不可见的

总结

在Google IO 相关话题的中提到了一个建议,就是依赖首先应该设置为implement的,
如果没有错,那就用implement,
如果有错,那么使用api指令,这样会使编译速度有所增快。

(转载:http://blog.csdn.net/marvinhq/article/details/73477128)

我们不生产代码,我们知识代码的搬运工,如有侵权,本人将第一时间删除
邮箱:zhf6751134@163.com
QQ交流群:336237986

<think>嗯,用户遇到了Unity项目中Android资源链接失败的构建错误,错误信息是com.android.build.gradle.internal.res.LinkApplicationAndroidResourcesTask TaskAction。我需要帮他找出可能的原因和解决方案。首先,我得回忆一下常见的Android资源链接错误通常由什么引起。 根据引用[1]和[2],资源链接失败通常是因为资源文件中的错误,比如XML文件中的属性错误或者资源引用问题。比如,布局文件中的属性拼写错误,或者引用了不存在的资源ID。用户可能需要检查所有XML文件,特别是布局文件和资源文件,比如strings.xml、colors.xml等,确保没有语法错误或重复定义。 另外,引用[3]提到,有时候直接删除出错的layout文件夹可以解决问题,但这是比较暴力的方法。如果用户不需要那些布局文件,可以尝试删除,但如果是必须的,可能需要仔细检查其中的内容。例如,检查activity_main.xml中的属性是否正确,是否使用了正确的命名空间,或者是否有不支持的属性。 接下来,Gradle配置问题也是一个可能的原因。Unity项目中的Gradle版本Android插件版本是否兼容?用户可能需要检查gradle-wrapper.properties中的Gradle版本,以及build.gradle中的Android插件版本是否匹配。比如,Gradle 7.x需要对应的Android Gradle Plugin版本,如果版本不匹配,可能会导致资源链接失败。 资源合并冲突也是一个常见问题。如果项目中有多个模块或第三方库定义了相同的资源名称,可能会引发冲突。用户需要检查是否有重复的资源名称,尤其是在不同模块或库中的资源文件。例如,两个库都定义了同名的color或string,这时候需要重命名其中一个。 AndroidManifest.xml的问题也不容忽视。检查清单文件中的包名是否正确,权限声明是否有误,或者Activity、Service等组件的声明是否正确。有时候,缺失必要的元数据或错误的组件声明也会导致资源链接失败。 SDK和构建工具版本是否过时?用户需要确保Android SDK Build Tools和Compile SDK版本是最新的,或者至少与项目配置兼容。在Unity中,可以在Player Settings里设置Target API Level,确保与本地安装的SDK版本一致。 清理和重建项目可以解决一些临时性的构建问题。用户可以尝试删除项目中的bin、obj、build文件夹,然后重新构建。有时候缓存的文件会导致构建错误,清理后可能恢复正常。 如果以上方法都不奏效,可能需要检查Unity版本Android模块的兼容性。某些Unity版本可能和最新的Android Gradle插件存在兼容问题,降级插件版本或升级Unity版本可能有效。用户还可以尝试在Unity中生成一个空的Android项目,逐步添加模块,定位问题来源。 另外,查看详细的错误日志是关键。用户需要找到具体的错误信息,比如哪个XML文件的哪一行出错,然后根据日志中的提示进行修复。例如,如果日志指出某个属性不存在,可能是拼写错误或者命名空间错误。 总结一下,可能的解决方案包括检查资源文件、Gradle配置、资源冲突、AndroidManifest.xml、更新SDK和构建工具、清理项目、调整Unity版本,以及查看详细日志。用户需要逐一排查这些方面,找到导致资源链接失败的具体原因。</think>### 解决Unity Android资源链接失败问题的步骤 #### 1. **检查资源文件中的语法错误** - **XML文件验证**:确保所有布局文件(如`.xml`)、资源文件(如`strings.xml`、`colors.xml`)无语法错误。例如,属性拼写错误或未闭合标签会导致资源链接失败: ```xml <!-- 错误示例:错误的属性名 --> <TextView android:textColor="@color/red" android:layout_with="match_parent" /> <!-- 正确应为 android:layout_width --> ``` - **资源引用冲突**:避免重复定义同名资源(如两个`color`同名但值不同)[^1][^2]。 #### 2. **排查Gradle配置问题** - **Gradle版本兼容性**:在Unity项目中的`gradle-wrapper.properties`文件检查Gradle版本,与`build.gradle`中的Android插件版本需匹配。例如: - Gradle 7.x 对应 `com.android.tools.build:gradle:7.x.x` - **依赖库冲突**:检查第三方库(如Firebase、AdMob)是否引入冲突的资源或依赖项。在`build.gradle`中使用`exclude`排除重复依赖: ```gradle implementation (&#39;com.example.lib:1.0&#39;) { exclude group: &#39;com.android.support&#39;, module: &#39;support-v4&#39; } ``` #### 3. **处理资源合并冲突** - **资源前缀**:在`build.gradle`中为模块添加资源前缀,避免多模块资源名称冲突: ```gradle android { resourcePrefix "unity_" } ``` - **检查第三方库资源**:某些库可能包含与项目同名的资源文件(如`ic_launcher.png`),需手动重命名或删除冗余文件。 #### 4. **验证AndroidManifest.xml** - **包名一致性**:确保`AndroidManifest.xml`中的`package`属性与Unity项目设置中的包名一致。 - **权限和组件声明**:检查是否缺少必要权限(如网络权限)或Activity声明错误: ```xml <!-- 缺少权限示例 --> <uses-permission android:name="android.permission.INTERNET" /> <!-- Activity未声明 --> <activity android:name="com.unity3d.player.UnityPlayerActivity" /> ``` #### 5. **更新SDK与构建工具** - **Android SDK Build Tools**:通过Android Studio的SDK Manager安装最新版本。 - **Compile SDK Version**:在Unity的`Player Settings > Other Settings`中,将`Target API Level`设置为与本地安装的SDK版本一致(如API 33)。 #### 6. **清理项目并重建** - **删除临时文件**:手动清除`项目目录/Library`、`Temp`、`Build`文件夹。 - **命令行清理**:在Unity中执行以下操作: - `Assets > Reimport All` - `Build > Clean Project` #### 7. **调整Unity版本或降级插件** - **兼容性测试**:若使用Unity 2020+,尝试降级Android Gradle插件版本(如从7.1.0降至4.2.0),修改`mainTemplate.gradle`: ```gradle dependencies { classpath &#39;com.android.tools.build:gradle:4.2.0&#39; } ``` #### 8. **分析详细错误日志** - **定位具体错误**:在Unity构建日志中搜索`AAPT: error`,例如: ``` res/layout/activity_main.xml:12: AAPT: error: attribute layout_marginStart not found. ``` 此类错误表明属性拼写错误或未正确引入命名空间,需修正为`android:layout_marginStart`。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值