jasonross / Nuwa

Nuwa, pure java implementation, can hotfix your android application.
2.96k stars 574 forks source link

生成补丁的时候报$ANDROID_HOME is not defined #23

Open quelang9 opened 8 years ago

quelang9 commented 8 years ago

按照说明运行demo,但执行这句命令报错: ./gradlew clean nuwaQihooDebugPatch -P NuwaDir=/Users/zhangsan/Downloads/download_demo/nuwa 报的异常: Caused by: org.gradle.api.InvalidUserDataException: $ANDROID_HOME is not defined

请问这个怎么解决?

shiyouyiren commented 8 years ago

没有配置ANDROID_HOME环境变量

quelang9 commented 8 years ago

mac电脑的Android环境变量已经设置了,可以在命令行直接使用adb命令的。

“没有配置ANDROID_HOME环境变量”指的是什么配置??

seewhy163 commented 8 years ago

看一下~/.bash_profile下环境变量的名字,比如你用了ANDROID_SDK_HOME,也是可以执行adb的,但这里就会失败。另外如果是用zsh的话,需要到~/.zshrc 下改。

quelang9 commented 8 years ago

名字应该是没有问题的,我贴下我~/.base_profile里的配置: export ANDROID_HOME=/Users/zhangsan/Library/Android/sdk export PATH=${ANDROID_HOME}/platform-tools:${ANDROID_HOME}/tools:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin 请问我这样OK吧?

LuoboDcom commented 8 years ago

ANDROID_HOME 怎么配置啊,我在windows和ubuntu下都说没有配置ANDROID_HOME

dodola commented 8 years ago

@LuoboDcom 这个我提交了个补丁可以解决了这个问题,你看一下你项目里有没有 local.properties 文件,里面内容是 sdk.dir=SDK路径,不过...我发现作者没有更新到jcenter上,请自行下载源码编译

File localProps = project.rootProject.file("local.properties")
            if (localProps.exists()) {
                properties.load(localProps.newDataInputStream())
                sdkDir = properties.getProperty("sdk.dir")
            } else {
                sdkDir = System.getenv("ANDROID_HOME")
            }
LuoboDcom commented 8 years ago

@dodola 我是用这个demo的,有这个local.properties,可以运行的,就是执行第二步命令,报缺少Android_Home,想问下你这句代码加在哪里?谢谢

dodola commented 8 years ago

@LuoboDcom 怪我没说清楚,是这个项目 NuwaGradle 作者merge了代码,但是jcenter里的lib还是旧的,所以出现这个情况。

LuoboDcom commented 8 years ago

@dodola classpath 'cn.jiajixin.nuwa:gradle:1.2.2' 是把这个替换成新的代码(自己下载NuwaGradle,加上你的那句代码)是吧?

LuoboDcom commented 8 years ago

@dodola 可以加个q吗? 964802422

TigerSkinZhang commented 8 years ago

如何解决啊这问题。。。。 执行第3步gradlew clean nuwaQihooDebugPatch -P NuwaDir=/Users/jason/Documents/nuwa,出现如下错误: Warning: can't write resource [.readme](Duplicate zip entry [classes.jar:.readme]) :sample:nuwaJarBeforeDexQihooDebug
:sample:nuwaQihooDebugPatch FAILED

FAILURE: Build failed with an exception.

gondole-zz commented 8 years ago

设置系统环境变量 ANDROID_HOME为sdk的目录就可以解决。nuwa.gradle 插件版本为1.2.2;

JakeWoki commented 8 years ago

@gondole @dodola win7在环境变量里配置ANDROID_HOME吗?可是配置也不可以

gondole-zz commented 8 years ago

@JakeWoki 是的,配置ANDROID_HOME为你的sdk目录即可,可以看下 nuwa.gradle 的代码,dodola已经在上面写出来了.jcenter上的nuwa.gradle好像只读取这个配置的路径.

DyanGitHub commented 8 years ago

朋友告知的解决方案,亲测成功: 替换root project 的build中的classpath 'cn.jiajixin.nuwa:gradle:1.2.2'为build中的classpath 'cn.jiajixin.nuwa:gradle:1.2.3'; 运行后若是提示can not find cn.jiajixin.nuwa:gradle:1.2.3,在repositories中加maven,如下: repositories { jcenter() maven { url 'https://dl.bintray.com/dodola/maven'} } ------补充------- 后来,通过git checkout bugfix origin/bugfix ,在bugfix分支上进行gradlew指令,并没有加上述的修改,也没有出现android_home的异常

dodola commented 8 years ago

@DyanGitHub 这个maven是个临时用的,当时为了解决这个问题临时开了一个,我看看把它发布到jcenter上

szitguy commented 8 years ago

@dodola 我重新编译了NuwaGradle,得到了NuwaGradle-1.2.2.jar,然后将之前的classpath 'cn.jiajixin.nuwa:gradle:1.2.2'改成了classpath fileTree(dir: 'nvwagradle', includes: ['NuwaGradle-1.2.2.jar'])(我把自己编译出来的NuwaGradle-1.2.2.jar放在了项目根目录的nvwagradle目录下)。然后执行gradle clean nuwaQihooDebugPatch -P NuwaDir=nuwa路径,出现如下错误:

Warning: can't write resource [.readme](Duplicate zip entry [classes.jar:.readme]) :sample:nuwaJarBeforeDexQihooDebug FAILED

FAILURE: Build failed with an exception.

你碰到过没?请问这个怎么解决呢?

louisgeek commented 8 years ago

set ANDROID_HOME=D:/android/sdk

RadiateWSG commented 8 years ago

嗯,看NuwaGradle中确实修复了该问题,只是release version还是1.2.2,目前DyanGitHub的方法可以解决。