从 Eclipse 移植和升级 Android 个库
Porting from Eclipse and Upgrading Android Libraries
我有一个 Android 应用程序,多年来我们一直在 Eclipse 中构建它,我终于将它移植到 Android Studio(我是 Android Studio 的新手并且 Gradle,所以请原谅我的无知)。我已经成功移植它并且应用程序已启动并且 运行 在 Android Studio 中,但现在需要克服更多的障碍:
我想升级已弃用的方法,并移动到最新版本的支持库、Google 服务和 GSon(如果需要,我想我可以不升级 GSon)。
使事情复杂化的是,我们有一个基于 Ant 的构建,它获取源代码并生成大量白标签应用程序实例,并进行一些相当复杂的替换。我打算保留它 - 我现在还不想 Gradle(并且不确定 Gradle 可以处理吗?)。
因此,首先看起来我的 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 构建。
我已经阅读了这些内容,虽然确实有帮助但并没有完全回答我的问题:
和
谢谢!
更新
经过大量尝试,我终于升级了模块和库,显然(我需要做大量测试)可以正常工作。不确定这是否会在未来任何时候拯救任何人,但关键似乎是:
- 匹配compileSdkVersion和buildToolsVersion版本。
- 尽可能匹配 com.android.support:support and compile and tools 版本。
- 对于 Support lib,选择刚好低于您的 minSDK 版本的版本(在我的例子中是 14,所以我选择了 v13)。我可能在那里错了,但这就是它对我有用的原因。
请注意您引入的模块和模块的版本,并且它们是兼容的。该工具在警告方面做得不错,但是如果您要引入整个播放服务,我建议您引入各个部分,因为那是我的不兼容性的来源。这是现在的样子:
应用插件:'com.android.application'
android{
编译SDK版本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'
}
对于发现整个支持库令人困惑和一团糟的人(为什么会有人这么想?)这个博客非常有帮助:
http://martiancraft.com/blog/2015/06/android-support-library/
还要感谢 Gabriele Mariotti 为我指明了正确的方向。我将在另一个问题中解决白标转换为 Gradle 的问题。如果我有这一切不正确请插话...我将是第一个承认这一切都非常混乱!
My question is : do I still need to have the upgraded versions of these libs here or is this done via a Gradle addition for running out 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)
。您可以只添加所需的模块。
And if not by lib dependencies as listed, how can I have the Ant build pick these upgrades once I make them?
没那么简单。在我看来,您应该在 gradle 中转换您的 ant 脚本。这样会更容易。
我有一个 Android 应用程序,多年来我们一直在 Eclipse 中构建它,我终于将它移植到 Android Studio(我是 Android Studio 的新手并且 Gradle,所以请原谅我的无知)。我已经成功移植它并且应用程序已启动并且 运行 在 Android Studio 中,但现在需要克服更多的障碍:
我想升级已弃用的方法,并移动到最新版本的支持库、Google 服务和 GSon(如果需要,我想我可以不升级 GSon)。
使事情复杂化的是,我们有一个基于 Ant 的构建,它获取源代码并生成大量白标签应用程序实例,并进行一些相当复杂的替换。我打算保留它 - 我现在还不想 Gradle(并且不确定 Gradle 可以处理吗?)。
因此,首先看起来我的 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 构建。
我已经阅读了这些内容,虽然确实有帮助但并没有完全回答我的问题:
和
谢谢!
更新
经过大量尝试,我终于升级了模块和库,显然(我需要做大量测试)可以正常工作。不确定这是否会在未来任何时候拯救任何人,但关键似乎是:
- 匹配compileSdkVersion和buildToolsVersion版本。
- 尽可能匹配 com.android.support:support and compile and tools 版本。
- 对于 Support lib,选择刚好低于您的 minSDK 版本的版本(在我的例子中是 14,所以我选择了 v13)。我可能在那里错了,但这就是它对我有用的原因。
请注意您引入的模块和模块的版本,并且它们是兼容的。该工具在警告方面做得不错,但是如果您要引入整个播放服务,我建议您引入各个部分,因为那是我的不兼容性的来源。这是现在的样子:
应用插件:'com.android.application' android{ 编译SDK版本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' }
对于发现整个支持库令人困惑和一团糟的人(为什么会有人这么想?)这个博客非常有帮助:
http://martiancraft.com/blog/2015/06/android-support-library/
还要感谢 Gabriele Mariotti 为我指明了正确的方向。我将在另一个问题中解决白标转换为 Gradle 的问题。如果我有这一切不正确请插话...我将是第一个承认这一切都非常混乱!
My question is : do I still need to have the upgraded versions of these libs here or is this done via a Gradle addition for running out 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)
。您可以只添加所需的模块。
And if not by lib dependencies as listed, how can I have the Ant build pick these upgrades once I make them?
没那么简单。在我看来,您应该在 gradle 中转换您的 ant 脚本。这样会更容易。