AndroidStudio的经典教程(干货)

  目录

转载注明出处:http://write.blog.csdn.net/mdeditor#!postId=49473215 
欢迎大家评论交流,如有问题,可以留言!!!

常见设置 
导入第三方主题 
自动提示的设置 
修改成Eclipse的快捷键风格 
拷入java代码的冲突提醒 
使用Genymotion 
导入Eclipse工程 
程序从运行状态,直接切换到Debug状态 
创建和删除library 
导入一些library和jar 
同步gradle文件 
Gradle概念:构建工具、以Groovy为基础、主要面向Java 
在工程下的build.gradle配置仓库 
创建签名文件并打包 
使用Gradle命令进行打包 
gradlew的原理 
aar包的使用 
AS中导入so库 
65535问题 
多渠道打包 
导 入Github中的源码 
其他问题 
  Win10下AS自带命令行无法使用问题

需要分清两个概念:Project和Module 
Project:相当于Eclipse中的工作区的概念,里面可以存在多个Module 
Module:相当于Eclipse中的project,Module可以是library或者application 
每个Module下都有一个build.gradle文件,Project下也有一个build.gradle文件

常见设置

a)在Setting中,修改主题、修改工程目录的字体大小。 
AndroidStudio的经典教程(干货)_第1张图片

b)在Setting中,显示行号: 
AndroidStudio的经典教程(干货)_第2张图片

c)设置注释模板,File–>Other Setting –> Default Setting 
AndroidStudio的经典教程(干货)_第3张图片 
d)在Default Setting中,设置xml格式,全部勾选,否则换行会有点问题 
AndroidStudio的经典教程(干货)_第4张图片

e)在Default Setting中,修改编码方式 
AndroidStudio的经典教程(干货)_第5张图片

导入第三方主题

网站:http://www.ideacolorthemes.org 
下载的文件是个jar包,选择File–>Import Settings 选项,然后选择对应的jar包即可

自动提示的设置

a)如下图: 
AndroidStudio的经典教程(干货)_第6张图片

b)系统提示时,修改大小写敏感,First letter是首字母大小写敏感,将鼠标处修改成None即不区分大小写 
AndroidStudio的经典教程(干货)_第7张图片

修改成Eclipse的快捷键风格

由于修改成Eclipse风格后,有少部分快捷键不能使用需要手动修改,下面是一些快捷键的修改。

a)修改Eclipse中的alt + / 的效果;在搜索框中输入:class name completion,然后选择“add keyboard shortcut”,修改快捷键为alt + / 即可。 
AndroidStudio的经典教程(干货)_第8张图片

b)Eclipse快捷键风格中,如何通过Ctrl + 左键单击 查看方法或类的源码,如下图,此处是鼠标相关的快捷键,注意!!!!! 
AndroidStudio的经典教程(干货)_第9张图片

在Click Pad 处 按住Ctrl + 鼠标左键单击即可,可以在preview看到设置好的快捷键,然后选择OK 
AndroidStudio的经典教程(干货)_第10张图片

拷入java代码的冲突提醒

做如下选择,这样当从其他地方拷入代码时,可以自动导入引用,如果有冲突,会进行询问(Ask)

AndroidStudio的经典教程(干货)_第11张图片

使用Genymotion

a)首先需要安装Genymotion,然后需要AS中添加插件,操作:File–>Setting–>搜索plugins,在界面中点击下方的 “Browse repostories”,在弹出的窗口搜索“Genymotion”,然后安装即可。 
b)Genymotion的插件安装成功后,会出现如下图标,点击打开即可,首次运行需配置 
安装模拟器的路径 
这里写图片描述

导入Eclipse工程

Android Studio,点击左上角File–>New–>Import Project,选择对应Eclipse工程即可。 
系统会根据Eclipse工程生成一个AS的工程的副本,在生成过程中会删除一些不识别的 文件,同时会生成对应的gradle文件。

程序从运行状态,直接切换到Debug状态

点击下图所示的按钮即可。 
这里写图片描述

创建和删除library

New–> New Module ,选择Android Library如下所示: 
AndroidStudio的经典教程(干货)_第12张图片

删除Module,首先应该在Project Structure中删除,然后再右键删除;否则不能删除。 
AndroidStudio的经典教程(干货)_第13张图片 AndroidStudio的经典教程(干货)_第14张图片

导入library和jar

在Module下的build.gradle文件中的显示,如下图 
AndroidStudio的经典教程(干货)_第15张图片

同步gradle文件

每当gradle文件有所修改时,需要点击下图中的Sync Now 进行同步。

这里写图片描述

Gradle编译失败,会出现如下所示部分,可以点击Try Again重新编译 
这里写图片描述

Gradle概念和介绍

一种构建工具、以Groovy为基础、主要面向Java。 
build.gradle对应的图形界面就是Project Structure,导入jar包在这两个地方都可以进行,效果相同;通过这种方式导入的jar包不在libs下面,在External Libraries下 
AndroidStudio的经典教程(干货)_第16张图片

gradle文件简介: 
AndroidStudio的经典教程(干货)_第17张图片

在工程下的build.gradle墙内仓库

默认是jcenter() 
  jcenter对应的网址:https://bintray.com/bintray/jcenter 
可以修改映射仓库的地址,改为墙内的网址。修改工程目录下的gradle文件,如下图: 
AndroidStudio的经典教程(干货)_第18张图片 
buildscript中的仓库是在gradle编译中需要下载的gradle依赖文件的仓库。 
allprojects中的仓库是工程中的jar包下载的仓库

创建签名文件并打包

操作Build –> Generate Signed APK,然后在下图中选择“Create new”,然后按步骤操作即可 
AndroidStudio的经典教程(干货)_第19张图片

选择Next,出现如下窗口,然后选择Build Type和渠道即可。 
AndroidStudio的经典教程(干货)_第20张图片

使用Gradle命令进行打包

右击工程,选择“Open Module Setting”,配置如下信息: 
注意:该窗口的所有标签对应相应Module下的gradle文件,所有操作会在对应gradle文件中生成相应代码;使用AS创建的签名文件的扩展名是jks,不再是keystore了 
AndroidStudio的经典教程(干货)_第21张图片


配置打包类型及其签名信息,如下图: 
AndroidStudio的经典教程(干货)_第22张图片

上述操作完成后,会在build.gradle中生成对应的配置代码

然后在AS自带的命令行中输入 
gradlew clean (先clean) 
gradlew assembleRelease进行打包 
  ubuntu上不能直接输入gradlew命令,需要输入 ./gradlew 
点击运行按钮(绿色箭头)运行的是:assembleDebug!!!

生成的apk在build/output文件夹下,有两个文件:app-release.apk、app-release-unaligned.apk(该文件是没有经过zipalign优化的apk)

gradlew的原理

a)gradlew会调用gradle wrapper 找到系统中对应版本的gradle,如果没有该版本则进 行下载,然后执行assembleRelease,可以屏蔽gradle不同版本信息;如果需要直接使 用gradle需要配置环境变量 
b)工程目录下gradle/wrapper下有gradle-wrapper.jar和gradle-wrapper.properties两个 文件,后者是一个配置文件,该文件配置了所依赖的gradle的相关信息,该文件中的 distributionUrl是对应的gradle版本信息,当程序运行是会检查该版本是否存在,如果 不存在则需要到对应网站下载该版本gradle!!!配置文件如下所示: 
AndroidStudio的经典教程(干货)_第23张图片 
注意:在File–>Setting–>Gradle中配置的信息只是针对使用AS才生效,如果使用命令 行(包括AS自带的命令行)则没有效果

aar包的使用

在gradle中类型为library的Module会自动在该Module下的build\outputs\aar目录下 生成aar包 
这里写图片描述 
然后在AS中选择File–>New–>New Module,做如下选择,依赖的添加同library 

AS中导入so库

1)、AS默认导入so文件放入哪里? 
放在src/main目录下面,在 该目录下创建目录jniLibs,这个jniLibs目录就是AS默认的so文件存放的位置,不需要在gradle文件中做其他配置。 
2)、jar包默认放在module根目录下的libs目录下 
3)、 如果jniLibs不放在默认目录下,放在与libs同级目录下,此时需要在module下的build.gradle文件的android{}中添加如下代码: 
这里写图片描述

此时设置jniLibs的目录为”jniLibs“;当前目录是module的根目录!!! 
默认配置:jniLibs.srcDirs (‘src/main/jniLibs’)

65535问题

a)方法一:屏蔽检测,在类型为application的Module下的gradle文件中android{}添加 
 

b)方法二:进行分包 
·添加依赖jar:compile ‘com.android.support:multidex:1.0.0’ 
·在每个module中添加: 
defaultConfig { multiDexEnabled true } 
·在自定义的Application中添加:

@Override 
protected void attachBaseContext(Context base) { 
  super.attachBaseContext(base); 
  MultiDex.install(this);

没有自定义Application如,那么你在AndroidManifest.xml中使用MultiDexApplication即可

多渠道打包

a)清单文件中将android:value设置成变量 
这里写图片描述

b)在gradle文件中进行变量定义 
AndroidStudio的经典教程(干货)_第24张图片

c)然后直接使用命令打包即可,会在build/output目录下生成不同apk。

导入Github中的源码

1)导入之前需要查看gradle-wrapper.properties文件 
查看依赖版本,可以更改成本地已经存在的版本,避免下载

2)导入工程(Import Project),此时仍然显示下载,使用任务管理器强制停止AS,到dists/gradle下面找到该工程创建的文件夹,将其中的内容删除,将其他文件夹中的内容拷入之后,再重新导入,这样就不再下载

3)导入后,可能会出现如下问题: 
 
由于已经修改过gradle的版本,所以不会是版本问题,则应该是插件问题, 
到工程根目录下的build.gradle文件中,修改dependencies中的“com.android.tools.gradle”的版本号,可参考自己工程的版本号!!改完之后,点击右上角的”Try Again“

4)接下来可能会遇到的问题:build tools的问题 
这里写图片描述 
修改所有Module下的build.gradle文件中的buildToolsVersion版本,改成自 己电脑中有的版本,可参考自己创建的工程;最好和compileSdkVersion一致!

5)接下来可能会遇到的问题: 
这里写图片描述 
解决方案:旧版本使用的仓库是:mavenCentral(),需要改成最新的jcenter() 
apply plgin是标志module的类型的,不应该出现在工程根目录下 的build.gradle中,而且其格式应该使用最新的 
apply from不知道什么作用,可以删除!! 
删除其他不太对劲的东西

6)编译通过;Reload工程,运行程序,可能出现问题: 
AndroidStudio的经典教程(干货)_第25张图片 
原因:多个module使用了相同的包名

7)接下来的问题:在该类中找不到布局文件 
这里写图片描述 
原因:由于res有对应的布局,所以应该是R文件的问题,上个问题中修改包名, 可能多修改了部分内容,此时应该检查R文件的引用 
解决方案:修改R文件的引用

8)参考链接: 
http://blog.csdn.net/onlysnail/article/details/45115093

9)总结:出现的问题大部分是gradle相关的,主要集中在build.gradle中,需要对 gradle有较为全面的理解

其他问题

AS自带命令行空指针问题: 
描述:报空指针 

原因:由于win10更新了命令行,导致AS无法调用,IDEA有同样问题 
解决方案: 
打开系统命令行,右击标题栏选择“属性”–>“选项”–>“使用旧版控制台”,然后重启系统即可

你可能感兴趣的:(AndroidStudio的经典教程(干货))