转战Andrdoi Studio (一)

AS开发Android越来越成了主流,只好慢慢靠拢了。跟着Google的亲儿子混吧!

以下据说是Google放弃Eclipse ADT的原因,也就是说优势:

1.使用领域专用语言(Domain Specific Language)来描述和处理构建逻辑。(传说中的DSL

2.基于GroovyDSL可以混合各种声明元素,用代码操控这些DSL元素达到逻辑自定义。

3.支持已有的Maven或者Ivy仓库基础建设

4.非常灵活,允许使用best practices,并不强制让你遵照它的原则来。

5.其它插件时可以暴露自己的DSLAPI来让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,gradledependencies添加一句话 :

 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提供了更好的解决办法。出错的原因是主Projectmanifest.xml<application> 节点中的属性和加入的Android Librarymanifest.xml <application> 节点的属性重复了,这种情况将导致gradle合并时因为分歧而出现异常。

 

方法1(试过)在主projectmanifest.xml<application>几个属性申明完添加一句

tools:replace="xxx,yyy,zzz"   xxx,yyy,zzz 分别代表相同的属性,删除掉引入中对应的属性即可

并且记得在文件开始加上:xmlns:tools="http://schemas.android.com/tools" 不然上述无效

 

 

方法2:(网上说的)build.gradle根标签上加上useOldManifestMerger true (懒人方法)

 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

公贵买其鹿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值