最近从某日网上下载了一个发行较早的安卓项目包,原生开发环境是Eclipse。对Android Studio的兼容似乎不是很好,可能是因为gradle版本问题。之前下载过另一个比较相似的项目,布署时并未出现什么问题,但这个项目的问题数有些超乎意料。不过在反复删装排错后,终于可以运行了。
以下是布署时出现频率较高的问题,记录以备参考:
问题一:打开工程后发现不存在module
相关问题:在File选项卡内没有"Sync Projects with Gradle Files"。
参考解决方法:
菜单栏:打开File/New/Import Module,选择包含module的项目。然后一路确认。并在项目的setting.gradle中添加:(假设module名为module name)
include ‘:module name’
结果:经过十几次尝试,大部分module添加后仍然无法被显示。
有效方法:
打开File/Project Structure/Dependencies,在Module选项卡点击加号(+),新增module。
选择Import Gradle Project,在Source directory中选择包含module的项目。然后一路确认。
不要选其他的。
最后Sync Projects with Gradle Files,module就会被同步到项目中。
这个方法屡试不爽。
问题二:“使用SDK最低版本为XXX。。。”
提示:(原文见报错)
翻译:在安卓清单文件中不应当声明SDK最低版本,你可将这个版本从清单移动到build.gradle的默认配置中。
解决方法:
清单中声明最低sdk版本的那句是多余的(图中第7行),删除就好了。
问题三:某个源文件缺少类的支持 (卡了好久)
比如:一个源文件提示缺少“jp.live2d.ALive2D.Model”类的支持,该类的方法无法被resolve。(我是把项目转移到Eclipse才找到方法和库文件包含关系的)
AS的项目添加库支持似乎不像Eclipse,VC这类IDE那么方便,只要项目的目录中有库文件,然后源文件中导入一下就可以用了。毕竟控制着项目文件同步的是gradle。
项目对外部类的依赖仍需要在Project Structure内设置。依赖顺序为:Project→Module→Library/Jar。
选中缺少类的module,在Declared Dependencies选项卡中点击加号(+),在下拉菜单中选择“Jar Dependency”。在step1输入栏中添加所需库的完整路径。包括库名和后缀jar。不然仍会出错。
在step2依赖配置中选择implementation,OK然后Apply。gradle会自动同步文件,依赖建立完成。
问题四: 编译时报错 apply.plugin ‘com.android.application’ @…
这个错误网上相关资料比较多,所以只做简单记述。
解决方法:
在build.gradle文件中添加下列代码(如果不存在的话)
build script{
repositories{
//这里写Maven仓库接口
}
dependencies{
//这里写gradle依赖的插件版本
}
}
这里是我用AS以来感觉非常坑的地方,一旦这里出错就会找不到头脑,怎么装了一个gradle又要装一个,而且后一个还经常装不了。
不得不理清两个gradle的关系。之前装的gradle是一个管理项目的软件,在这里要装的gradle是项目所需的gradle插件,因为不同项目所需插件版本不同,所以需要到maven仓库获取,安装一次后不需再下载。
repositories中可以设置用于获取插件的接口或地址。
AS原生提供获取插件的方法:
google() //google的Maven仓库,稳定性很迷,有时可能需要cross the wall。
jcenter() //地址是jcenter.bintray.com/com/android/tools/build/gradle
//看样子似乎是不维护了,最高版本才2.5.0AP2,老版本的gradle和项目可能还可用。
用的比较多的应该是国内的Maven仓库。
用url获取插件的方法:
maven{ url “http://仓库地址”}
阿里云:maven.aliyun.com/nexus/content/repositories/jcenter
谷歌:maven.google.com
工程同步时会自动寻找并下载插件,如果版本不对就按报错更改。
小结:没有完美的IDE或编译器,一般都是选择相对好用的。第一次在csdn上发blog,安卓也是初学状态,肯定存在没说清道明之处,如有错误请包涵,欢迎在下方评论区指出,如果感觉这篇文章对您有用的话,请点个赞哦。
运行效果如下图:
还行。