本文适用于从Eclipse转AndroidStudio的开发者
最近打算写一个系列的android初级开发教程,预计40篇以上的文章,结合我实际工作中的经验,写一些工作中经常用到的技术,让初学者可以少走弯路,这是本系列的第一篇文章,345大神写的。
原文地址
JDK安装并配置JAVA_HOME环境变量
这个就略过了,纯小白请自行百度
Android Studio安装
截止到2016年4月9日Android studio的最新稳定版本为2.0,推荐使用该稳定版本。
下载地址:
下载地址1 官网下载页面传送门
如果下载速度很慢,请复制下载连接到迅雷,万能的迅雷会帮你提速的。
如果根本打不开请移步地址2
你需要的这里基本都会有,强烈推荐到这里下载。
如果本地已经下载有sdk的话推荐下载zip免安装版,第一次启动的时候配置下sdk目录就好。
解决方法
# 禁用首次检查sdk功能 disable.android.first.run=true
点击Configure选择SDK Manger可以配置SDK目录等属性
点击左下角连接 启动SDK Manger 配置SDK更新镜像
我想说这一步在天朝是必须的,原因我想你懂的
下面说一下SDK更新镜像网站的使用方法:
具体请参考AndroidDevTools
1. 启动 Android SDK Manager ,打开主界面,依次选择『Tools』、『Options…』,弹出『Android SDK Manager - Settings』窗口;
在『Android SDK Manager - Settings』窗口中,在『HTTP Proxy Server』和『HTTP Proxy Port』输入框内填入上面镜像服务器地址(不包含http://,如下图)和端口,并且选中『Force https://… sources to be fetched using http://…』复选框。设置完成后单击『Close』按钮关闭『Android SDK Manager - Settings』窗口返回到主界面;
选择镜像网站的时候要注意的是,并不是所有的适合别人的就适合你还有可能根本无法更新,由于服务器远近带宽的问题,你应该选择适合自己的镜像,怎么选择。。。。我想说设置成功后选择更新个没下载的文件能成功下载更新并且速度不慢的就是合适的
主题设置
这个没什么好讲的,但是追求逼格喜欢黑色主题的小伙伴在意这个的不少,这里就上图说明一下。
启动页面点击 configure->选择Prefrences->Appearance->Theme->Darcula就是那个黑色Visual Studio风格主题 ->apply完事
如果想要更多字体关键词颜色什么的个性化配置的话推荐到下面的网址下载
http://color-themes.com/?view=index
选择喜欢的主题下载,下载到的是个jar文件,使用方法:
在AS中选择File->import settings ->选择下载的jar文件->勾选editor color 确认
跟着引导一步步来就好了,注意最低兼容版本的选择,新建项目的时候没有提供编译版本的选项,默认当前安装的sdk的最高版本,AS给提供了几个Activity模版,模版的实现都是比较经典的,推荐新建一个看一看。
新建完一个工程 如图点击左上结构视图切换,切换到Project目录结构(开发中常用的是Android视图,比较简洁) 其中 app2和mylibrary是为了方便后面讲解新建完成后手动添加的module默认新建工程是没有的。
MyApplication文件夹地位相当Eclipse的Workspace
不同的是AS工程目录下面多了用于全局项目的配置文件,比较重要的是local.properties、setting.gradle、gradle.properties 、build.gradle和gradle文件夹
include ':app', ':app2', ':mylibrary'
这个目录跟eclipse目录很像 很容易就能理解各种目录的对应关系,比较特别的是比eclipse多了一系列mipmap文件夹,mipmap和drawable文件夹一样都是用来存放图片的,按官方文档说法是 mipmap文件夹只放应用图标。其他需要使用的drawable资源象之前一样放到对应的drawable文件夹。
新建moudle时drawable文件夹只有默认不带分辨率参数的,适用于不同分辨率的文件夹需要自己手动建,AS提供了便捷的创建方式
在moudle上右键选择Android resource directory,分别选择类型drawable 左侧列表选择density 选择对dpi
如下图
其他res文件的创建同理。
有时候我们从网上下载了一个demo工程打开后gradle报错不能运行,这种情况大多数由于gradle版本不一致,AS下载对应版本失败的问题引起的,一般情况下有两种解决方法
* 手动下载对应gradle版本到本地目录
这种方式不推荐有兴趣的自行搜索
参考本地新建工程的相同文件
gradle-wrapper.properties
distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip //修改版本号与本地工程文件相同
build.gradle
dependencies { classpath 'com.android.tools.build:gradle:2.0.0' //修改版本号与本地工程文件相同 }
了解了项目结构之后简单的编译运行调试一般来说应该没有什么问题了,毕竟菜单栏,底部功能窗口功能提示都很明确,下面来说一说比较遇到问题的地方:添加依赖项目或运行第三方工程报错的问题。
添加依赖一般有三种方式
1. 添加代码仓库的依赖
这种方式最简单直接在项目module的build.gradle 里面的dependencies 里添加一句话,然后重新构建即可,如:
1
2
3
4
5
6
7
8
|
dependencies {
compile fileTree(dir:
'libs'
, include: [
'*.jar'
])
testCompile
'junit:junit:4.12'
compile
'com.android.support:appcompat-v7:23.3.0'
compile
'com.android.support:design:23.3.0'
//添加了OKHttp的依赖
compile
'com.squareup.okhttp3:okhttp:3.2.0'
}
|
可以手动添加也可以右键项目在open module settings里搜索添加(推荐这种方式)
AS会自动联网下载添加的依赖 这个一般不需要FQ
这个是最简单的也不用联网,和eclipse一样把jar包拷贝到libs文件夹内,然后需要重新构建一下项目 点击菜单栏的构建按钮即可如图
构建完成在左侧目录栏里的jar文件左侧应该会有尖头可以展开查看jar包内容
有的jar还需要关联.so库 这时候只需要在src目录的main文件夹下面建一个名为jniLibs的文件夹将so库拷贝进去即可(与res目录同级)
3. libray项目的依赖
很多时候我们的要用到从github上下载的项目,把其中提供的library添加到我们的项目中,方法如下 首先导入module然后添加依赖
打开project structure -> 添加新moudle ->在下载的工程文件中 选择要导入的library的module
注意不是导入下载的整个工程文件夹 而是选择其中的module文件夹
把导入的library添加到目的项目的依赖中
当导入的library里的项目build.gradle文件里包含一些上传到版本仓库的信息的话导入过后可能会报错,这时候只需要把不必要的信息注释掉即可,需要保留的是编译配置,依赖关系,目录配置。如下
apply plugin: 'com.android.library' //项目编译信息 android { compileSdkVersion 23 buildToolsVersion "23.0.2" defaultConfig { minSdkVersion 11 targetSdkVersion 23 versionCode 1 versionName "1.0" } } //依赖信息 dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.2.1' compile 'com.android.support:design:23.2.1' }
当然也可以手动把module文件夹拷贝到工程目录中然后修改settings.gradle文件,不过不推荐这种方式。
AS的自动提示功能很强大,有输入过后会自动弹出提示不需要像Eclipse一样按alt+/才提示,至于其他AS的快捷键很多就不一一说明了, 上个图拿去自行修炼吧
推荐的几个AS插件,具体用法请自行百度
1. GsonFormat
2. android-butterknife-zelezny
3. JsonOnlineViewer
国内上线APP一般要从多渠道发布,为了统计渠道安装量一般需要每个渠道生产一个安装包,AS自带多渠道打包功能,多渠道打包功能绝对是AS最实用的功能之一,这里重点讲一下。
签名文件可以在build->generate signed apk -> 选择项目 next ->create new生成,方式与eclipse差不多
打开module setting 新建一个signing项 选择签名文件 填写签名文件的密码别名等
作为示例我新建了三个配置并选择打包用到的签名配置 一个offline_debug、一个release_360、一个release_baidu
按照上一步配置好之后,build.gradle里会多出productFlavors和singConfig配置,我们要修改的是productFlavors部分。
如何修改我们来举例说明
这是build.gradle文件内修改的部分
defaultConfig { applicationId "com.example.mark.myapplication" minSdkVersion 14 targetSdkVersion 23 versionCode 1 versionName "1.0" //BuildConfig.IS_SIGN = false buildConfigField "boolean", "IS_SIGN", "false" } productFlavors { offline_debug { signingConfig signingConfigs.signConfig //这里演示的是一个变量的写法 manifestPlaceholders = [APP_NAME: "Debug版本"] } release_360 { signingConfig signingConfigs.signConfig //BuildConfig.IS_SIGN = true buildConfigField "boolean", "IS_SIGN", "true" //这里演示的是有多个变量的写法 manifestPlaceholders = [APP_NAME: "360版本", EXAMPLE: "360"] } release_baidu { signingConfig signingConfigs.signConfig buildConfigField "boolean", "IS_SIGN", "true" manifestPlaceholders = [APP_NAME: "百度版本", EXAMPLE: "baidu"] } }
其中defaultConfig内的 buildConfigField “boolean”, “IS_SIGN”, “false”一句 是在构建项目生成的BuildConfig类中添加一个名为 IS_SIGN 的bool变量,并赋值为false。
这个变量是可以在代码里使用的,如下面的代码可以用来切换线上线下的请求地址
public static String BASE_URL; static { if(BuildConfig.IS_SIGN){ BASE_URL = "线上地址"; }else{ BASE_URL = "线下地址"; } }
productFlavors 内的manifestPlaceholders = [APP_NAME: “Debug版本”] 一句的含义是 将AndroidManifest.xml文件里的变量APP_NAME替换为冒号后面的字符串,这句是只有一个要替换的变量的写法,后面you多个变量的写法举例。这个APP_NAME在Manifest文件中的定义格式如下 ${变量名} 在打包的时候gradle会自动把这个占位变量给替换掉。
<activity android:name=".LoginActivity" android:label="${APP_NAME}"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
这种变量定义可以出现在Mainfest中任何需要字符串的位置,我上面只是一个示例,请活学活用不要照搬照抄。