AndroidStdio1_2
赏花归去马如飞,去马如飞酒力微,酒力微醒时已暮,醒时已暮赏花归。
——赏花归去
新Logo
Android库在结构上与Android应用模块相同。它可以提供构建应用所需的一切内容,包括源代码、资源文件和Android清单。不过,Android库将编译到可以用作Android应用模块依赖项的Android归档(AAR)文件,而不是在设备上运行的APK。与JAR文件不同,AAR文件可以包含Android资源和一个清单文件,这样除了Java类与方法外,还可以捆绑布局和可绘制对象等共享资源。
库模块在以下情况下非常有用:
· 构建使用某些相同组件(例如Activity、服务或UI布局)的多个应用。
· 构建存在多个APK变体(例如免费版本和付费版本)的应用并且需要在两种版本中使用相同的核心组件。
就像公司有10多个App,可以把所有App都需要用的东西封装到库模块中,例如网络请求、在线加载图片等。
这10多个项目都依赖这个库,而不是10多个项目都写一遍网络请求的代码,并且用库的方式方便修改。
当访问网络的代码有bug的时候,只需要修改这个库文件的代码就好了。
如何创建一个模块
点这里
按需点击
看具体情况构建
虽然可以更改,但是还是不建议更改吧
模块的一些内容
有时候需要用别人的库
导入它
找到位置导入
那么将应用模块转换为库模块怎么做?
用安卓project的视图,比较明显
两个模块,一是app,一个是我的库模块
打开现有的app.build
给俺报错了,问题不大.大体是这样.嘻嘻
改回来,sync一下~
在开发库模块和相关应用时,需要注意以下行为和限制。
将库模块引用添加至你的Android应用模块后,可以设置它们的相对优先级。构建时,库会按照一次一个的方式与应用合并,并按照从低到高的优先级顺序进行。
· 资源合并冲突:构建工具会将库模块中的资源与相关应用模块的资源合并。如果在两个模块中均定义了给定资源ID,将使用应用中的资源。
如果多个AAR库之间发生冲突,将使用依赖项列表首先列出(位于dependencies块顶部)库中的资源。
这个地方
为了避免常用资源ID的资源冲突,请使用在模块(或在所有项目模块)中具有唯一性的前缀或其他一致的命名方案。
· 库模块可以包含JAR库:可以开发一个自身包含JAR库的库模块。不过,需要手动编辑相关应用模块的构建路径,并添加JAR文件的路径。
· 库模块可以依赖外部JAR库:可以开发一个依赖于外部库(例如Maps外部库)的库模块。在这种情况下,相关应用必须针对包含外部库(例如Google API插件)的目标构建。需要注意的是,库模块和相关应用都必须在其清单文件的元素中声明外部库。
· 库模块不得包含原始资源:工具不支持在库模块中使用原始资源文件(保存在assets/目录中)。应用使用的任何原始资源都必须存储在应用模块自身的assets/目录中。
· 应用模块的minSdkVersion必须大于或等于库定义的版本:库作为相关应用模块的一部分编译,因此,库模块中使用的API必须与应用模块支持的平台版本兼容。
· 每个库模块都会创建自己的R类:在构建相关应用模块时,库模块将先编译到AAR文件中,然后添加到应用模块中。因此,每个库都有其自己的R类,并根据库的软件包名称命名。
· 从主模块和库模块生成的R类会在所需的所有软件包(包括主模块的软件包和库的软件包)中创建。
依赖库的方法主要有两种:一种是本地依赖,另一种是在线依赖。
本地依赖库一般是公司内部把一些项目通用的代码封装成库,可以根据业务需求随时修改代码,并且代码都在本地,不会被公开。
在线依赖库一般是个人或者组织对解决某个问题的代码进行开源,例如从服务器请求数据,这是市面上90%的App都需要用到的功能,Android自带的访问网络api太烦琐,于是就需要把网络请求的代码进行封装,这样就有一些公司会把自己App中访问网络的代码封装成一个库,提交到远程中央仓库。别人就能通过在线依赖的方式引用这个库,大家都站在巨人的肩膀上,还有一个好处就是,这个库有bug,只要开源者修复这个问题,然后提交一个新的版本,所有依赖者根本不需要修改代码,只需要修改版本号即可解决bug。
依赖本地库(module)就是源代码在你当前电脑上,依赖库有什么问题,可以随时修改。
例如,在自己已打开的项目下新建一个库“my-library-module”,如果想依赖这个库,打开应用模块的build.gradle文件,并向dependencies块中添加一行如下的新代码:
compile project(':my-library-module')
点击Sync Project with Gradle Files。修改后
一同步,完蛋.问题不大
大概看了下,是版本不搭配的原因
9.0稳一点
还没有错误
报错,去看看官网
释义-第一个警告:compile 会在2018年底取消,被implementation替代,解决警告的方法就是compile换成implementation就好。
释疑-compile与implementation的区别:
compile: 可以传递依赖引用,比如,B依赖A,C再依赖B,C也能依赖A的引用或者依赖。
implementation:不可传递依赖引用,也就是上例中,C不能依赖A的引用或者依赖。
因此,implementation的编译时间会短一些。
解决办法:将build.gradle里的compile替换成implementation即可。
bug依然在,有点头秃
rm -Rf /Applications/Android\ Studio.app
rm -Rf ~/Library/Preferences/AndroidStudio*
rm ~/Library/Preferences/com.google.android.studio.plist
rm -Rf ~/Library/Application\ Support/AndroidStudio*
rm -Rf ~/Library/Logs/AndroidStudio*
rm -Rf ~/Library/Caches/AndroidStudio*
插一个在Linux下或者mac下完全卸载as的方法路径
算了,继续看,可能参考资料太老了
清单文件
只有manifest和application是必须的.这两个元素都只能有一个并且必须唯一.
同一级别的元素不区分顺序actvity和provider service
除了根属性意外,属性名称都以android开头
元素内声明指定的java类
指定多个值,不是一个元素多个值而是一直重复.带自动补全.好评
权限是一种限制,用于限制对部分代码或设备数据的访问。增加限制是为了保护可能被误用以致破坏或损害用户体验的关键代码。
如果应用需要访问受权限保护的功能,就必须在清单中使用<uses-permission>元素声明应用需要该权限。
将应用安装到设备上之后,安装程序会通过检查签署应用证书的颁发机构并(在某些情况下)询问用户,确定是否授予请求的权限。如果授予权限,则应用能够使用受权限保护的功能。否则,访问这些权限保护的功能会失败,并且不会向用户发送任何通知。
右键改变
Android要求所有APK必须先使用证书进行数字签名,然后才能安装。
证书和密钥库
公钥证书(也称为数字证书或身份证书)包含公钥/私钥对的公钥,以及可以标识密钥所有者的一些其他元数据(例如名称和位置)。证书的所有者持有对应的私钥。
在签名APK时,签名工具会将公钥证书附加到APK。公钥证书充当“指纹”,用于将APK唯一关联到你以及对应的私钥。这有助于Android确保APK的任何更新都是原版更新并来自原始作者。用于创建此证书的密钥称为应用签名密钥。密钥库是一种包含一个或多个私钥的二进制文件。
每个应用在其整个生命周期内必须使用相同的证书,以便用户能够以应用更新的形式安装新版本。
调试项目时签名
当点击Android Studio工具栏上的“Run 'app'”按钮时,Android Studio将自动使用通过Android SDK工具生成的测试证书签名你的APK。
当在Android Studio中首次运行或调试项目时,IDE将自动在$HOME/.android/debug.keystore中创建调试密钥库和证书,并设置密钥库和密钥密码。
由于测试证书通过构建工具创建并且在设计上不安全,大多数应用商店(包括Google Play商店)都不接受使用调试证书签名要发布的APK。
Android Studio会自动将你的测试签名信息存储在签名配置中,因此不必在每次测试时都输入此信息。签名配置是一种包含签名APK所需全部必要信息的对象,这些信息包括密钥库位置、密钥库密码、密钥名称和密钥密码。
懂?
程序的自动签名
国内提供了许多应用市场,例如360、百度、应用宝、豌豆荚以及各手机厂商的市场等。
当需要去统计App的下载量、激活量的时候,不能对单个市场的流量进行统计。推广部门也不知道推广效果如何。例如,今天App在应用宝进行了首发,需要统计今天应用宝有多少激活设备,有多少注册用户,这样才知道推广有没有效果。
为了解决这个问题就出现了多渠道打包,一份源码给不同的市场编译出不同的APK文件,每个APK文件中都包含了当前市场的渠道码(自己指定一个字符串)。
修改app/build.gradle文件,在Android标签下增加productFlavors标签,内容如下:
这个自定义变量会在BuildConfig类中自动生成,在Java代码中取这个值只要一行代码即可。
手动更新Gradel
性能分析工具
支持直接打开app分析
直接查看
矢量绘图(好像错了)