如何将库项目添加到Android Studio?


796

如何将库项目(例如Sherlock ABS)添加到Android Studio

(不是旧的基于ADT Eclipse的捆绑包,而是新的Android Studio。)


28
是的,弄清楚这一点比原本应该更加令人困惑……不像日食那样好。
丹尼尔·史密斯

4
YouTube视频“ 如何向Android Studio添加库”介绍了该过程。

2
如果您正在使用Gradle,请参见此StackOverflow答案
2014年

2
这是一段我发现非常有用的视频:youtube.com/watch?v=1MyBO9z7ojk
Simon

Answers:


717

Android Studio 1.0更新

自从发布Android Studio 1.0(以及许多版本在v1.0到我上次回答之时的第一个版本)以来,某些事情已经发生了变化。

我的描述着重于通过Gradle文件手动添加外部库项目(以更好地理解过程)。如果你想添加使用Android工作室的创建者库只是检查答案下面视觉引导(有过Android Studio 1.0和从截图之间存在一些差异,但这个过程是非常相似)。

在开始手动将库添加到项目之前,请考虑添加外部依赖项。它不会弄乱您的项目结构。Maven存储库中几乎每个知名的Android库都可用,并且其安装仅需要app/build.gradle文件中的一行代码:

dependencies {
     compile 'com.jakewharton:butterknife:6.0.0'
}

添加库

这是将外部Android库添加到我们的项目的完整过程:

  1. 通过Android Studio创建者创建一个新项目。我将其命名为HelloWorld
  2. 这是Android Studio创建的原始项目结构:
HelloWorld/
      app/
           - build.gradle  // local Gradle configuration (for app only)
           ...
      - build.gradle // Global Gradle configuration (for whole project)
      - settings.gradle
      - gradle.properties
      ...
  1. 在根目录(HelloWorld/)中,创建一个新文件夹:/libs我们将在其中放置外部库(不需要此步骤-仅用于保持更干净的项目结构)。
  2. 将您的库粘贴到新创建的/libs文件夹中。在此示例中,我使用了PagerSlidingTabStrip库(只需从GitHub下载ZIP,将库目录重命名为“ PagerSlidingTabStrip”并复制它),这是我们项目的新结构:
HelloWorld/
      app/
           - build.gradle  // Local Gradle configuration (for app only)
           ...
      libs/
           PagerSlidingTabStrip/
                - build.gradle // Local Gradle configuration (for library only)
      - build.gradle // Global Gradle configuration (for whole project)
      - settings.gradle
      - gradle.properties
      ...
  1. 通过将库添加到来编辑settings.gradle include。如果像我一样使用自定义路径,则还必须为我们的库定义项目目录。整个settings.gradle应该如下所示:

    include ':app', ':PagerSlidingTabStrip'
    project(':PagerSlidingTabStrip').projectDir = new File('libs/PagerSlidingTabStrip')

5.1如果您遇到“默认配置”错误,请尝试执行此操作,而不是执行步骤5,

    include ':app'
    include ':libs:PagerSlidingTabStrip'
  1. app/build.gradle添加我们的库项目作为依赖项时:

    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile 'com.android.support:appcompat-v7:21.0.3'
        compile project(":PagerSlidingTabStrip")
    }

6.1。如果您执行了步骤5.1,请遵循此步骤(而不是6)

    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile 'com.android.support:appcompat-v7:21.0.3'

        compile project(":libs:PagerSlidingTabStrip")
    }
  1. 如果您的图书馆项目没有build.gradle文件,则必须手动创建它。这是该文件的示例:

        apply plugin: 'com.android.library'
    
        dependencies {
            compile 'com.android.support:support-v4:21.0.3'
        }
    
        android {
            compileSdkVersion 21
            buildToolsVersion "21.1.2"
    
            defaultConfig {
                minSdkVersion 14
                targetSdkVersion 21
            }
    
            sourceSets {
                main {
                    manifest.srcFile 'AndroidManifest.xml'
                    java.srcDirs = ['src']
                    res.srcDirs = ['res']
                }
            }
        }
  2. 此外,您可以为项目创建全局配置,其中将包含SDK版本和每个模块的构建工具版本,以保持一致性。只需编辑gradle.properties文件并添加行:

    ANDROID_BUILD_MIN_SDK_VERSION=14
    ANDROID_BUILD_TARGET_SDK_VERSION=21
    ANDROID_BUILD_TOOLS_VERSION=21.1.3
    ANDROID_BUILD_SDK_VERSION=21

    现在,您可以在build.gradle文件中(在应用程序和库模块中)使用它,如下所示:

    //...
    android {
        compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION)
        buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION
    
        defaultConfig {
            minSdkVersion Integer.parseInt(project.ANDROID_BUILD_MIN_SDK_VERSION)
            targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION)
        }
    }
    //...
  3. 就这样。只需单击“与Gradle”图标同步项目与Gradle同步。您的库应该在您的项目中可用。

Google I / O 2013-新的Android SDK构建系统是有关使用Gradle构建系统构建Android应用的精彩演示:正如Xavier Ducrohet所说:

Android Studio全部涉及编辑,调试和性能分析。它不再是要构建的。

刚开始时可能有些混乱(特别是对于那些使用Eclipse并从未见过像我这样的蚂蚁的人;)),但最终Gradle为我们提供了一些绝佳的机会,值得学习这个构建系统。


6
嘿,您完全解释了真正的问题。投票支持您的答案,以便其他人可以看到。对我不利的一件小事是在依赖项的build.gradle中引用支持库。事实证明':Project / libs ...'由于某种原因没有起作用。我不得不取消项目标识。所以“ libs / ...”。它编译良好。需要注意的是,这两种引用路径或项目的方式令人困惑。我希望将来有一个简单统一的方案。没有理由无法解决原始解决方案。
胜利者。

9
+1。为此苦苦挣扎了很长时间。正如胜利者n所说,从actionbarsherlock模块引用主项目的支持jar无效。我必须执行以下操作才能使其工作...(1 从项目的build.gradle中删除编译文件('libs / android-support-v4.jar')。主模块应该只具有compile project(“:libraries:actionbarsherlock”)。(2)在actionbarsherlock的build.gradle中添加编译文件('libs / android-support-v4.jar')而不是编译文件(':HelloWorld / libs / android-support-v4.jar')
Akbar易卜拉欣

3
在哪里Global libraries(#10:“现在去全球图书馆”)?除此之外,它还可以按照描述的那样工作:)非常感谢。(我希望Google能够做到这一点-目前如此简单的任务非常艰巨)
Konrad Morawski 2013年

8
为什么在我指导的选项中没有“导入模块”部分?我正在使用Android Studio 0.3.1
alicanbatur 2013年

5
缺少导入模块选项!!
amalBit 2014年

274

这是视觉指南:

Android Studio 0.8.2 更新

在Android Studio 0.8.2中,转到“ 模块”下的“ 项目结构” -> ,单击加号按钮,然后选择“ 导入现有项目”并导入。然后同步您的Gradle文件。actionbarsherlock

如果遇到错误

错误:SDK Build Tools版本(xx.xx)太低。最低要求是yy.yy

只需打开目录中的build.gradle文件actionbarsherlock并将其更新buildToolsVersion为建议的文件即可。

android {
  compileSdkVersion 19
  buildToolsVersion 'yy.y.y'

Android Studio 0.8.2


菜单文件 -> 项目结构...

第一

模块 -> 导入模块

第二

导入库模块后,选择您的项目模块并添加依赖项:

第三

然后选择导入的模块

向前


31
导入模块选项在Android Studio4.3中不可用
amalBit

3
我进行这项工作并解决软件包未发现错误的关键是步骤Select your project module and add dependency dependencies { // ... compile project(':library') }
toobsco42 2014年

7
这将复制库模块在您的项目,这是不是你想要的,如果你想几个项目之间共享一个通用的代码库
雷米DAVID

@amalBit是...你是未来的人吗?但是,认真的说,他们需要像在Eclipse ADT中一样简单。谁想访问第三方存储库并将(可能)任意代码编译到每个版本中?这严重破坏了质量检查和代码冻结协议
CCJ 2015年

在Android Studio 0.4.3的Beta版本中,它可以追溯到很早以前。至于加入第3方回购协议,请输入ID,避免使用+。只需指定您想要的版本。如果您仍然不能足够信任它,则可以创建任何回购的jar(或克隆)并使用它。
amalBit

111

使用菜单文件 -> 项目结构 -> 模块

我今天开始使用它。有点不同。

对于Sherlock,也许您想删除其测试目录,或将junit.jar文件添加到类路径。

要使用gradle导入库,您必须将其添加到模块的dependencies部分 build.gradle

例如

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.1.0'
    compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
}

Android Studio正在改变。

如果在Android Studio的项目部分中右键单击模块文件夹,则存在一个名为“打开模块设置”的部分(我使用的是0.2.10版本)。


1
嗯,它仍然显示android-apt-compiler:styles.xml:5:错误:检索项目父项时出错:没有找到与给定名称'Theme.Sherlock.Light.DarkActionBar'匹配的资源。
2013年

在Sherlock Module-> Dependecies下,我有android 4.2.2和支持库v4
Blackbelt

在运行按钮旁边的@ρяσsρєяK,带有Android标签。如果您在那里单击,则会找到“编辑配置”。推下“显示选配Dialg”目标设备的点击
黑带

7
嗨,我遇到了类似Alex的问题(“等级:检索项目的父项时出错:找不到与给定名称'Theme.Sherlock.Light'相匹配的资源。”)-Java依赖性似乎已正确解决,导致IDE不会怪我的SherlockActivity,但是由于某种原因,Gradle似乎并没有考虑ABS的资源。有任何想法吗?

4
在Android Studio 0.2.8上ModulesProject Structure窗口中没有任何部分。
Konrad Morawski 2013年

52

我认为有必要阅读Dependencies,Android Libraries和Multi-project设置。请花几分钟时间。

特别是在非jar库项目的情况下,请从上述来源阅读以下代码片段:

通过使用多项目设置,Gradle项目还可以依赖于其他gradle项目。多项目设置通常通过将所有项目作为给定根项目的子文件夹来工作。

例如,给出以下结构:

MyProject/
 + app/
 + libraries/
    + lib1/
    + lib2/

我们可以确定3个项目。Gradle将使用以下名称引用它们:

:app
:libraries:lib1
:libraries:lib2

每个项目都有自己的build.gradle声明如何构建。另外,在根目录将有一个名为settings.gradle的文件来声明项目。给出以下结构:

MyProject/
 | settings.gradle
 + app/
    | build.gradle
 + libraries/
    + lib1/
       | build.gradle
    + lib2/
       | build.gradle

settings.gradle的内容非常简单:

include ':app', ':libraries:lib1', ':libraries:lib2'

这定义了哪个文件夹实际上是一个Gradle项目。

:app项目可能依赖于库,这是通过声明以下依赖关系来完成的:

dependencies {
    compile project(':libraries:lib1')
}

请注意,几乎没有使用Android Studio GUI来实现这一目标。

我目前正在使用git子模块将嵌套库链接到实际库git repo以避免依赖混乱。


非常有帮助,更重要的是,不要玩当天的鬼话。
RichieHH 2014年

1
非常感谢您提供唯一有意义的答案。其他所有答案都是过时的,只是行不通。我什至没有尝试过弗吉尼亚理工大学的CS,因为整个头两年都在学习如何在日食中点击。它没有做任何fckn感,但看到gradle这个随机点击的结果在IDE中一样。
dcunited001 2014年

感谢git子模块的提示。我以前使用结,但是现在切换到SVN外部。奇迹般有效。
velis

25

我刚刚找到了一种更简单的方法(而不是直接写入.gradle文件)。

这适用于Android Studio 1.1.0。

  1. 菜单文件 -> 新模块...

    导入现有项目

    单击“导入现有项目”。

  2. 选择所需的库和所需的模块。

  3. 单击完成。Android Studio会将库导入到您的项目中。它将同步gradle文件。

  4. 将导入的模块添加到项目的依赖项中。

    右键单击应用程序文件夹->打开模块设置->转到依赖性选项卡->单击“ +”按钮->单击“模块依赖性”。

    然后将库模块添加到项目的依赖项中。

    添加库模块

  5. ???

  6. 利润


17

我发现包括外部库项目的最简单方法是(例如,包括一个Facebook库,该库存储在依赖文件夹中的一个目录中):

  1. 在settings.gradle中添加

    include ':facebook'
    
    project(':facebook').projectDir = new File(settingsDir, '../dependencies/FacebookSDK')
  2. 在build.gradle依赖项部分中,添加

    compile project ('facebook')

剩下要做的就是将项目与gradle文件同步。


维伦(

嗨拉吉尼斯。从文档:settingsDir返回构建的设置目录。设置目录是包含设置文件的目录。返回:设置目录。从不返回null。
维伦2015年

/ dependencies前的两个点更重要,需要多加关照。您的回答对我有很大帮助。.谢谢
Rajnish Mishra 2015年

注意:对于gradle中的字符串评估,您必须使用双引号(“)。对我来说,这是“保存一天”。与
Solata,2015年

15

一种将JAR文件作为库添加到Android Studio项目的简单方法:

a)复制您的* .jar文件

b)粘贴到 项目下 libs目录中:

在此处输入图片说明

c)添加到build.gradle:

dependencies {
    ...
    compile files('libs/ScanAPIAndroid.jar', 'libs/ScanAPIFactoryAndroid.jar', .., ..)
}

b)如果示例com.example.MYProject和库com.example.ScanAPI中的项目具有相同的命名空间com.example,则Android Studio将检查您的构建并在项目中创建所有必要的更改。之后,您可以在菜单文件中查看这些设置。 -> 项目结构

C) 如果您的项目和库具有不同的命名空间,则必须右键单击该库并选择选项“添加为库”,然后选择所需的类型。

请记住,在当前版本的Android Studio(0.2.3)中,“项目结构”选项未对“ build.gradle”进行任何自动更改。也许此功能将在下一版本中可用。


12

选项1:将文件拖放到项目的libs /目录中

然后,相关的build.gradle文件将自动更新。

选项2:手动修改build.gradle文件

打开build.gradle文件,并将新的构建规则添加到依赖项关闭中。例如,如果您想添加Google Play服务,则项目的依赖项部分将如下所示:

dependencies {
     compile fileTree(dir: 'libs', include: ['*.jar'])
     compile 'com.google.android.gms:play-services:6.5.+'
   }

选项3:使用Android Studio的用户界面

在“项目”面板中,Control+单击要向其添加依赖项的模块,然后选择“打开模块设置”。

在此处输入图片说明

选择“依赖关系”选项卡,然后选择左下角的+按钮。您可以从以下选项列表中进行选择:

  • 图书馆依赖
  • 文件依赖
  • 模块依赖

然后,您可以输入有关要添加到项目中的依赖项的更多信息。例如,如果选择“库依赖”,则Android Studio将显示库列表供您选择。

添加依赖项后,检查模块级别的build.gradle文件。它应该已经自动更新为包括新的依赖项。

资源


10

这就是我在Android Studio 1.5以上版本中的工作方式

在要添加外部库项目的项目中,转到菜单文件 -> 新建 -> *导入新模块**,导航到要添加到项目中的库项目,然后选择在其中添加“库”模块您的项目。您将在项目中的应用程序,附带的库旁边获得settings.gradle,如下所示:

include ':app', ':library'

在依赖项部分添加build.gradle(Module:app)

编译项目(':library')

重建项目,仅此而已。

*您可以根据需要添加任意数量的库(模块)。在这种情况下,settings.gradle中将具有:

 include ':app', ':lib1', ':lib2', ...

在build.gradle中,您需要具备:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])

    // Some other dependencies...

    compile project(':lib1')
    compile project(':lib2')
    ...
}

9

如果需要访问库项目的资源(如使用ABS一样),请确保将库项目/模块添加为“模块依赖项”而不是“库”。


9

您可以轻松做到这一点。转到菜单文件 -> 新建 -> 导入模块...

在此处输入图片说明

浏览包含该模块的目录。单击完成:

在此处输入图片说明

转到项目结构并添加模块依赖项

在此处输入图片说明

注意:如果收到SDK错误,请更新该错误。


1
在我看来,最简单,最快的方法至今仍然有效!
mrj

8
  1. F4显示项目结构,单击库或全局库,然后单击+添加JAR文件。
  2. 单击“模块” ,然后单击“ 添加”,选择“ 依赖关系”选项卡,单击“开始” +,然后添加“库”。

6

不建议通过GUI编辑库依赖项,因为这不会将这些更改写入build.gradle文件。因此,您的项目将不会从命令行构建。我们应该按如下所示直接编辑build.gradle文件。

例如,给出以下结构:

我的项目/

  • 应用/
  • 图书馆/
    • lib1 /
    • lib2 /

我们可以确定三个项目。Gradle将使用以下名称引用它们:

  1. :app
  2. :libraries:lib1
  3. :libraries:lib2

:app项目可能依赖于库,这是通过声明以下依赖关系来完成的:

dependencies {
    compile project(':libraries:lib1')
}

真?奇怪的是,它们具有整个GUI,但不建议这样做。为何如此?
2013年

由于通过GUI进行编辑不会将这些更改写入到build.gradle文件中。GUI编辑仅将更改保存在IntelliJ自己的项目数据中。目前,这是一个错误,将在将来的版本中修复。您可以参考Google Android-Studio团队负责人stackoverflow.com/questions/16678447/…的
Shakti Malik

5

要补充答案:如果IDE没有显示任何错误,但是在尝试编译时,您将得到类似以下内容的信息:

No resource found that matches the given name 'Theme.Sherlock.Light'

您的库项目可能被编译为应用程序项目。要更改此设置,请转到:

菜单文件 -> 项目结构 -> -> [库名称]->选中“库模块”。


5

第一种方式这适用于MacBook。

首先选择给定屏幕的builder.gradle文件:

在此处输入图片说明

添加依赖项,如在所选屏幕上所示:

在此处输入图片说明

选择同步项目。

如果遇到类似“ Project with path':signature-pad'在项目':app'中找不到”的错误,请使用第二种方法:

选择菜单文件 -> 新建 -> 导入模块...

在此处输入图片说明

点击导入模块后

在此处输入图片说明

给库的路径就像我的MacBook路径:

在此处输入图片说明

点击完成。现在,您的库已添加。


4

导入ABS模块(从“文件”>“项目结构”)并确保其具有Android 2.2和支持库v4作为依赖关系之后,由于您@Alex,我仍然遇到以下错误

Error retrieving parent for item: No resource found that matches the given name 'Theme.Sherlock.Light.DarkActionBar'

我将新导入的模块作为依赖项添加到我的主应用程序模块中,从而解决了该问题。


我尝试了所有步骤,包括将模块添加为依赖项,但是我仍然有Gradle: Error retrieving parent for item: No resource found that matches the given name 'Theme.Sherlock.Light'.。似乎我的主项目没有看到图书馆项目(ABS)的资源。但是,IDE确实可以识别对类和资源的引用。截屏
christiaanderidder

我从12迁移到IDEA 13,并且也有此错误。仅重新导入所有依赖项会有所帮助。手动删除所有模块,删除相关的* .iml文件,然后重新导入您的库
Dmitriy Tarasov

4

Android Studio 3.0

只需将库名称添加到应用程序的build.gradle文件的依赖项块中即可

dependencies {
    // ...
    implementation 'com.example:some-library:1.0.0'
}

请注意,您应该使用implementation而不是compile现在。这是Android Studio 3.0的新增功能。有关差异的说明,请参见此问答


这实际上是Gradle 4中的更改,而不是Android Studio 3中的更改。com.android.tools.build:gradle:2.3.3如果要继续使用“编译”,则可以继续使用而不是Android Studio 3中的3.0.0。
chauduyphanvu

3

要解决此问题,只需将abs资源路径添加到项目构建文件中,如下所示:

sourceSets {
    main {
        res.srcDirs = ['src/main/res','../../ActionBarSherlock/actionbarsherlock/res']
    }
}

因此,我再次编译没有任何错误。


3

如果您拥有Android Studio .0.4.0,则可以在构建路径中创建一个新文件夹YourApp/libraries。复制JAR文件。在其中,右键单击它,然后单击“添加为库”。现在您有一个弹出窗口。只需选择您的目录,然后按OK,就可以了。


3

只需将Android库项目作为模块导入并在Build.gradle中

应用插件:“ com.android.library”

之后,请按照下列步骤操作:

  1. 右键单击模块并选择打开的模块设置
  2. 选择依赖项,单击+,选择库依赖项,然后添加先前导入的模块。


2

我找到了解决方案。很简单 遵循froger_mcs的说明

确保在项目结构->模块(源)中将src文件夹设置为Source文件夹

在此处输入图片说明


2

基本上,您可以通过三种不同的方式包含JAR文件。最后一个是使用https://bintray.com/ jcenter在线存储库的远程库。但是,如果以其他两种方式之一进行操作,则JAR文件将实际包含在您的项目中。请阅读此链接https://stackoverflow.com/a/35369267/5475941了解更多信息。在这篇文章中,我解释了如何在Android Studio中导入JAR文件,并解释了所有可能的方法。

总之,如果是这样(本地地址),则将它们下载,并且这些JAR文件实际上在项目中:

在此处输入图片说明

但是,如果它是这样的Internet地址,它们就是远程库(bintray.com jcenter部分),它们将被远程使用:

在此处输入图片说明

希望对您有所帮助。


2

打开构建gradle模块应用程序文件并添加您的依赖项。如果下载该库,则只需导入并构建为gradle。

否则,在侧面gradle模块应用程序中添加存储库:

repositories {
        maven { url 'http://clinker.47deg.com/nexus/content/groups/public' }
}

第一个存储库将为您下载该库。

并编译下载的库:

 compile ('com.fortysevendeg.swipelistview:swipelistview:1.0-SNAPSHOT@aar') {
        transitive = true
    }

如果要创建库,则只需将项目作为导入新模块导入。


2

对于问题,我有不同的原因,对人们来说:

repositories {
    mavenCentral()
}

将mavenCentral()更改为jcenter()并添加

allprojects {
    repositories {
        jcenter()
    }
}

1

在Android Studio中,转到“内部”应用程序文件夹,然后打开build.gradle文件。在这里,您将看到依赖性{}。在其中,您可以添加库项目并进行同步。现在,在同步库之后,它将被添加到您的项目中,并且您可以在项目中使用其功能和类。


1

对于Android Studio:

在此处输入图片说明

单击Build.gradle(模块:app)

并添加

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile files('libs/commons-io-2.4.jar')
}

并在目录“ app”中创建目录“ libs”。添加文件yourfile.jar:

在此处输入图片说明

最后,编译Gradle文件:

在此处输入图片说明


0

我也遇到了同样的问题,然后我做了以下事情。

  1. 我使用菜单文件 ->导入模块菜单将库项目作为模块导入到AndroidStudio IDE中

  2. 然后我进入了我的主模块,在该模块中我希望库项目是一个从属项目。

  3. 右键单击主模块(在我的情况下,其名称为app)->打开模块设置->进入“依赖项”选项卡->单击+按钮(您将在窗口的右侧看到它)->单击模块依赖项- >从列表中选择您的图书馆项目

应用更改,然后单击OK按钮。

它为我工作。我希望它也会对其他人有帮助。



-1

实际上,随着版本的改变,用户界面和菜单上可用选项的改变也随之改变。阅读了这些问题的大部分答案之后,我不得不猜测什么适用于Android Studio 1.1.0

  1. 用鼠标在主级别上选择项目(在此处显示应用程序的名称)。

  2. 右键单击,然后选择菜单选项新建,文件夹,资产文件夹

  3. 创建资产文件夹后,将其粘贴或复制到库中,无论您需要使用什么JAR文件。

  4. 从Android Studio的主菜单(屏幕顶部)中,选择File- > Project Structure

  5. 然后选择您的项目名称并转到Dependencies选项卡。

  6. 单击+对话框左下方的加号(),然后选择文件相关性。

  7. 最后,打开最近创建的资产文件夹,选择您复制的JAR文件,然后单击Apply和OK

清理并重建您的项目。


1
复制资产中的罐子不是一个好主意,它将不必要地增加apk大小
Rajnish Mishra 2015年

感谢您的建议@RajnishMishra。我对此表示怀疑,但是您有什么建议呢?
monn3t 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.