美文网首页版本与bug
Android Gradle项目构建常见问题解决

Android Gradle项目构建常见问题解决

作者: 清枫浦上 | 来源:发表于2017-01-09 16:54 被阅读1358次

    我们经常会将一些Android开源项目导入到Android stuido项目中来运行,gradle构建时就会出现各种各样的奇葩问题,下面来说说我们在开发中常遇到的一些问题!

    1.1. 创建或导入项目后编译时一直在等待

    问题:


    原因:AS连网去下载gradle了,但是网络不好或不通
    解决:禁用网络,AS就会立即自动终止下载进入到主界面了。此时再去指定离线的gradle版本进行编译;



    1.2. Unknow host ‘services.gradle.org’

    问题:


    原因:当你导入第三方项目时,别人项目使用的gradle的版本与你的不一样,这时as就会连网去下载gradle版本,但是找不到services.gradle.org服务器。

    解决:不要去下载不同的gradle版本,可以指定gradle为离线工作模式,使用你当前已存在的gradle版本就可以了[AndroidStudio在安装时就自带了gradle的版本,见androidstudio安装目录下的gradle文件夹]。


    1.3. Gradle DSL method not found: 'android()’

    问题:Error:(16,0) Gradle DSL method not found: 'android()'

    原因:当你通过Project Structure修改了编译的版本或工具时,就可能会在Project的build.gradle配置文件中添加如下脚本代码,此时就会导致上面报错了,这是AS本身的bug。

    android {    
        compileSdkVersion 23
        buildToolsVersion **"23.0.0"
    }
    

    解决方法:应当把上述的代码添加到module的build.gradle文件中,而不能添加到Project的build.gradle文件中。


    1.4. Project中的build.gradle提示Gradle插件版本报错

    问题:

    原因:这种情况一般出现在导入其他人的项目,或者更新了android studio之后。原因是android studio是依赖gradle构建的,在构建android项目的时候,会使用到android gradle插件。但你的project中的build.gralde文件里声明的gradle插件的版本不存在或者版本过低,所以导致报错了。

    解决:通过以下方式查看你的gradle插件的版本,指定为该版本即可。

    [或者默认创建一个AndroidStudio项目,看看默认的gradle插件版本是什么,修改成那个版本即可]


    1.5. 找不到编译的android sdk版本

    问题:


    原因:找不到编译的android sdk版本
    解决:你可以按提示打开 Android sdk Manager去下载相应的版本,但最好的解决方式是把编译的版本修改为你当前存在的sdk版本就可以了。
    你只需修改module的build.gradle文件中的如下版本:



    1.6. Junit导致的出错

    解决:因为暂没有用到java单元测试从app的build.gradle文件中把该行引用删掉即可


    1.7. Hamcrest-core.jar导致出错

    解决:这个是因为最新的创建项目会使用junit库来进行代码测试,在下载这个库的内容的时候发现他引用了hamcrest这个框架,不过国内下载这个jar包hamcrest-core.jar不成功,所以会报这个错误。简单的处理方式是把build.gradle里引用的junit删除掉。


    1.8. ANDROID_DAILY_OVERRIDE 问题:gradle插件太旧了

    Error:(1, 0) Plugin is too old, please update to a more recent version, or set ANDROID_DAILY_OVERRIDE environment variable to "e877086ba74456e68d4c929dc482539df9ffac38"

    解决:添加系统环境变量后重启Studio
    环境变量:ANDROID_DAILY_OVERRIDE, 值为:41b72d353033bfb5aa4d6a98088a908dcae15ef9


    1.9. 项目放在中文路径下报错

    出错详情:Error:(9, 0) Your project path contains non-ASCII characters. This will most likely cause the build to fail on Windows. Please move your project to a different directory. See http://b.android.com/95744 for details. This warning can be disabled by using the command line flag -Dcom.android.build.gradle.overridePathCheck=true, or adding the line com.android.build.gradle.overridePathCheck=true' to gradle.properties file in the project directory.

    描述:项目不能放到中文路径下,否则会可能会出现如上错误。
    解决:
    方法一:路径不要有中文
    方法二:在C:\Users\Administrator.gradle目录下的gradle.properties(如果该文件不存在则创建)文件中添加如下设置:com.android.build.gradle.overridePathCheck=true


    1.10.SDK23编译报httpclient的出错

    解决:Android SDK23版本把httpclient从sdk中移除了,如果使用它,需要手动添加httclient 的jar包:


    1.11.解析引用的第三方依赖失败了

    解决: 如下下图,取消offline work前的勾,停用离线工作模式,再构建让AS联网去下载依赖aar即可。

    下载完编译成功后,再改回离线工作的模式。



    1.12.AndroidStudio编译图片报错

    AndroidStudio对图片格式要求比较严格,比如一些点九的图片,或格式不标准的png图片,都有可能因为图片格式原因导致AndroidStudio编译报错



    1.13.Multiple Dex file

    解决方式:重复添加jar包了,把重新添加的jar包移除即可。


    1.14.创建项目后布局文件预览出错WindowDecorActionBar

    如下所示:


    问题:Api 23使用了ToolBar代替actionbar, 主题中找不到actionbar所以出错了。

    解决:把sytles.xml中如下默认的主题:
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">

    修改成Base.Theme.AppCompat.Light.DarkActionBar
    或者:Theme.AppCompat.Light.NoActionBar


    1.15.AS导入eclipse项目后运行到模拟器显示乱码

    重新设置编码,删除安装包后,重新编译运行;



    1.16.文件目录太深了

    相关文章

      网友评论

        本文标题:Android Gradle项目构建常见问题解决

        本文链接:https://www.haomeiwen.com/subject/nbjhbttx.html