Android Studio 开发问题记录

来源:互联网 发布:c语言volatile 寄存器 编辑:程序博客网 时间:2024/04/29 19:43

最近在学习使用Android Studio,初学一个工具当然会发现好多问题,特此来记录下所遇到的一些坑:
此篇不定时更新。

1、Error:Execution failed for task ‘:app:processDebugManifest’.> Manifest merger failed with multiple errors, see logs:
此问题出现的情况是:主项目引入另一个项目作为主项目的library。网上有方法是:
在Manifest.xml的application标签下添加tools:replace=”android:icon, android:theme”(多个属性用,隔开,并且记住在manifest根标签上加入xmlns:tools=”http://schemas.android.com/tools”。

反正上述方法我是没成功,我这里的解决方式是,通过看log发现是Manifest里面的 <application> 标签里面的android:allowBackup=”true”的原因,我在library里面设置的是“true”,但是我的主工程里面设置的“false”, 在我把主工程里面也改成“true”之后重新clean 编译就好。

2、Error:Execution failed for task ‘:app:transformClassesWithDexForDebug’.
Process command ‘F:\Program Files (x86)\Java\jdk1.8.0_65\bin\java.exe’ finished with non-zero exit value 1 (或 value 2)。

相信这个问题只要是从eclipse转AS过来的同学都会遇到,这个问题出现的原因也是当一个项目依赖一个library的情况下。这里如果library 和主项目都引用了同一个包就会报这个错(在eclipse上面可没遇到这个情况。。。)。 最普遍的情况就是v4包:

library:

dependencies {    compile fileTree(include: ['*.jar'], dir: 'libs')    testCompile 'junit:junit:4.12'    compile 'com.android.support:support-v4:23.1.1'}

主项目:

dependencies {    compile fileTree(include: ['*.jar'], dir: 'libs')    testCompile 'junit:junit:4.12'    compile project(':BaseApplicationLibrary')    compile files('libs/android-support-v4.jar')}

这里“BaseApplicationLibrary”就是上面的library项目,由于都引用了v4包,这里删除一个重新clean编译下就好了。不过也有情况下clean之后还是报错,在确认没有其他问题的情况下可以试着重启下AS,然后再编译。我之前就是这样才好的。。。

3、org.apache.http.*类丢失
这里写图片描述

当我们API 更新到23之后,org.apache.http.*一些类找不到的情况,原因是在API 23后,不提供org.apache.http.*(只保留几个)类了。
在android 2.3 (api 9)之后 推荐使用HttpURLConnection类,因为它效率更高。这对于我们之前用HttpClient 无疑很蛋疼。不过没关系推荐归推荐,要用也还是可以的 :

Eclipse 解决办法
在libs中引入org.apache.http.legacy.jar 包
此jar包在你的sdk目录里面的\platforms\android-23\optional 下(需要下载android 6.0的SDK)

Android Studio解决办法:

在build.gradle里面加上 :useLibrary ‘org.apache.http.legacy’ 如:

android {    compileSdkVersion 23    buildToolsVersion "23.0.2"    useLibrary 'org.apache.http.legacy'    defaultConfig {        minSdkVersion 8        targetSdkVersion 23        versionCode 1        versionName "1.0"    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }    }}

!!!这里有一点必须注意了compileSdkVersion 23 必须是23及以上 targetSdkVersion 23也是,不然会找不到这个包。

4.The APK file D:\XXX.apk does not exist on disk.Error while Installing APK
今天在AS编译安装APK的时候报如上错误:
在尝试了Clean Project、Rebuild、重启AS后发现还是不行,最后在stackoverflow发现个方法:

点击AS窗体右边侧的Gradle按钮,然后刷新一下就好了。

这里写图片描述

5. Error:(140, 62) 错误: -source 1.6 中不支持 diamond 运算符(请使用 -source 7 或更高版本以启用 diamond 运算符)

这个问题不管在eclipse还是As上都会遇到,原因是在JDK 1.7里新增了一个新特性:增强对通用实例创建(diamond)的类型推断 。什么意思呢?我们会发现报错的地方都是如下写法:

List<DataSource> datasources=new ArrayList<>();

正常写成这样就没错了:

List<DataSource> datasources=new ArrayList<DataSource>();

也就是说JDK1.7支持这种类型推断后,在声明datasources 时new ArrayList<>里可以不需要加DataSource。

好了,既然知道了哪块的原因我们只要设置下jdk的版本就好了,如下图:
这里写图片描述

设置好Source Compatibility 和 Target Compatibility 的版本就好了。

0 0