我有一个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构建。
我已经阅读了这些内容,虽然有用但我真的不能回答我的问题:
和
谢谢!
更新
所以经过大量的游戏后,我终于升级了模块和库,显然(我需要做很多测试)才有效。不确定这是否会在将来的任何时候拯救任何人,但关键似乎是:
请注意您带入哪些模块和哪个版本的模块,以及它们是否兼容。该工具做了一个不错的警告工作,但如果你带来了整个游戏服务,我会建议拉进来,因为这是我的不兼容性来自的地方。现在看来是这样的:
申请插件:' 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'
}
对于那些发现整个支持库令人困惑和混乱(为什么会有人这么想?)的人来说,这个博客非常有帮助:
http://martiancraft.com/blog/2015/06/android-support-library/
还要感谢Gabriele Mariotti指出我正确的方向。我将在另一个问题中将White Labeling转换为Gradle。如果我这一切都不正确,请发出声音......我将是第一个承认这一切都非常令人困惑的人!
答案 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中转换你的蚂蚁脚本。这会更容易。