zoukankan      html  css  js  c++  java
  • AndroidStudio 0.2.x 引入多模块Eclipse项目

    !!!!太他妈的累人了!整整折腾了两天!!!!!!!



    不知从那个版本开始ImportModule... AndroidStudioFile菜单中消失了,在0.2之前的版本作为library的模块可以像Eclipse里一样,绝对路径可以完全和主Applicaiton无关,比如如下的目录结构:


    /AllProjects/androidProject/myApplication

    /Libs/android/ActionbarSherlock


    这里myApplication用到ActionbarSherlock这个库,但是到了0.2.x版本行不通了。首先你得把ActionbarSherlock移成和myApplication同级目录,但如果按照上面的目录结构,eclipse引出Gradle后,用AndroidStudio 引入后,Project的名字叫andropidProject,如果在androidProject目录下还有其他项目,引出到AndroidStudio后显然会引起混乱,所以重新调整目录结构如下:


    /AllProjects/androidProject/myAppProject/myApplication

    /AllProjects/android/Project/myAppProject/ActionbarSherelock


    然后从EclipseExport Gradle...但是:别以为这样就OK了,后面的问题仍然是一连串的,下面我分步骤讲解下。


    基本环境:

    Ubuntu 13.04 64bit

    Eclipse Standard 4.3 (KEPLER)

    Android Studio 0.2.8 Build#AI-132.821530

    JDK "1.7.0_25"

    Android SDK Tools 22.0.5


    项目:

    myApplication

    依赖库:

    ActionbarSherlock

    drag-sort-listview


    第一步:

    调整目录结构,并在Eclipse里正确编译。

    /

    ├─ AllProjects

    │    └─ androidProject

    │    └─ myAppProject

    │          ├─ myApplication

    │          ├─ ActionbarSherlock

    │          └─ drag-sort-listview

    └─ android-sdk-linux


    第二步:

    导出gradlebuild 文件。

    选择Eclipse->File->Export...,在Export对话框中选择Android->GenerateGradle build files .具体导出方法参看Android官方介绍Migratingfrom Eclipse 。选中所有要导出的项目,myApplication,actionbarsherlock, drag-sort-listview ,点下一步,确认Projectroot 是否是/AllProjects/androidProject/myAppProject, (如果不是,说明你的项目目录结构不正确),最后向导会在Projectroot 目录中生成下列文件和目录:

    gradle/

    build.gradle

    gradlew

    gradlew.bat

    settings.gradle


    第三步:

    运行AndroidStudio ,Welcome窗口中选择ImportProject... File->ImportProject... 选择导入/AllProjects/androidProject/myAppProject/build.gradle.


    接下来第一个问题来了,按照Android官方站点的介绍,选择usegradle wrapper , 出现如下错误:



    这里有两个问题,第1个问题比较复杂,先解决第2个问题。

    2个问题产生的原因可能是我在AndroidStudio 中将ADT目录指向 /android-sdk-linux,而不是AndroidStudio Bundle ADT(在AndroidStudio 目录下的SDK目录),我想通常同时用EclipseAndroidStudio的都会这么配置吧,否则机器上保存两份ADT不是有病嘛!


    3.1步:

    Projectroot 目录中创建local.properties文件,文件中加上如下行:


    sdk.dir=/home/royer/android-sdk-linux


    (你也可用AndroidStudio new Project.. 生成一个AndroidProject ,让后从那里copy一个local.properties过来)。


    现在回头看第一个问题,这个应该是AndroidStudio 或者IntellijBug...Anyway, 解决方法如下:


    3.2步:

    选择Uselocal gradle distribution , Gradle home 里输入你本地的Gradle路径,如下图:


    Gradle可以到Gradledownload 下载,我用了1.7版,1.61.8应该也都可以。


    到此时,导入是成功了,但编译通不过,碰到的第1个问题是:


    Gradle:Execution failed for task ':myApplication:processDebugManifest'.

    >Manifest merging failed. See console for more info.


    按照提示,开console,运行./gradlewbuild ,可以看到原因,是myApplication指定的android:targetSdkVersion低于actionbarsherlock指定的版本。


    第四步:

    修改AndroidManifest.xml确保主项目和库项目的tagetSdkVersion一致.


    重新build,刚才错误消失了,但新出了19个错误,大致如下:

    Gradle:Error while executing dx command

    Gradle:UNEXPECTED TOP-LEVEL EXCEPTION:

    Gradle:java.lang.IllegalArgumentException: already added:Landroid/support/v4/app/NotificationCompatIceCreamSandwich;


    实际上是如何引用supportv4库的问题,Eclipse里是copy到个项目的libs目录下,而AndroidStudio 是引用repositories的方法。参考Android官方文档SupportLibrary Setup,解决如下:


    第五步:

    修改每个项目的build.gradle文件。

    dependencies{

    compile "com.android.support:support-v4:18.0.+"

    compile fileTree(dir: 'libs', include: '*.jar', exclude:'android-support-v4.jar')

    .....

    }

    注:如果你的libs目录里只有android-support-v4.jar,则可以把comile fileTree 整行删除。



    OK,到此为止,至少我成功的import了。


    本文同步在我的blogger http://royer-wang.blogspot.ca/2013/09/android-studio-02x-eclipse.html 

  • 相关阅读:
    用 Sqlmap 识别 WAF
    OD 实验(九)
    跳转指令及其跳转条件
    Python
    Python 模块
    OD 实验(八)
    OD 实验(七)
    OD 实验(六)
    OD 实验(五)
    OD 实验(四)
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3320174.html
Copyright © 2011-2022 走看看