3

从 Eclipse 升级到 Android Studio 后,我想更新我的 TouchDB 库,现在是Coubasebase-lite-android。我从我的项目中删除了 TouchDB,git cloned couchbase-lite-android 通过 File -> Import Module 添加到我在 Android Studio 中的项目中。

IDE 中的一切看起来都很好,所有的引用看起来都很好。但是当我尝试编译它时,我在 Android Studio 中收到错误:Gradle: Project "x" not found in root project "myProject" “x”是 couchbaselite 中的每个模块(?)...即 CBLite、CBLiteEktrop 等

我真的不知道从哪里开始?

这是我的项目树:

myProject
---myProject
---CouchbaseLiteProject
------CBLite
------CBLiteEktorp
------Gradle
------.Gradle
------gradlew
------CouchbaseLiteProject
---------build
---------libs
---------src

这是gradlew来自 CouchBaseLiteProject 的内容:

#!/usr/bin/env bash

##############################################################################
##
##  Gradle start up script for UN*X
##
##############################################################################

# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS=""

APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`

# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"

warn ( ) {
    echo "$*"
}

die ( ) {
    echo
    echo "$*"
    echo
    exit 1
}

# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
case "`uname`" in
  CYGWIN* )
    cygwin=true
    ;;
  Darwin* )
    darwin=true
    ;;
  MINGW* )
    msys=true
    ;;
esac

# For Cygwin, ensure paths are in UNIX format before anything is touched.
if $cygwin ; then
    [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
fi

# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
    ls=`ls -ld "$PRG"`
    link=`expr "$ls" : '.*-> \(.*\)$'`
    if expr "$link" : '/.*' > /dev/null; then
        PRG="$link"
    else
        PRG=`dirname "$PRG"`"/$link"
    fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >&-
APP_HOME="`pwd -P`"
cd "$SAVED" >&-

CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar

# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
        # IBM's JDK on AIX uses strange locations for the executables
        JAVACMD="$JAVA_HOME/jre/sh/java"
    else
        JAVACMD="$JAVA_HOME/bin/java"
    fi
    if [ ! -x "$JAVACMD" ] ; then
        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME

Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
    fi
else
    JAVACMD="java"
    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.

Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi

# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
    MAX_FD_LIMIT=`ulimit -H -n`
    if [ $? -eq 0 ] ; then
        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
            MAX_FD="$MAX_FD_LIMIT"
        fi
        ulimit -n $MAX_FD
        if [ $? -ne 0 ] ; then
            warn "Could not set maximum file descriptor limit: $MAX_FD"
        fi
    else
        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
    fi
fi

# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\" \"-Xmx1024m\" \"-Xms256m\" \"-XX:MaxPermSize=1024m\""
fi

# For Cygwin, switch paths to Windows format before running java
if $cygwin ; then
    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`

    # We build the pattern for arguments to be converted via cygpath
    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
    SEP=""
    for dir in $ROOTDIRSRAW ; do
        ROOTDIRS="$ROOTDIRS$SEP$dir"
        SEP="|"
    done
    OURCYGPATTERN="(^($ROOTDIRS))"
    # Add a user-defined pattern to the cygpath arguments
    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
    fi
    # Now convert the arguments - kludge to limit ourselves to /bin/sh
    i=0
    for arg in "$@" ; do
        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option

        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
        else
            eval `echo args$i`="\"$arg\""
        fi
        i=$((i+1))
    done
    case $i in
        (0) set -- ;;
        (1) set -- "$args0" ;;
        (2) set -- "$args0" "$args1" ;;
        (3) set -- "$args0" "$args1" "$args2" ;;
        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
    esac
fi

# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
function splitJvmOpts() {
    JVM_OPTS=("$@")
}
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"

exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"

` myProject 下没有 gradlew 文件,因为它最初是一个 Eclipse 项目

根据 buzeeg 的建议进行更新 ,并且无法从 Eclipse 导出我的项目以生成 gradle 文件我决定在 Android Studio 中创建一个新项目并将我的原始项目文件手动复制到其中,因此 Android Studio 将为我。

在将 couchbase-lite-android 作为模块导入并尝试构建项目后,我得到了与最初遇到的完全相同的错误。Gradle: Project "x" not found in root project "myProject""x" 与 CouchbaseLiteProject 树下的所有子模块 (?) 相关...

4

2 回答 2

0

You need to migrate your Eclipse project in order to have a build file (build.gradle) Migrating from Eclipse :

  1. Update your Eclipse ADT Plugin (you must have version 22.0 or higher).
  2. In Eclipse, select File > Export.
  3. In the window that appears, open Android and select Generate Gradle build files.
  4. Select the project you want to export for Android Studio and click Finish.

Your selected project remains in the same location but now contains a build.gradle file and is ready for Android Studio.

Then, Android Studio will be able to build your project using this build.gradle file.

于 2013-07-15T20:49:37.047 回答
0

Couchbase-Lite 现在正在快速发展 - 现在完全转移到 Android Studio。确实是我见过的第一个如此迅速地放弃 Eclipse 的项目。即使使用 Android Studio 0.2.2,我也无法将其与我的应用程序集成。

我建议您开始使用他们作为示例发布的 GrocerySync 应用程序。它使用 maven 集成到数据库文件(基本上是在 jars 之后)。至于直接集成方法 - 开发人员现在似乎最多使用 OS X 和 Ubuntu 13.04 我在让 Android Studio 定位文件时遇到问题,而不是抱怨缺少符号。

好消息是,通过 Android Studio 构建,我可以使用直接集成并在 shell 中编译。您是否尝试过使用 gradlew 在 shell 级别进行编译?

于 2013-07-28T17:51:42.570 回答