本文主要是介绍转战Andrdoi Studio (一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
用AS开发Android越来越成了主流,只好慢慢靠拢了。跟着Google的亲儿子混吧!
以下据说是Google放弃Eclipse ADT的原因,也就是说优势:
1.使用领域专用语言(Domain Specific Language)来描述和处理构建逻辑。(传说中的DSL)
2.基于Groovy。DSL可以混合各种声明元素,用代码操控这些DSL元素达到逻辑自定义。
3.支持已有的Maven或者Ivy仓库基础建设
4.非常灵活,允许使用best practices,并不强制让你遵照它的原则来。
5.其它插件时可以暴露自己的DSL和API来让Gradle构建文件使用。
6.允许IDE集成,是很好的API工具
以上六条,我琢磨了半天,最后的总结就是:
有很多操作你要换模式了... 因为我不懂具体那六条是什么意思。
安装的困惑我就不说了,我也忘记自己的Studio是怎么能用的。
于是,我只能描述我遇到的问题和解决办法..
一、结构完全看不懂...看不懂...不懂...不...
当时大概是这样一个界面,第一感觉:什么玩意,三个一样的!
图里红色的方框其实标出来了,点击那里可以切换文档的目录结构。这是AS的一个显示方式Android,个人感觉好理解的是Project下的目录结构,虽然同样有些看不懂...没事,慢慢来总能懂的。
二、@drawable/xxxxx 的图片资源找不到了
当时我感觉好无力啊,这怎么会?再一看,drawable-hdpi等四个文件夹也找不到了,出来四个mipmap开头的文件夹。我想是不是@mipmap?在src=””中”@mi”没反应,跪了!
无奈百度吧,结果大概如下:
Mipmap提倡放图片,因为Google的优化或者什么策略的原因,能做到比deawable好不少;
Drawable文件夹依旧存在,提倡存放配置属性的文件,这一点倒是变化不大。
@mipmap/xxx是正确的使用方法,只能是手写!目前没有自动提示
只能手写...能手写...手写...写...
三、*.jar包和*.so引入
我这里只各列举两种办法,还有好多,需要的百度吧!这两种是我觉得比较省力好用的,哈哈。
Jar1: Eclipse里面jar包复制到libs文件夹下就可以了,AS中光复制是不行的。需要手动添加一下:右键libs里的jar文件,选择下图红色点击默认选择app就好了;
Jar2:或者直接在app下的build,gradle的dependencies添加一句话 :
compile files('libs/xxxx.jar')
红色方框内两个都是加入的jar包
下面是so文件的导入:
So1: 在app下的src下的main下新建文件夹jniLibs,将.so或者包含.so的文件夹复制到这里,就好了。红色方框标出层级关系:
So2: 在APP下的build.gradle文件夹中添加一段引用(好像叫引用):
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
上面一段画的意思和src下建文件夹是一样的,当然,这个时候你的libs里面要有.so或者包含.do的文件夹。对了sourceSets要包含在android{}中。
以上具体原理我目前还不懂,先用着,慢慢就懂了,不求甚解,多用然后让孰生巧。
三、添加Android Libaray
直接File -> new -> import Module -> 选择->finish后,就可以看到目录里面有了该库了,Eclipse中,勾选之后就可以了,但是AS不行。
你可以在主工程试着引用它的Jar包等的时候,你发现还是引用不了。
也就是说到现在并没有完事,还要添加一下的:
项目右键 -> Open Module Setting 出来一个面板
面板选app -> Dependencies -> + -> module dependency -> 导入的project-> 完成
这个时候就可以试一下了
在运行的时候可能会继续出问题。
报以下错误:
D:\SoftInstall\Android\workspace\TestApplication\app\src\main\AndroidManifest.xml:8:9-43 Error:
Attribute application@icon value=(@mipmap/ic_launcher) from AndroidManifest.xml:8:9-43
is also present at [TestApplication:vitamioBundle:unspecified] AndroidManifest.xml:12:9-45 value=(@drawable/ic_launcher)
Suggestion: add 'tools:replace="android:icon"' to <application> element at AndroidManifest.xml:6:5-39:19 to override
D:\SoftInstall\Android\workspace\TestApplication\app\src\main\AndroidManifest.xml:9:9-41 Error:
Attribute application@label value=(@string/app_name) from AndroidManifest.xml:9:9-41
is also present at [TestApplication:vitamioBundle:unspecified] AndroidManifest.xml:13:9-45 value=(@string/vitamio_name)
Suggestion: add 'tools:replace="android:label"' to <application> element at AndroidManifest.xml:6:5-39:19 to override
Error:Execution failed for task ':app:processDebugManifest'.
> Manifest merger failed with multiple errors, see logs
问题出在了较新版本gradle上;其实不应该叫做问题,是gradle提供了更好的解决办法。出错的原因是主Project的manifest.xml中<application> 节点中的属性和加入的Android Library的manifest.xml 中<application> 节点的属性重复了,这种情况将导致gradle合并时因为分歧而出现异常。
方法1:(试过)在主project的manifest.xml中<application>几个属性申明完添加一句
tools:replace="xxx,yyy,zzz" xxx,yyy,zzz 分别代表相同的属性,删除掉引入中对应的属性即可
并且记得在文件开始加上:xmlns:tools="http://schemas.android.com/tools" 不然上述无效
方法2:(网上说的)在build.gradle根标签上加上useOldManifestMerger true (懒人方法)
这篇关于转战Andrdoi Studio (一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!