从Eclipse移植和升级Android库

时间:2017-08-09 21:46:47

标签: android gradle android-support-library

我有一个Android应用程序,我们已经在Eclipse中构建了多年,我最终将它移植到Android Studio(我是Android Studio和Gradle的新手,所以请原谅我的无知)。我已成功移植它并且应用程序在Android Studio中启动并运行,但现在需要克服更多障碍:

  1. 我想升级已弃用的方法,并转移到最新版本的支持库,Google服务和GSon(如果需要,我想我可以在不升级GSon的情况下继续使用)。

  2. 为了使问题复杂化,我们有一个基于Ant的构建,它接受源代码并生成许多应用程序的白标签实例,并有一些相当复杂的替换。我打算保留这一点 - 我现在还不想Gradle(并且不确定Gradle能否处理它?)。

  3. 所以,首先看起来我的端口生成的Gradle具有如下依赖关系:

    apply plugin: 'com.android.application'
    android {
        compileSdkVersion 23
        buildToolsVersion "25.0.2"
    
        defaultConfig {
                applicationId "com.mydomain.myapp"
                minSdkVersion 14
                targetSdkVersion 23
                compileOptions {
                    sourceCompatibility JavaVersion.VERSION_1_7
                    targetCompatibility JavaVersion.VERSION_1_7
                }
            }
    
            buildTypes {
                release {
                    minifyEnabled false
                    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
                }
            }
        }
    
        dependencies {
            compile 'com.android.support:support-v4:23.4.0'
            compile 'com.google.code.gson:gson:2.2.4'
            compile 'com.google.android.gms:play-services:+'
            [....other dependencies that don't matter here....]
        }
    

    我的问题是:我是否还需要在这里使用这些库的升级版本,还是通过添加Gradle来运行Android Studio?如果没有列出的lib依赖项,我怎样才能让Ant构建一旦我创建它们就选择这些升级?我确实有一个更复杂的地方,我认为生成的源代码结构与Eclipse不同,但我认为我可以相应地调整Ant构建。

    我已经阅读了这些内容,虽然有用但我真的不能回答我的问题:

    Android white labeling

    Android App White Labeling

    谢谢!

    更新

    所以经过大量的游戏后,我终于升级了模块和库,显然(我需要做很多测试)才有效。不确定这是否会在将来的任何时候拯救任何人,但关键似乎是:

    1. 匹配compileSdkVersion和buildToolsVersion版本。
    2. 尽可能匹配com.android.support:support以及编译和工具版本。
    3. 对于支持库,选择minSDK版本下面的版本(在我的情况下是14,所以我选择了v13)。我可能在那里做错了,但这就是让它为我工作的原因。
    4. 请注意您带入哪些模块和哪个版本的模块,以及它们是否兼容。该工具做了一个不错的警告工作,但如果你带来了整个游戏服务,我会建议拉进来,因为这是我的不兼容性来自的地方。现在看来是这样的:

      申请插件:' com.android.application'     android {     compileSdkVersion 25     buildToolsVersion' 25.0.2'

      defaultConfig {
          applicationId "com.mydomain.myapp"
          minSdkVersion 14
          targetSdkVersion 23
          compileOptions {
              sourceCompatibility JavaVersion.VERSION_1_7
              targetCompatibility JavaVersion.VERSION_1_7
          }
      }
      
      buildTypes {
          release {
              minifyEnabled false
              proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
          }
      }
      }
      
      dependencies {
          compile 'com.google.android.gms:play-services-maps:11.0.4'
          compile 'com.android.support:support-v13:25.3.1'
          compile 'com.google.code.gson:gson:2.7'
      }
      
    5. 对于那些发现整个支持库令人困惑和混乱(为什么会有人这么想?)的人来说,这个博客非常有帮助:

      http://martiancraft.com/blog/2015/06/android-support-library/

      还要感谢Gabriele Mariotti指出我正确的方向。我将在另一个问题中将White Labeling转换为Gradle。如果我这一切都不正确,请发出声音......我将是第一个承认这一切都非常令人困惑的人!

1 个答案:

答案 0 :(得分:1)

  

我的问题是:我是否还需要在这里使用这些库的升级版本,还是通过添加Gradle来运行Android Studio?

compile 'com.android.support:support-v4:23.4.0'
compile 'com.google.android.gms:play-services:+'
  • 使用最新版本总是一个好主意

  • 您应该避免在依赖项中使用通配符+,因为这样您就无法在不同的时间复制相同的构建(因为它会在时间上发生变化)。

  • 使用相同版本的支持库。 gms库与support-v4具有依赖关系,您应该使用相同的版本。

  • 拥有所有gms模块(com.google.android.gms:play-services)并不是一个好主意。您只能添加所需的模块。

  

如果没有列出的lib依赖项,我怎样才能让Ant构建一旦我制作它们就选择这些升级?

这不是那么简单。在我看来,你应该在gradle中转换你的蚂蚁脚本。这会更容易。