Android Studio解决导入开源项目出现的相关问题

来源:互联网 发布:有哪些软件管家 编辑:程序博客网 时间:2024/06/05 11:33
今天,用Import Module导一个网上的类库library,再在File的Project Structure中的Denpendencies将library作为Moudle denpendency添加进去,结果sync时出现not found:'runProguard()'的问题,困扰我好久,最后解决。从字面就能看出来,出现这个问题的原因是找不到runProguard()这个方法了(调用这个方法的地方在每个Module对应的build.gradle文件中)。那是因为我的Android studio版本比网上的类库library的高,当Android Studio升级时,也自动的将项目下的build.gradle文件(不是Module对应的build.gradle!)下的内容修改成了:
dependencies {        classpath 'com.android.tools.build:gradle:2.0.0'        // NOTE: Do not place your application dependencies here; they belong        // in the individual module build.gradle files

而升级之前是这样的:

dependencies {        classpath 'com.android.tools.build:gradle:1.0.0-rc4'        // NOTE: Do not place your application dependencies here; they belong        // in the individual module build.gradle files    }

显然,最简单的解决方法是将gradle的版本改回去,此方法可能的确有效。

但是,这种做法显然不是最好的方法。查阅官方文档之后(http://tools.android.com/tech-docs/new-build-system)之后发现,在新版本的gradle中,runProguard这个方法已经废弃了,并且改为新的方法了:minifyEnabled. 因此,正确的解决方法不是修改gradle的版本号,而是将项目中每个Module对应的build.gradle文件中的runProguard方法名改为minifyEnabled,即:

 buildTypes {        release {            minifyEnabled false(表示打包签名的时候 是正式包 会执行混淆代码)            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'             ( 定义代码混淆文件 注意:proguard-rules.pro要放在主工程的目录下)        }    }

这样一般就能解决,但是接着又出现新的问题,是另一个问题:

在android studio中Error:Library projects cannot set applicationId. applicati

错误原因
升级到 Android studio 正式版2.0之后,lib工程里面不能在 defaultConfig 里面显示设置 applicationId,直接使用 AndroidManifest.xml 里面的定义即可
错误解决,在library的系统文件
build.gradle文件中将 applicationId 配置删除掉

defaultConfig {    applicationId "com.super.app"    minSdkVersion 23    ...}

修改为:

defaultConfig {    minSdkVersion 23    ...}

这样又解决一个问题,但是呢,还没结束,感觉上套了,又出现一个问题:

在android studio中:Error:No such property: GROUP for class: org.gradle.api.publication.maven.

解决方法,其实也很简单:
在library的build.gradle文件中,如下:

dependencies {    compile 'com.android.support:support-v4:20.0.0'    compile fileTree(dir: 'libs', include: ['*.jar'])}apply from: 'https://raw.github.com/twotoasters/gradle-mvn-push/master/gradle-mvn-push.gradle'

将最后一行的

apply from: 'https://raw.github.com/twotoasters/gradle-mvn-push/master/gradle-mvn-push.gradle'

删掉,在sync一下即可,这样就把问题全搞定了。


在这里,我在贴一个常见的问题:
解决Gradle DSL method not found: ‘android()’

解决方法:
删掉最外层的build.gradle中的

android {         compileSdkVersion 19         buildToolsVersion '21.1.1'     }

然后重新刷新就ok了。


这篇博客会随时更新,当我碰到新的Android Studio的问题并解决了会继续更新,也希望大家把自己常见的AS上的问题及解决办法告诉我,我们一起来整合起来,方便日后查看。


这次,我又碰到一个常见的导开源项目时会出现的错误,那就是

maven相关问题
导入项目后出现:Error:(47, 0) No such property: sonatypeRepo for class: org.gradle.api.publication.maven.internal.ant.DefaultGroovyMavenDeployer。
这种问题一般是出现在导入一些开源项目的时候。原因为该项目的原作者会把项目发布到maven中央仓库中,所以在gradle中添加了相关的maven发布任务,而发布任务需要配置username(找不到username也是同样的问题)或sonatypeRepo等属性的值,作者是不会把这些值上传的,所以导致找不到这些属性。你不是该项目的作者,自然不需要这些任务,最干净的方法是把这些任务及引用的maven, signing插件的声明删除即可。
这里写图片描述

一般出错都在library,将library中的有关于moven以及signing代码全部删掉,只留下上图上的东西就行。

2 0
原创粉丝点击