android studio使用错误排查记录

本文记录了在使用Android Studio时遇到的问题,包括找不到Build Tools版本、Gradle DSL方法未找到、内存溢出错误以及Manifest合并冲突、Library Project的BuildConfig.DEBUG问题、自动删除多余空格等。提供了对应的解决方案,如修改项目结构、调整SDK版本、设置编译选项等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

配环境这玩意儿真是考验耐力和碰运气啊!!!!

导入一个已有的gradle项目

一开始提示 Error:failed to find Build Tools revision 21.1.1

来回改project structure里面的配置,指定不同的SDK,反正安装android studio默认的sdk不能使用

Error:(11, 0) Gradle DSL method not found: 'android()'

Possible causes:

the project '' may be using a version of Gradle that does not contain the method.

The build file may be missing a Gradle plugin.

大概还是指定的编译版本不对

尝试改一下project structure里面的配置,发现子module的配置没有,只是外面一级目录,改成指定的SDK build tools


各种重新导入-删除-重新导入-卸载ing

(在android studio中可能由于误操作,删除硬盘的源文件,所以最好先备份)


终于有一次导入后,还是提示 Error:failed to find Build Tools revision 21.1.1

但是,这次打开project structure出现了很多modules,这才是我要的方式嘛,挨个配置它们的


编译中错误:

UNEXPECTED TOP-LEVEL ERROR:
java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOfRange(Arrays.java:3658)
at java.lang.String.<init>(String.java:201)
at java.lang.StringBuilder.toString(StringBuilder.java:407)
at com.android.dx.rop.type.Type.asUninitialized(Type.java:836)
at com.android.dx.cf.code.ValueAwareMachine.run(ValueAwareMachine.java:172)
at com.android.dx.cf.code.RopperMachine.run(RopperMachine.java:304)
at com.android.dx.cf.code.Simulator$SimVisitor.visitConstant(Simulator.java:691)
at com.android.dx.cf.code.BytecodeArray.parseInstruction(BytecodeArray.java:764)
at com.android.dx.cf.code.Simulator.simulate(Simulator.java:94)
at com.android.dx.cf.code.Ropper.processBlock(Ropper.java:787)
at com.android.dx.cf.code.Ropper.doit(Ropper.java:742)
at com.android.dx.cf.code.Ropper.convert(Ropper.java:349)
at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:280)
at com.android.dx.dex.cf.CfTranslator.translate0(CfTranslator.java:137)
at com.android.dx.dex.cf.CfTranslator.translate(CfTranslator.java:93)
at com.android.dx.command.dexer.Main.processClass(Main.java:729)
at com.android.dx.command.dexer.Main.processFileBytes(Main.java:673)
at com.android.dx.command.dexer.Main.access$300(Main.java:83)
at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:602)
at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)
at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
at com.android.dx.command.dexer.Main.processOne(Main.java:632)
at com.android.dx.command.dexer.Main.processAllFiles(Main.java:505)
at com.android.dx.command.dexer.Main.runMultiDex(Main.java:334)
at com.android.dx.command.dexer.Main.run(Main.java:244)
at com.android.dx.command.dexer.Main.main(Main.java:215)
at com.android.dx.command.Main.main(Main.java:106)


在项目配置的build.gradle文件里面,有一段

dexOptions {
        javaMaxHeapSize "2g"
    }
 

有的版本android studio需要注释,有的需要保留



=====================以下为转载其他地方写的编译等出错问题================

原文:http://www.codeceo.com/article/android-studio-problems.html

问题一:

Error:(26, 9) Attribute application@icon value=(@drawable/logo) from AndroidManifest.xml:26:9

Error:(28, 9) Attribute application@theme value=(@style/ThemeActionBar) from AndroidManifest.xml:28:9
is also present at XXXX-trunk:XXXXLib:unspecified:15:9 value=(@style/AppTheme)
Suggestion: add ‘tools:replace=”android:theme”‘ to <application> element at AndroidManifest.xml:24:5 to override
Error:Execution failed for task ‘:XXXX:processDebugManifest’.

> Manifest merger failed with multiple errors, see logs

原因:

AS的Gradle插件默认会启用Manifest Merger Tool,若Library项目中也定义了与主项目相同的属性(例如默认生成的android:icon和android:theme),则此时会合并失败,并报上面的错误。

解决方法有以下2种:

方法1:在Manifest.xml的application标签下添加tools:replace=”android:icon, android:theme”(多个属性用,隔开,并且记住在manifest根标签上加入xmlns:tools=”http://schemas.android.com/tools”,否则会找不到namespace哦)

方法2:在build.gradle根标签上加上useOldManifestMerger true (懒人方法)

参考官方介绍:

http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger

问题二:

Library Project里面的BuildConfig.DEBUG永远都是false。这是Android Studio的一个已知问题,某Google的攻城狮说,Library projects目前只会生成release的包。

Issue 52962: https://code.google.com/p/android/issues/detail?id=52962

解决方法:(某Google的攻城狮推荐的方法)

Workaround: instaed of BuildConfig.DEBUG create another boolean variable at lib-project’s e.g. BuildConfig.RELEASE and link it with application’s buildType.

https://gist.github.com/almozavr/d59e770d2a6386061fcb

参考stackoverflow上的这篇帖:

http://stackoverflow.com/questions/20176284/buildconfig-debug-always-false-when-building-library-projects-with-gradle

问题三:

每次保存的时候,每行多余的空格和TAB会被自动删除(例如结尾、空行的多余空格或TAB)

特别是每次准备提交SVN,Review代码时候你就蛋疼了,显示一堆不相关的更改,看的眼花。

解决方法:

Settings->IDE Settings->Editor->Other->Strip trailing spaces on Save->None

问题四:

编译的时候,报:Failure [INSTALL_FAILED_OLDER_SDK]。一般是系统自动帮你设置了compileSdkVersion

解决方法:

修改build.gradle下的compileSdkVersion ‘android-L’为compileSdkVersion 19(或者你本机已有的SDK即可)


### 解决Android Studio运行应用程序时出现的错误 #### 配置SDK环境 当在Android Studio中编译并试图运行项目时,如果遇到诸如缺少依赖库或其他基础组件的问题,则可能是由于未正确设置或配置SDK所致。为了确保能够顺利构建和部署应用到模拟器或真实设备上,建议按照官方文档指引完成最新版本的SDK Tools、Platform-tools以及Build-tools等必要工具链的安装与更新[^2]。 #### 设备连接验证 针对`No target device found`这类无法识别目标装置的情形,应先确认已启用开发者模式下的USB调试选项,并通过命令行工具adb检查物理连接状态;对于使用AVD Manager创建的仿真器而言,则需保证其API Level兼容于当前工程设定的目标平台版本号,同时注意分配足够的内存资源以支持流畅操作体验。 #### 排查日志信息 一旦发现启动过程中存在崩溃现象,务必借助Logcat窗口收集详细的异常堆栈跟踪记录以便定位具体成因。常见的触发因素包括但不限于:未经声明权限即访问敏感功能接口、布局文件解析失败或是第三方插件冲突等等。依据上述线索逐一排查直至恢复正常运作为止[^1]。 #### 修改Gradle属性 有时特定场景下可能会遭遇类似于“Installation failed with message INSTALL_FAILED_TEST_ONLY”的阻碍,此时可以在项目的根目录找到名为gradle.properties的文字档,在其中追加一行`android.injected.testOnly=false`用于绕过该限制条件从而实现正常安装流程[^4]。 ```groovy // File: ./gradle.properties ... android.injected.testOnly=false ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值