Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Eclipse迁移到Android Studio和库问题_Android_Eclipse_Android Studio_Gradle - Fatal编程技术网

从Eclipse迁移到Android Studio和库问题

从Eclipse迁移到Android Studio和库问题,android,eclipse,android-studio,gradle,Android,Eclipse,Android Studio,Gradle,我已经决定将我的项目从Eclipse迁移到Android Studio,我发现这样做有很多困难。我遇到的最大问题是: 我有几个应用程序正在使用一些常见的项目(库)。将应用程序导入Android Studio时,它会检测引用的库并将它们添加到应用程序中(复制应用程序文件夹下库的文件夹)。这是我不想做的事情,因为这些库对于超过1个应用程序是通用的,所以我希望它们与应用程序文件夹处于同一目录级别,并且只从应用程序引用它们。Android Studio是如何做到这一点的?在Eclipse中,您只需添加来

我已经决定将我的项目从Eclipse迁移到Android Studio,我发现这样做有很多困难。我遇到的最大问题是:

我有几个应用程序正在使用一些常见的项目(库)。将应用程序导入Android Studio时,它会检测引用的库并将它们添加到应用程序中(复制应用程序文件夹下库的文件夹)。这是我不想做的事情,因为这些库对于超过1个应用程序是通用的,所以我希望它们与应用程序文件夹处于同一目录级别,并且只从应用程序引用它们。Android Studio是如何做到这一点的?在Eclipse中,您只需添加来自项目属性的引用。此外,如何在Android Studio中导入库项目?我想将每个库作为单独的项目导入,并分别构建它们

有关于这方面的好教程吗?我对Eclipse有很多经验,但我对Gradle是完全陌生的

以下是我的意思的一个例子:

我有两个项目,ProjectA和ProjectB。他们都使用我、LibA和LibB开发的一些库项目。所有4个项目都在同一个名为Applications的文件夹下-因此这两个库是通用的,如果我更改其中一个,我只需要重新编译这两个项目。将ProjectA导入Android Studio(具有最新版本)后,导入过程创建了以下结构。在基本文件夹studioapplications下,我有一个名为ProjectA的项目文件夹。在文件夹ProjectA下,我有另一个文件夹ProjectA(主要项目文件所在的位置)和另外两个文件夹LibA和LibB。我想要的是分别导入两个库项目(作为Android Studio中的库项目),并且在主应用程序文件夹下只有ProjectA文件夹(以及其余的标准gradle文件夹,即,.gradle、.idea、build等)


如何做到这一点?我需要两件事:首先,将一个库项目从Eclipse导入Android Studio,然后导入一个项目,但不要将库复制到项目路径下,而是引用它们。

只需导入没有项目库的应用程序(我假设库在maven中可用)

之后,您只需要在gradle文件中添加依赖项

// your gradle file inside your app folder
dependencies {
    compile 'com.squareup.okhttp:okhttp:2.3.0' // example of importing okhttp
    compile 'com.facebook.android:facebook-android-sdk:4.1.1' // example importing facebook sdk
    compile project(':name_of_local_project') // local project
}
如果要包含另一个文件夹的项目(不同的项目)

将此添加到
设置中。渐变

project(':module1').projectDir = new File(settingsDir, '../another_path')

这是一种更简单的方法,您可以在不做太多工作的情况下更新库

问题是我还为库模块启用了proguard。Proguard正在混淆库模块中的类名和函数名,在引用它们的应用程序中找不到它们。移动/合并应用程序中的proguard文件是解决方案。

您使用的库是什么?大多数都在.aar中,在maven central中提供。您需要在android studioI中配置build.gradle。我已经对我的原始问题进行了解释,它应该可以清楚地说明问题。有些库来自Google,例如SlidingMenu库,有些是我在Eclipse中开发的库,所以它们是标记为库的标准Eclipse项目。在.aar和maven central中可用是什么意思?你能解释一下吗?如何在Android Studio中配置build.gradle文件?但是如果我在Android Studio中打开了我的主应用程序,如何导入库?我应该如何处理已经导入到应用程序文件夹下的文件(当我将主项目从Eclipse导入到Android Studio时会发生这种情况-每个库项目都复制到主应用程序文件夹下)。请注意,我已经输入了关于我的原始问题的解释,它应该能够清楚地说明问题。我已经编辑了我的答案,如果您想包含本地lib,可以使用compile-project cmd来实现,但是如果我希望公共库模块/项目位于主应用程序的路径之外(以便它可以被多个应用程序使用),则上述操作不应起作用。我认为解决方案就是这里描述的:为了让导入的模块被使用它的应用程序“识别”,我需要做什么?上面的方法可以工作,我可以看到导入的模块与应用程序处于同一级别(根),但是在构建模块时,主应用程序引用的导入模块中的任何类都无法识别。我已经检查了应用程序中对它的引用,它看起来还可以。