android studio与eclipse_androidstudio源码网

2022-11-09 10:17:46 浏览数 (3)

大家好,又见面了,我是你们的朋友全栈君。

以前公司的老项目,是使用eclipse进行开发的,虽然android studio出来了很久,但为了避免迁移会有一些问题,一直忍着没改,但最近谷歌公司上架有要求,要求android的项目要用android 8.0来编译,然后就发现eclipse ADT已经不支持jdk 1.8还有android 8.0,运行就会有问题,有类似unsported 52.0,还有各种莫名其妙的错误,比如无法识别27,然后搜了一些博客,说下载两个插件就可以,然后我试着到应用市场下载,下载第一个插件没问题,但第二个问题加载到15个的时候,就会一直报错,无法解决,然后想着还不如狠下心来迁移到android studio里面,所以就有了如下的坑:

1.第一个问题就是eclipse开发的android项目,如何变成android studio的项目,有两种方式,我用的是File->Export->Generate Gradle build files然后一直下一步,选择你要导出的项目(不用管依赖项目,会自动导出的):还有另外一种方式是不用修改eclipse的工程,然后打开android studio,选中import project(eclipse ADT..),不过:注意这种方式导入进来的话,会有很多的问题,如果你引用了很多外部的jar包,会遇到很多乱七八糟的问题,我就是一开始由于解决不了,放弃转android studio,还好使用了eclipse生成gradle项目,直接用android studio打开,避免了一些问题.

2.第2步,对了android studio最好是使用最新的3.1.4:使用android studio打开了eclipse android的项目,会遇到一些gradle版本需要重新下载的问题,这些好解决,打开avd managment,下载,点击sync 同步一下,就可以自动下载,最新的android studio会帮你解决很多谷歌的资源无法访问的问题,应该是内部做了很多的代理设置,以前用eclipse都是需要设置一个代理/镜像网址才行的.

3.第3个问题:如果你项目中引用了so文件的话,自动生成android studio项目,运行会报错,如下的错误,一般都是由于你的android studio的build.gradle中没有引用这个libs下armeabi的so文件,你需要增加如下代码在build.gradle:

4.第三步之后,项目可以正常在手机上运行了,不过接下来想发布release版本,就遇到问题了,以前在eclipse打签名包,很简单引入keystore文件就可以了,迁移到android studio中,改用他的签名方式,jks,发现有很多奇怪的错误,debug的签名包是不会报错:

代码语言:javascript复制
Could not find org.jetbrains.kotlin:kotlin-reflect:1.2.41.
Searched in the following locations:
  - file:/E:/android/adt-bundle-windows-x86-20130917/sdk/extras/m2repository/org/jetbrains/kotlin/kotlin-reflect/1.2.41/kotlin-reflect-1.2.41.pom
  - file:/E:/android/adt-bundle-windows-x86-20130917/sdk/extras/m2repository/org/jetbrains/kotlin/kotlin-reflect/1.2.41/kotlin-reflect-1.2.41.jar
  - file:/E:/android/adt-bundle-windows-x86-20130917/sdk/extras/google/m2repository/org/jetbrains/kotlin/kotlin-reflect/1.2.41/kotlin-reflect-1.2.41.pom
  - file:/E:/android/adt-bundle-windows-x86-20130917/sdk/extras/google/m2repository/org/jetbrains/kotlin/kotlin-reflect/1.2.41/kotlin-reflect-1.2.41.jar
  - file:/E:/android/adt-bundle-windows-x86-20130917/sdk/extras/android/m2repository/org/jetbrains/kotlin/kotlin-reflect/1.2.41/kotlin-reflect-1.2.41.pom
  - file:/E:/android/adt-bundle-windows-x86-20130917/sdk/extras/android/m2repository/org/jetbrains/kotlin/kotlin-reflect/1.2.41/kotlin-reflect-1.2.41.jar
  - https://dl.google.com/dl/android/maven2/org/jetbrains/kotlin/kotlin-reflect/1.2.41/kotlin-reflect-1.2.41.pom
  - https://dl.google.com/dl/android/maven2/org/jetbrains/kotlin/kotlin-reflect/1.2.41/kotlin-reflect-1.2.41.jar
Required by:
    project : > com.android.tools.lint:lint-gradle:26.3.0-alpha05
    project : > com.android.tools.lint:lint-gradle:26.3.0-alpha05 > com.android.tools:sdk-common:26.3.0-alpha05
    project : > com.android.tools.lint:lint-gradle:26.3.0-alpha05 > com.android.tools.lint:lint:26.3.0-alpha05
    project : > com.android.tools.lint:lint-gradle:26.3.0-alpha05 > com.android.tools.lint:lint-gradle-api:26.3.0-alpha05
    project : > com.android.tools.lint:lint-gradle:26.3.0-alpha05 > com.android.tools.lint:lint:26.3.0-alpha05 > com.android.tools.lint:lint-kotlin:26.3.0-alpha05
    project : > com.android.tools.lint:lint-gradle:26.3.0-alpha05 > com.android.tools.lint:lint:26.3.0-alpha05 > com.android.tools.lint:lint-checks:26.3.0-alpha05 > com.android.tools.lint:lint-api:26.3.0-alpha05

还有各种乱七八糟的错误,这个错误怎么也解决不了,后来将gradle的版本降低了(之前用的4.9,build:gradle:3.5.0-alpha50),使用低版本的4.5,

代码语言:javascript复制
classpath 'com.android.tools.build:gradle:3.1.4',

这样重启sync工程,神奇般的可以打release包了,贴一下我的配置文件:

(1)build.gradle

代码语言:javascript复制
buildscript {
    ext.kotlin_version='1.2.41'
    repositories {
        jcenter()
        google()
        maven { url 'https://maven.fabric.io/public' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.4'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'

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

android {
    compileSdkVersion 26
    buildToolsVersion "27.0.3"

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    lintOptions {
        checkReleaseBuilds false
        // Or, if you prefer, you can continue to check for errors in release builds,
        // but continue the build even when errors are found:
        abortOnError false
    }

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
            jniLibs.srcDirs = ['libs']
        }

        // Move the tests to tests/java, tests/res, etc...
        //instrumentTest.setRoot('tests')

        // Move the build types to build-types/<type>
        // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
        // This moves them out of them default location under src/<type>/... which would
        // conflict with src/ being used by the main source set.
        // Adding new build types or product flavors should be accompanied
        // by a similar customization.
        debug.setRoot('build-types/debug')
        release.setRoot('build-types/release')
    }
}

repositories {
    google()
}

(2)gradle-wrapper.properties的文件内容:

代码语言:javascript复制
#Mon Aug 13 17:54:14 CST 2018
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https://services.gradle.org/distributions/gradle-4.5-all.zip

对了,打release包会遇到lint的错误,message窗口会给提示,解决方式:只需要添加:

lintOptions { checkReleaseBuilds false // Or, if you prefer, you can continue to check for errors in release builds, // but continue the build even when errors are found: abortOnError false }

至此,eclipse android项目转android studio大功告成,只能说gradle的东西好坑,有些错误找不到问题所在,记录一下,方便有人遇到同样的错误有参考.

//*****************后来又遇到如下错误:

代码语言:javascript复制
Caused by: com.android.build.api.transform.TransformException: Error while generating the main dex list.
	at com.android.build.gradle.internal.transforms.D8MainDexListTransform.transform(D8MainDexListTransform.kt:127)
	at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:221)
	at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:217)
	at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:102)
	... 49 more
Caused by: com.android.builder.multidex.D8MainDexList$MainDexListException: com.android.tools.r8.errors.CompilationError: Program type already present: android.support.annotation.IntegerRes
	at com.android.builder.multidex.D8MainDexList.generate(D8MainDexList.java:87)
	at com.android.build.gradle.internal.transforms.D8MainDexListTransform.transform(D8MainDexListTransform.kt:114)
	... 52 more

Unexpected inputs: ImmutableJarInput{name=android.local.jars:android-support-v4.jar

各种谷歌百度搜索,就是找不到答案,后来发现一个坑是我以前的eclipse的项目中android-support-v4.jar是放在libs文件夹下面,然后引入到工程里面的,然后我的build.gradle又有重复添加了,我把libs的jar删掉就可以安装apk了,完美…

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/185951.html原文链接:https://javaforall.cn

0 人点赞