AndroidStudiallegro导入dxf有问题Eclipse的问题求解答

将Eclipse代码导入到AndroidStudio的两种方式
我的图书馆
将Eclipse代码导入到AndroidStudio的两种方式
说到使用AndroidStudio,除了新建的项目,我们都会面临的问题是原先Eclipse的代码该怎么导入到AndroidStudio中使用。
这方面相关的资料还比较少,自己摸索了一下,总结出这篇博客,希望能让开发者少走些弯路。
OK,进入正题。
Google为了让我们更加方便的使用AndroidStudio,提供了两种导入Eclipse代码的方式:一种兼容Eclipse,一种是全新的Android Gradle Project.
这里,我们先从兼容模式说起。
这种模式下,保证了Eclipse时代的代码目录结构,整体操作和使用和Eclipse也差不多。
最重要的,当你使用AndroidStudio时,你或者其他人也可以方便的使用Eclipse,互不干扰。
1. 从Eclipse中导出Gradle build files
在Eclipse菜单中 File --& Export--&Generate Gradle build files
接下来会到达警告界面,这里会提示AndroidStudio可以直接导入ADT的工程,先过,后面有直接导入的讲解。
选中你的项目工程,包括主工程和库工程(Library)。
2. 修改导出文件参数
导出后,由于adt很久没更新,需要手动改一些参数,才能保证正常使用。
为了保证能够讲解的更清晰,下面分情况讲解一下:
没有库工程,只有主工程
这种情况下你看到的目录是这样的
首先需要更改的是 build.gradle 文件
AndroidStudio 1.0 ~ 1.0.2 使用的都是 Android Gradle plugin 1.0.0,因此需要将图中红框内的 0.12.+ 改为 1.0.0
然后还需要更新Gradle版本,指定为所需要的2.2.1
在 /gradle/wrapper/gradle-wrapper.properties里面
含有库工程
其实改动方法和上面一样,只需要注意是改动整个项目的build.gradle和 /gradle/wrapper/gradle-wrapper.properties。
而不要尝试去主工程或者库工程里面找build.gradle
3. 导入AndroidStudio
进入到AndroidStudio中,选择导入非AndroidStudio工程
找到需要导入的工程目录,可以看到图标和Eclipse创建的工程不一样。
点击OK,进入漫长的加载过程,之后就可以正常使用了。
已经创建过工程的打开AndroidStudio会直接进入以前的工程
这时候可以选择File--&Import Project, 选中后点击ok
兼容模式下的bug
使用IDE的打包:
在兼容模式只打主工程的,库工程没有加入到apk中,导致无法正常运行。
截止到1.0.2,AndroidStudio依然存在这个bug。
因为这个bug的存在,你在兼容模式可以使用AndroidStudio编程,打包时开启Eclipse。
OK,兼容模式介绍到这里。 我们开始介绍主角: Android Gradle Project。 这里必须说明的是Google更希望我们使用这种方式,如果没有什么团队的压力,还是使用这种吧。
使用新的目录结构
转换目录结构
打开Import
老用户: File--&Import Project
直接找到原有的Eclipse工程
单一工程直接导入即可。
有库工程的需要注意,导入一定要指向主工程,而不是整个项目的目录。指向项目目录是无法进行转换的。
指定目标路径
这个地方需要详细说一下
这里上面两个选项暂且不说,勾选上。
最后一项提一下: 将Module名创建为camelCase风格。
驼峰式,这个搞Java的都会熟悉,camelCase表示首字母小写的驼峰式风格,CamelCase表示首字母大写的驼峰式风格。
不勾选这个选项意味着你原先的工程名是啥样,转换完就是啥样。
这里的AndroidStudio会去分析Eclipse工程下的. project文件,里面的name就是你在Eclipse中看到的工程名。(没有此文件时会使用此工程的文件夹名。)
当然也有例外,比如countly-sdk-android转换完就成了countlysdkandroid,下划线我就不知道了,这个没有再仔细研究规则,不过CamelCase会保持正常。
这里我比较喜欢让Module首字母大写(不知道为啥看这首字母小写难受),原来的工程就是CamelCase风格,我就不勾选了。
当然如果这里没注意直接转换成了camelCase但最后又不喜欢怎么办? 可以看后面《如何更改Module名称》部分。
OK,配置完点击Finish即可
之后需要经过一段时间的转换。成功后可以看到import-summary.txt,这个文件非常有用,后面会讲到。
到这里,你的应用其实已经可以通过AndroidStudio正常编译,你也可以写代码去了。
但我希望你还能继续看下去,因为这个成功后弹出来的import-summary.txt写了些很重要的东西。
带你看懂import-summary.txt
Manifest Merging
Your project uses libraries that provide manifests, and your Eclipse
project did not explicitly turn on manifest merging. In Android Gradle
projects, manifests are always merged (meaning that contents from your
libraries' manifests will be merged into the app manifest. If you had
manually copied contents from library manifests into your app manifest
you may need to remove these for the app to build correctly.
这段应该都能看懂,无非就是说你Library的清单文件有效啦。
不用手工拷贝到主工程的清单文件中了。以前拷贝过的,要移除才能正确build。
Ignored Files(这个最重要)
之所以说这部分重要,是因为AndroidStudio通过这段文字告诉了你,它导入的时候忽略了哪些文件。
也就是说这部分内容,它没给你拷进来,你要是不去自己拷贝,那这部分你新Gradle工程里面就没有了。
这里选一些典型的ignore文件来看一下:1234From SDK:* proguard-project.txt* proguard.cfgFrom UI:* cert\* cert\certFrom CrosswalkWebview:* ant.properties* build.xmlFrom SlidingMenuLibrary:* LICENSE.txt* pom.xml
给上面的忽略文件分分类:
确实不需要的:混淆文件、ant的ant.properties与build.xml、maven的pom.xml。
需要再次声明的: LICENSE.txt。不声明属于盗版侵权啊~~
自定义文件夹和文件:cert。 这个文件夹是自己创建的,不属于Android规定的目录,所以AndroidStudio没给拷贝。
需要留意你的Ignored Files部分,并根据自己的需要手工拷贝到新工程中。
Replaced Jars with Dependencies & Replaced Libraries with Dependencies
在Replaced Jars with Dependencies部分,有如下文字:123android-support-v4.jar =& com.android.support:support-v4:21.0.3gson-2.3.jar =& com.google.code.gson:gson:2.3joda-time-2.6.jar =& joda-time:joda-time:2.6
可以看到jar被替换了。 可以看到工程里面没有了当初添加的jar包。那么jar包去哪了呢?
暂时先留个悬念。
我们继续来看 Replaced Libraries with Dependencies部分123ActionbarLibrary =&&&&&com.actionbarsherlock:actionbarsherlock:4.4.0@aar&&&&com.android.support:support-v4:21.0.3
可以看到ActionbarSherlock被替代为了aar(Android ARchive ,jar : Java ARchive)。关于aar的介绍可以看,本文就不再详细展开了。
可以看到的是Library和jar都被替换了,可是你在当前工程里再也找不到了。这是为什么?
跟我来看下面的操作:
在Module上右击,选择Open Module Settings
切换到Dependencies
点击右侧的加号添加,选择Library dependency
可以看到这个界面:
OK,到这里就可以知道真相了,在AndroidStudio中你可以添加在线的库或jar包,添加完成后你就可以和平时一样正常使用。
而你的同事在打开这个工程的时候会即时下载,保证你们的代码都能正常运行。
这也是为什么当你的工程转换完毕后,有些jar和Library消失的原因。他们被转成在线的了。
Moved Files
这部分在讲你的目录结构变化,基本上可以认为他在废话,没什么看的必要了。
Next Steps & Bugs
呵呵,略过吧
This import summary is for your information only, and can be deleted
after import once you are satisfied with the results.
你一旦觉得自己的工程没问题了,就可以把这个文件删除了。
导入AndroidStudio工程注意
通过上面的步骤,你的项目已经转换了目录结构,这时候你可以提交代码,供其他同事下载使用了。
其他同事把代码下载下来,他们所需要引入的是一个Android Gradle Project了。
如果项目中有.idea之类的IntelliJ的文件,开始选择的应该是Open an existing Android Studio project,而不是Import Non-Android Studio project。
如果你下载下来的代码里面只有gradle的文件,即使还是要选Import Non-Android Studio project。
老用户依然使用: File--&Import Project
这里需要提醒的是,对于含有库工程的项目而言, 需要指定整个项目的目录,仅仅指定主工程是没用的。
到这里我们需要停下来总结一下:
如果你导入的是一个Eclipse工程,那么指定主工程目录。AndroidStudio通过分析来帮你完成转换。
如果你导入的是一个AndroidStudio工程,那么指定整个项目的目录 。
附: 如何更改Module名称
在Module上右键refactor--& rename ,当然可以看到有快捷键shift + F6, 这样就可以改变Module的名称了。
但是还没有结束,这样没有更改引用这个Module的地方。
如果他是一个库工程,你还需要继续去查看引用它的地方并进行修改。主要是其他Module的Gradle文件。
选中Module,ctrl+c即可复制工程名,在相关Gradle文件中ctrl+v替换成新的名称即可。
最后,别忘了,settings.gradle,这里include的module名称也需要更改。 至此,算是修改结束。
一切修改完毕,点击弹出提示中的Sync Now,让工程重新构建
构建结束后就一切正常了。
当然你如果对文件夹的名称也看着不顺眼,也可以去修改文件夹名称,改变后记得重新导入即可。
以上就是两种导入的方式的介绍,总体来说第一种适合无奈的时候提前熟悉AndroidStudio,第二种则是更推荐的方式。
无论采用哪一种,都希望你能尽快的接触AndroidStudio,体验它的强大。
TA的最新馆藏
喜欢该文的人也喜欢Eclipse项目导入到Android&studio中的一些问题小结
相比Eclipse,还是Android
studio(下简称AS)好用些,而Eclipse项目迁移到AS上来也会出现很多问题,用AS也快一年了,小结一下。
首先说明下:Eclipse中的工作空间Workspace对应于AS的project,Eclipse中的peoject对应于AS中的module;其次,Eclipse中是用ADT编译Android项目的,而在AS中使用Gradle编译的,Gradle研究起来个人觉得也比较复杂,但熟练了,做项目就得心应手。
从Eclipse项目导出方式说起,导入到AS也不同
1、Eclipse导出Android项目可以选择导出带Gralde配置文件的项目,这样方便迁移至AS中。
先说导出:右键项目列表中的项目名--&Export--&Android--&Generate Gradle
build files即可,导出的带Gradle配置文件的项目,在AS中选择File--&new--&import
Module即可
2、不按1方式导出的项目或者直接从Eclipse的WorkSpace中复制出来的项目,在导入AS中,可选择
File--&new--&import
project--&选择指定导出目录,的方式导入项目,及Eclipse的项目在AS中按AS的Project形式导入,然后在生成的新的AS的Project,可以看到Eclipse的项目作为新的AS的Project里的一个Module存在着,这样可以再将这个Module导入到自己常用的Project中去,这种方式亲测可行的。
3、其他问题。
在按第2种方式导入项目时出现过Eclipse的Android项目引用了某些android包比如V4、V7的版本包在你本地是没有的,因为你可能导入的第三方开源项目,可能想到就算V4,V7包不对,但我导入之后再去修改这些引用就可以了,但出现这种情况时导入报错以致无法导入,所以可能的办法是在Eclipse
的Android项目的project.properties文件中先去掉那些报错的引用,先把项目导入到AS中,在慢慢调试使其可正常运行即可。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。输入关键字进行搜索
如下:并没有提示具体是哪个图片问题,项目中上百张图片,不可能全部替换一遍。
真心不知如何弄啦!还请大神们具体讲解下如何解决问题,谢谢!
AAPT: libpng error: Not a PNG file
AAPT: libpng error: Not a PNG file
AAPT err(Facade for ) : No Delegate set : lost message:libpng error: Not a PNG file
AAPT err(Facade for ) : No Delegate set : lost message:libpng error: Not a PNG file
AAPT err(Facade for ) : No Delegate set : lost message:libpng error: Not a PNG file
AAPT err(Facade for ) : No Delegate set : lost message:libpng error: Not a PNG file
AAPT: libpng error: Not a PNG file
AAPT: libpng error: Not a PNG file
AAPT: libpng error: Not a PNG file
AAPT: libpng error: Not a PNG file
AAPT: libpng error: Not a PNG file
AAPT: libpng error: Not a PNG file
AAPT: libpng error: Not a PNG file
AAPT: libpng error: Not a PNG file
AAPT: libpng error: Not a PNG file
:PayEasy:mergeDebugResources FAILED
FAILURE: Build failed with an exception.
What went wrong:
Execution failed for task ':PayEasy:mergeDebugResources'.
Some file crunching failed, see logs for detailsTry:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
-------------------------------------------------------------
-然后我用./gradlew compileDebug --stacktrace
报错如下:
- 还是看不懂!!
FAILURE: Build failed with an exception.
What went wrong:
Task 'compileDebug' is ambiguous in project ':PayEasy'. Candidates are: 'compileDebugAidl', 'compileDebugAndroidTestAidl', 'compileDebugAndroidTestJavaWithJavac', 'compileDebugAndroidTestNdk', 'compileDebugAndroidTestRenderscript', 'compileDebugAndroidTestSources', 'compileDebugJavaWithJavac', 'compileDebugNdk', 'compileDebugRenderscript', 'compileDebugSources', 'compileDebugUnitTestJavaWithJavac', 'compileDebugUnitTestSources'.Try:
Run gradlew tasks to get a list of available tasks. Run with --info or --debug option to get more log output.Exception is:
org.gradle.execution.TaskSelectionException: Task 'compileDebug' is ambiguous in project ':PayEasy'. Candidates are: 'compileDebugAidl', 'compileDebugAndroidTestAidl', 'compileDebugAndroidTestJavaWithJavac', 'compileDebugAndroidTestNdk', 'compileDebugAndroidTestRenderscript', 'compileDebugAndroidTestSources', 'compileDebugJavaWithJavac', 'compileDebugNdk', 'compileDebugRenderscript', 'compileDebugSources', 'compileDebugUnitTestJavaWithJavac', 'compileDebugUnitTestSources'.
at org.gradle.execution.TaskSelector.getSelection(TaskSelector.java:100)
at org.gradle.execution.TaskSelector.getSelection(TaskSelector.java:75)
at org.mandLineTaskParser.parseTasks(CommandLineTaskParser.java:42)
at org.gradle.execution.TaskNameResolvingBuildConfigurationAction.configure(TaskNameResolvingBuildConfigurationAction.java:44)
at org.gradle.execution.DefaultBuildConfigurationActionExecuter.configure(DefaultBuildConfigurationActionExecuter.java:48)
at org.gradle.execution.DefaultBuildConfigurationActionExecuter.access$000(DefaultBuildConfigurationActionExecuter.java:25)
at org.gradle.execution.DefaultBuildConfigurationActionExecuter$1.proceed(DefaultBuildConfigurationActionExecuter.java:54)
at org.gradle.execution.DefaultTasksBuildExecutionAction.configure(DefaultTasksBuildExecutionAction.java:44)
at org.gradle.execution.DefaultBuildConfigurationActionExecuter.configure(DefaultBuildConfigurationActionExecuter.java:48)
at org.gradle.execution.DefaultBuildConfigurationActionExecuter.access$000(DefaultBuildConfigurationActionExecuter.java:25)
at org.gradle.execution.DefaultBuildConfigurationActionExecuter$1.proceed(DefaultBuildConfigurationActionExecuter.java:54)
at org.gradle.execution.ExcludedTaskFilteringBuildConfigurationAction.configure(ExcludedTaskFilteringBuildConfigurationAction.java:47)
at org.gradle.execution.DefaultBuildConfigurationActionExecuter.configure(DefaultBuildConfigurationActionExecuter.java:48)
at org.gradle.execution.DefaultBuildConfigurationActionExecuter.select(DefaultBuildConfigurationActionExecuter.java:36)
at org.gradle.initialization.DefaultGradleLauncher$3.run(DefaultGradleLauncher.java:143)
at org.gradle.internal.Factories$1.create(Factories.java:22)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:52)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:140)
at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:32)
at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:99)
at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:93)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:62)
at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:93)
at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:82)
at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:94)
at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:43)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:28)
at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:77)
at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:47)
at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:51)
at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:28)
at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:43)
at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:170)
at org.gradle.mandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:237)
at org.gradle.mandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:210)
at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:35)
at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24)
at org.gradle.mandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:206)
at org.gradle.mandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:169)
at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33)
at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22)
at org.gradle.launcher.Main.doAction(Main.java:33)
at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)
at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:54)
at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:35)
at org.gradle.launcher.GradleMain.main(GradleMain.java:23)
at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:30)
at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:129)
at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)
BUILD FAILED
要回复问题请先或
浏览: 1093
关注: 1 人eclipse中项目导入到android studio出现的Manifest merger failed问题
错误提示:Error:Execution failed for task ':XXX1:processDebugManifest'.
& Manifest merger failed : Attribute application@icon value=(@drawable/icon) from AndroidManifest.xml:42:9
is also present at XXX:XXX2:unspecified:13:9 value=(@drawable/ic_launcher)
Suggestion:
add 'tools:replace=&android:icon&' to &application& element at AndroidManifest.xml:40:5 to override.
因为主module(XXX1)和lib(XXX2)Manifest中application节点属性不一样导致合并失败
解决办法:其实英文中已经提示了,就是在application节点中添加tools:replace=&android:icon。别忘记了
xmlns:tools=&/tools&
看过本文的人也看了:
我要留言技术领域:
取消收藏确定要取消收藏吗?
删除图谱提示你保存在该图谱下的知识内容也会被删除,建议你先将内容移到其他图谱中。你确定要删除知识图谱及其内容吗?
删除节点提示无法删除该知识节点,因该节点下仍保存有相关知识内容!
删除节点提示你确定要删除该知识节点吗?

我要回帖

更多关于 导入模型常见问题 的文章

 

随机推荐