从Eclipse迁移到Android Studio

本文详细介绍了如何将项目从Eclipse迁移到Android Studio,包括安装、导入Eclipse项目、解决so库支持问题、处理META-INF文件重复、动态设置编译版本号以及APK签名配置等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本博客与RayXXZhang的博客保持同步更新,转载请注明来自RayXXZhang的博客-从Eclipse迁移到Android Studio

Android Studio发布正式版后,Google的重心转向AS,以后可能也会逐步停止对Eclipse的支持,而且目前开源项目有很多以及不支持Eclipse。因此决心将项目转到Android Studio进行开发。

安装

Android Studio的安装需要联网并且下载Android SDK和gradle等等才能使用。
同时AS的使用需要配合相应位数的JDK,并且JDK的路径需要设置到JAVA_HOME环境变量。

AS的安装包大约300-400MB,但安装好后加上SDK等等其他依赖,占用空间可能达到8GB以上。
因此如果能获取到AS安装后的文件也可以直接复制使用。复制时需要复制Android Studio安装文件夹,SDK文件夹,以及个人目录下的.gradle和.androidstudiox.y文件夹,其中x.y为AS的版本号,其中存放着AS的配置。

导入

Eclipse项目迁移到AS的第一步是更新Eclipse的AJDT插件,然后在文件菜单选择导出,将Eclipse工程导出成AS工程。导出后会在目录下生成build.gradle文件,
然后在AS选择导入非AS工程的选项即可导入,第一次使用由于需要分析构建整个项目,所以速度会比较慢。

注意事项

so库的支持

如果是纯java的项目,导入后就基本能编译运行了,如果项目中还依赖so库,
可以通过在build.gradle文件中添加jniLibs.srcDirs = [‘so文件的目录’]来导入so库

android {
    // 其他配置
    sourceSets {
        main {
            //其他配置
            jniLibs.srcDirs = ['libs']
        }
    }
}

META-INF中文件重复的问题

有些第三方库会在META-INF文件夹中放一些版权说明的文件,如果不止一个库在放了同名的文件,
在打包时gradle就无法决定应META-INF文件夹中应该使用哪个文件。

这种情况下,可以通过在build.gradle文件中排除这些文件来解决。
版权文件的文件名通常是LICENSE, NOTICE, license.txt, notice.txt之一。
因此可以通过如下配置排除:

android {
    // 其他配置
    packagingOptions {
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/license.txt'
        exclude 'META-INF/notice.txt'
        // 还可添加其他要排除的文件
    }
}

该方法也可以用于排除其他不想被打包到APK里的文件。

小技巧

动态设置编译版本号

build.gradle文件中可以设置编译出的APK的版本号,如果设置了版本号,则会覆盖Manifest.xml中设置的版本号。

这样,就给我们提供了一个动态修改编译版本号的方法。如果版本控制使用了SVN,就可以通过编写如下函数来实现动态获取SVN版本号和编译时间:


def getVersionCode = {
    try {
        def code = new ByteArrayOutputStream()
        exec {
            commandLine '用于获取版本号的命令'
            standardOutput = code
        }
        return Integer.valueOf(code.toString().split("\r\n")[0])
    }
    catch (ignored) {
        return 0;
    }
}
def getVersionName = {
    try {
        def code = new ByteArrayOutputStream()
        exec {
            commandLine '用于获取版本号的命令'
            standardOutput = code
        }
        def date = new ByteArrayOutputStream()
        exec {
            commandLine '用于获取编译时间的命令'
            standardOutput = date
        }
        return code.toString().split("\r\n")[0] + "." + date.toString().split("\n")[0]
    }
    catch (ignored) {
        return "";
    }
}

android {
    updateSVNInfo()
    defaultConfig {
        versionCode getVersionCode()
        versionName getVersionName()
        minSdkVersion 8
        targetSdkVersion 23
    }

APK签名配置

在Eclipse里debug版本的签名只能使用默认的签名,而在Android Studio中可以通过build.gradle来配置签名所使用的证书:

android {
    // 其他配置
    signingConfigs {
        debug {
            storeFile file("签名密钥路径")
            keyAlias '密钥Alias'
            keyPassword '密钥密码'
            storePassword '存储密码'
        }
        // 可以指定其他编译类型的配置,如release
    }
}

配置debug和release使用一样的签名就避免了在debug和release混合安装的时候出现签名错误需要重新卸载后再安装的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值