当前位置:   article > 正文

android studio与eclipse之间项目切换_as转eplise需要什么要求不

as转eplise需要什么要求不

一、android studio导入eclipse
手工改!!
1.在eclipse 上新建一个空的项目;
2.点击android studio 中的android 视图,
        a.替换as 中的AndroidManifest.xml -> eclipse 中的AndroidManifest.xml;
        b.替换as 中java 目录下源文件 -> eclipse 中的src 目录下的源文件;
        c.替换as 中res 目录下资源文件 -> eclipse 中的res 目录下;
        d.copy as中jniLibs 中的目录 -> eclipse 中的libs 目录下;
        e.copy as中assets 中的目录 -> eclipse 中的assets 目录下;
3.alt + enter, 选择sdk api 版本;
4.eclipse 右键 -> android tools -> fix ,eclipse -> project -> clean project即可

 

二、eclipse导入android studio

Android Studio版本

Eclipse项目工程:一个主工程,一个Emojicon依赖库。

有两种方式导入Eclipse工程:

1、兼容Eclipse

2、全新的Android Gradle Project

Google推荐用全新的方式,所以此处不介绍兼容模式导入。

请先关闭Android Studio当前的Project,否则你看不到Import Project。

选择“Import project(Eclipse ADT, Gradle, etc.)”,定位到你所需要导入的工程的主目录。由于主目录和Emojicon有依赖关系(Eclipse中需先将两个工程设置关联,即设置加载好依赖库后关闭eclipse),Android Studio会自动关联进来。然后指定一个保存的目录(注:工程文件会直接生成在这目录下,所以最好文件夹以项目名称命名,同时为空文件夹),点击Next。

默认情况下,下面的选项会打上勾(如果没有勾上,手动勾上),直接Finish就行了。

一段时间转换后,你将看到以下的结构

我把主工程的名称隐藏了,此时可以看到,Emojicon确实导进来了。不过Emojicon下的java目录是我后面加进来的,默认导入时这个文件夹不存在,为什么?往下看。

Android Studio导入完毕后,会默认在窗口中打开这个import-summary.txt文件,里面记录了导入的一些注意事项。这个文件有几个需要注意的节点,如下:

Manifest Merging

Ignored Files

Replaced Jars with Dependencies

Manifest Merging中的文字如下,也就是描述你的清单文件,基本上不用管。

  1. Your project uses libraries that provide manifests, and your Eclipse
  2. project did not explicitly turn on manifest merging. In Android Gradle
  3. projects, manifests are always merged (meaning that contents from your
  4. libraries' manifests will be merged into the app manifest. If you had
  5. manually copied contents from library manifests into your app manifest
  6. you may need to remove these for the app to build correctly.

Ignored Files,这个部分很重要。它表示Android Studio在导入项目的时候把这些文件忽略了,如果需要的话,你得手动拷贝进来。因为主工程依赖Emojicon,所以把这个文件拷贝到相应的位置即可。

  1. The following files were *not* copied into the new Gradle project; you
  2. should evaluate whether these are still needed in your project and if
  3. so manually move them:
  4. From Emojicon:
  5. * .gitignore
  6. * java\
  7. * java\com\
  8. * java\com\rockerhieu\
  9. * java\com\rockerhieu\emojicon\
  10. * java\com\rockerhieu\emojicon\EmojiAdapter.java
  11. * java\com\rockerhieu\emojicon\EmojiconEditText.java
  12. * java\com\rockerhieu\emojicon\EmojiconGridFragment.java
  13. * java\com\rockerhieu\emojicon\EmojiconHandler.java
  14. * java\com\rockerhieu\emojicon\EmojiconSpan.java
  15. * java\com\rockerhieu\emojicon\EmojiconTextView.java
  16. * java\com\rockerhieu\emojicon\EmojiconsFragment.java
  17. * java\com\rockerhieu\emojicon\emoji\
  18. * java\com\rockerhieu\emojicon\emoji\Emojicon.java
  19. * java\com\rockerhieu\emojicon\emoji\Nature.java
  20. * java\com\rockerhieu\emojicon\emoji\Objects.java
  21. * java\com\rockerhieu\emojicon\emoji\People.java
  22. * java\com\rockerhieu\emojicon\emoji\Places.java
  23. * java\com\rockerhieu\emojicon\emoji\Symbols.java

 

Replaced Jars with Dependencies,提示你原来的jar包在Android Studio项目中会以何种方式存在。

 

  1. The importer recognized the following .jar files as third party
  2. libraries and replaced them with Gradle dependencies instead. This has
  3. the advantage that more explicit version information is known, and the
  4. libraries can be updated automatically. However, it is possible that
  5. the .jar file in your project was of an older version than the
  6. dependency we picked, which could render the project not compileable.
  7. You can disable the jar replacement in the import wizard and try again:
  8. android-support-v4.jar => com.android.support:support-v4:22.2.1

导入后项目报错:Gradle sync failed: Could not find com.android.tools.build:gradle:3.2.1.

原因是com.android.tools.build:gradle:3.0.1插件需要到google的maven仓库下载。

在build.gradle添加google的maven仓库,如下:

  1. buildscript {
  2. repositories {
  3. jcenter()
  4. google()
  5. maven { url "https://jitpack.io" }
  6. }
  7. dependencies {
  8. classpath 'com.android.tools.build:gradle:3.2.1'
  9. }
  10. }
  11. allprojects {
  12. repositories {
  13. jcenter()
  14. google()
  15. maven { url "https://jitpack.io" }
  16. }
  17. }

同时修改项目中build.gradle的compile改为implementation,原先定义在清单文件manifest file中的应用版本号、sdk相关版本号移到build.gradle中。

期间遇到:Unable to resolve dependency for ':signSDK@debug/compileClasspath': Could not resolve project :mySDK.

……

网络上大体介绍这样解决:https://blog.csdn.net/qq_35427437/article/details/79835673  ,不过我自己在C盘没有找到那个多余的文件,更新了sdk依然没解决问题,重新clean项目后,Android Studio报错: - debugApiElements - debugRuntimeElements - releaseApiElements - releaseRun,查找到了该文章https://blog.csdn.net/androidzmm/article/details/80707434 ,受此启发看了链接库的apply发现问题所在:库工程没有修改为library,修改后解决。

  1. //apply plugin: 'com.android.application'
  2. apply plugin: 'com.android.library'

一般会遇到编码问题,例如报“错误: 编码UTF-8的不可映射字符”,因为gradle是使用UTF-8,androidstudio默认GBK,所以中文可能会乱码,网络查找很多编译gradle提示的乱码处理都无法解决,我是这样处理:

1、在项目的build.gradle加

  1. compileOptions {
  2. encoding "utf-8"
  3. }

2、

3、工程文件右下角设置utf-8

4、拷贝原在eclipse中的文件复制黏贴到as的对应类中

 

引用不到module下的jar包

在module中导入了***.jar或者第三方远程依赖库,在app中如果想引用这个jar里相关的内容时,发现根本引用不到,会提示add library/*****.jar 一大串,你回车一下或者点一下没反应,根本没有用。

只需把module下build.gradle里相关jar的implementation改为api即可,因为implementation 修饰的只能在当前module中引用,在app下是引用不了的,改完重新编译下即可进行引用了。
 

以前的libs文件夹哪里去了呢?

右击你的Module,Open Module Settings,显示如下:

其实Android Studio可以添加在线的库和jar,看到Maven Central字样了吧?相应的Jar会按需下载。

至此,项目可以build了。想运行成功,还没那么容易。

Error:duplicate files during packaging of APK ........

说是duplicate files copied in APK META-INF/NOTICE.txt

duplicate files copied in APK META-INF/LICENSE.txt

解决办法:在你的module下的build.gradle中的android节点中添加packagingOptions

 

  1. android {
  2. ……
  3. packagingOptions{
  4. exclude 'META-INF/NOTICE.txt'
  5. exclude 'META-INF/LICENSE.txt'
  6. }
  7. }

 

还有一个错误提示:Manifest merger failed with multiple errors, see logs

Suggestion: add ‘tools:replace=”android:icon”‘ to <application> element at AndroidManifest.xml:24:5 to override

原因:Android Studio默认使用Manifest Merger Tool,如果Library项目也定义了与主项目相同的属性(如默认生成的android:icon, android:theme),则会合并失败。

解决1:在AndroidManifest.xml节点manifest中引入

xmlns:tools="http://schemas.android.com/tools"

然后在application节点添加

tools:replace="android:icon"

或需要屏蔽theme,中间用逗号隔开。

tools:replace=”android:icon, android:theme”

解决2:在build.gradle根标签上加上useOldManifestMerger true,不过在Android Studio 2.0中提示找不到这个useOldManifestMerger ,不知是改进过了还是用了其它的字段(此法有问题,有谁知道为什么么?)。

  1. android {
  2. useOldManifestMerger true
  3. }

工程的编译版本需改为一致,清单文件中权限和文件声明不能重复,应用的图片标签(重复则配置

tools:replace="android:icon, android:label")

,例如我工程的清单文件如下:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.peihp.happy"
  4. android:installLocation="preferExternal"
  5. xmlns:tools="http://schemas.android.com/tools"
  6. >
  7. <!--android:sharedUserId="android.uid.system"-->
  8. <!-- <uses-sdk
  9. android:minSdkVersion="14"
  10. android:targetSdkVersion="24" />-->
  11. <!-- 在内置SDCard中创建与删除文件权限 -->
  12. <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  13. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  14. <!-- 在外置SDCard中读写文件权限 -->
  15. <uses-permission android:name="android.permission.READ_MEDIA_STORAGE" />
  16. <uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE" />
  17. <!-- 往SDCard写入数据权限 -->
  18. <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
  19. <!-- 清除缓存 -->
  20. <uses-permission android:name="android.permission.DELETE_CACHE_FILES" />
  21. <uses-permission android:name="android.permission.CAMERA" />
  22. <uses-permission android:name="android.permission.VIBRATE" />
  23. …………
  24. <application
  25. android:name="com.uuzuche.lib_zxing.MyApplication"
  26. android:allowClearUserData="true"
  27. android:icon="@drawable/ic_launcher"
  28. android:label="@string/sec_reader"
  29. tools:replace="android:icon, android:label"
  30. android:largeHeap="true" >
  31. …………
  32. </application>
  33. <supports-screens
  34. android:anyDensity="true"
  35. android:largeScreens="true"
  36. android:normalScreens="true" />
  37. </manifest>

链接库的清单文件:

  1. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  2. package="com.peihp.facelivedetectionsilentlib"
  3. >
  4. <!--<uses-sdk android:minSdkVersion="11" />-->
  5. <uses-permission android:name="android.permission.CAMERA" />
  6. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  7. <uses-permission android:name="android.permission.INTERNET" />
  8. <uses-feature
  9. android:name="android.hardware.camera"
  10. android:required="true" />
  11. <uses-feature
  12. android:name="android.hardware.camera.autofocus"
  13. android:required="false" />
  14. <application
  15. android:allowBackup="true"
  16. android:icon="@mipmap/ic_launcher"
  17. android:label="@string/app_name"
  18. android:theme="@style/AppTheme" >
  19. ……
  20. </application>
  21. </manifest>

local.properties文件:

  1. #Fri Nov 30 15:37:00 CST 2018
  2. sdk.dir=E\:\\php\\androidTool\\sdk24.4_as\\sdk24.4
  3. keystore.path=E\:/php/androidTool/packSign/peihp.keystore
  4. keystore.password=peihp66
  5. keystore.alias=peihp8888
  6. keystore.alias_password=peihp66

工程build.gradle文件:

  1. apply plugin: 'com.android.application'
  2. def keystoreFilepath = ''
  3. def keystorePSW = ''
  4. def keystoreAlias = ''
  5. def keystoreAliasPSW = ''
  6. // default keystore file, PLZ config file path in local.properties
  7. def keyfile = file('s.keystore.temp')
  8. Properties properties = new Properties()
  9. // local.properties file in the root director
  10. properties.load(project.rootProject.file('local.properties').newDataInputStream())
  11. keystoreFilepath = properties.getProperty("keystore.path")
  12. if (keystoreFilepath) {
  13. keystorePSW = properties.getProperty("keystore.password")
  14. keystoreAlias = properties.getProperty("keystore.alias")
  15. keystoreAliasPSW = properties.getProperty("keystore.alias_password")
  16. keyfile = file(keystoreFilepath)
  17. }
  18. android {
  19. signingConfigs {
  20. config {
  21. keyAlias keystoreAlias
  22. keyPassword keystoreAliasPSW
  23. storeFile keyfile
  24. storePassword keystorePSW
  25. }
  26. }
  27. compileSdkVersion 27
  28. buildToolsVersion "28.0.3"
  29. defaultConfig {
  30. applicationId "com.peihp.happy"
  31. minSdkVersion 14
  32. targetSdkVersion 27
  33. versionCode 21
  34. versionName "1.2.2"
  35. compileOptions {
  36. sourceCompatibility JavaVersion.VERSION_1_7
  37. targetCompatibility JavaVersion.VERSION_1_7
  38. }
  39. }
  40. buildTypes {
  41. release {
  42. minifyEnabled true
  43. proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
  44. debuggable false
  45. signingConfig signingConfigs.config
  46. }
  47. debug {
  48. signingConfig signingConfigs.config
  49. }
  50. }
  51. compileOptions {
  52. encoding "utf-8"
  53. }
  54. packagingOptions {
  55. exclude 'META-INF/DEPENDENCIES'
  56. }
  57. lintOptions {
  58. checkReleaseBuilds false
  59. abortOnError false
  60. }
  61. }
  62. dependencies {
  63. implementation project(':faceLiveDetectionSilentLib')
  64. implementation 'com.android.support:support-v4:27.1.1'
  65. implementation files('libs/commons-codec-1.3.jar')
  66. implementation files('libs/commons-collections-3.2.jar')
  67. implementation files('libs/commons-httpclient-3.1.jar')
  68. implementation files('libs/commons-logging-1.1.jar')
  69. implementation files('libs/commons-pool-1.2.jar')
  70. implementation files('libs/httpclient-4.3.6.jar')
  71. implementation files('libs/httpcore-4.3.2.jar')
  72. implementation files('libs/httpmime-4.3.5.jar')
  73. implementation files('libs/iTextpdf.jar')
  74. implementation files('libs/jedis-2.1.0.jar')
  75. implementation files('libs/ksoap2-android-assembly-3.6.0-jar-with-dependencies.jar')
  76. ……
  77. implementation files('libs/xUtils-2.6.14.jar')
  78. implementation files('libs/zxing.jar')
  79. }

链接库的build.gradle文件:

  1. apply plugin: 'com.android.library'
  2. android {
  3. compileSdkVersion 27
  4. buildToolsVersion "28.0.3"
  5. defaultConfig {
  6. minSdkVersion 11
  7. targetSdkVersion 27
  8. versionCode 1
  9. versionName "1.0"
  10. }
  11. buildTypes {
  12. release {
  13. minifyEnabled true
  14. proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
  15. }
  16. }
  17. packagingOptions {
  18. exclude 'META-INF/DEPENDENCIES'
  19. exclude 'META-INF/NOTICE'
  20. exclude 'META-INF/LICENSE'
  21. exclude 'META-INF/LICENSE.txt'
  22. exclude 'META-INF/NOTICE.txt'
  23. }
  24. }
  25. dependencies {
  26. implementation 'com.android.support:support-v4:27.1.1'
  27. implementation files('libs/liveness-silent-offline-release.jar')
  28. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/267069
推荐阅读
相关标签
  

闽ICP备14008679号