android studio与eclipse_androidstudio源码网

android studio与eclipse_androidstudio源码网 以前公司的老项目,是使用eclipse进行开发的,虽然androidstudio出来了很久,但为了避免迁移会有一些问题,一直忍着没改,但最近谷歌公司上架有要求,要求android的项目要用android8.0来编译,然后就发现eclipse+ADT已经不支持jdk1.8还有android8.0,运行就会有问题,有类似unsported52.0,还有各种莫名其妙的错误,比如无法识别27,…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

 以前公司的老项目,是使用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打开,避免了一些问题.

android studio与eclipse_androidstudio源码网

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

android studio与eclipse_androidstudio源码网

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

android studio与eclipse_androidstudio源码网

android studio与eclipse_androidstudio源码网

android studio与eclipse_androidstudio源码网

android studio与eclipse_androidstudio源码网

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

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,

classpath 'com.android.tools.build:gradle:3.1.4',

android studio与eclipse_androidstudio源码网

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

   (1)build.gradle

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的文件内容:

#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的东西好坑,有些错误找不到问题所在,记录一下,方便有人遇到同样的错误有参考.

 

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

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了,完美…

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 什么是ARM?_arm开发板

    什么是ARM?_arm开发板原文一、ARM是什么?ARM既可以认为是一个公司的名字,也可以认为是对一类处理器的统称,还可以认为是一种技术的名字。ARM公司是专门从事基于RISC技术芯片设计开发的公司,作为知识产权供应商,本身不直接从事芯片生产,而是转让设计许可,由合作公司生产各具特色的芯片。ARM处理器的内核是统一的,由ARM公司提供,而片内部件则是多样的,由各大半导体公司设计,这使得ARM设计嵌入式系统的时候,可以基于同样的核心,使用不同的片内外设,从而具有很大的优势。二、ARM内核与架构

    2022年10月14日
  • oracle 行列转换 pivot

    oracle 行列转换 pivot

  • Java架构师尼恩_java的面试宝典

    Java架构师尼恩_java的面试宝典加架构师尼恩免费领!专题01:JVM面试题(卷王专供+史上最全+2022面试必备)-V2专题02:Java算法面试题(卷王专供+史上最全+2022面试必备)-V2专题03:Java基础面试题(卷王专供+史上最全+2022面试必备)-V2专题04:架构设计面试题(卷王专供+史上最全+2022面试必备)-V2专题05:Spring面试题__专题06:SpringMVC__专题07:Tomcat面试题(卷王专供+史上最全+2022面试必备)-V2专题0

  • webstorm 19 激活码【2021最新】

    (webstorm 19 激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

  • Python中sort与sorted函数

    Python中sort与sorted函数python中列表的内置函数sort()可以对列表中的元素进行排序,而全局性的sorted()函数则对所有可迭代的序列都是适用的;并且sort()函数是内置函数,会改变当前对象,而sorted()函数只会返回一个排序后的当前对象的副本,而不会改变当前对象。sort原型:sort(fun,key,reverse=False)参数fun是表明此sort函数是基于何种算法进行排序的,一般默认情况…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号