-
1.下载Android Studio
官网下载:Android Studio for Window ... 百度云下载:android-studio-bundle-141.1903250-windows.exe
-
2.安装Android Studio
傻瓜式的下一步而已,只列出需要注意的页面:
3.新建工程
安装完毕后,打开我们的Android Studio,第一次启动需要下载SDK等一些东西,时间比较长,笔者等了大概40分钟才下载完毕
选择第一项,新建一个Android项目
选择开发程序将运行在哪个平台上:
选择Activity的风格:
设置进入程序一个页面后的Activity的一些信息
Finish然后是漫长的等待~
4.IDE的界面分析
先看下整个界面吧:
接着看下我们的项目结构,而我们一般关心的只是app这个目录:
5.运行下程序试试
点击菜单栏的X,即可运行程序:
- src目录:包含App所需的全部程序代码文件,我们大多数时候都是在这里编写我们的Java代码的
- gen目录:只关注R.java文件,它是由ADT自动产生的,里面定义了一个R类,可以看作一个id(资源编号)的字典,包含了用户界面,图形,字符串等资源的id,而我们平时使用资源也是通过R文件来调用的,同时编译器也会看这个资源列表,没有用到的资源不会被编译进去,可以为App节省空间
- assets目录:存放资源,而且不会再R.java文件下生成资源id,需要使用AssetsManager类进行访问
- libs目录:存放一些jar包,比如v4,v7的兼容包,又或者是第三方的一些包
- res资源目录:存放资源的,drawable:存放图片资源;layout:存放界面的布局文件,都是XML文件; values:包含使用XML格式的参数的描述文件,如string.xml字符串,color.xml颜色,style.xml风格样式等
- AndroidManifest.xml配置文件:系统的控制文件,用于告诉Android系统App所包含的一些基本信息,比如组件,资源,以及需要的权限,以及兼容的最低版本的SDK等
-
Git是什么?
一个分布式版本控制系统,和SVN类似,但远比SVN强大的一个版本控制系统 ①Git可以方便的在本地进行版本管理,如同你本地有一个版本管理服务器一样 我们可以选择在合适的时间将本地版本推送到统一的版本管理服务器 ②Git每次会提取整个代码仓库的完整镜像,相当于对整个代码仓库都进行了一次备份,这样计时版本服务器除了问题,我们可以直接采用本地仓库恢复!结合本地版本管理功能,远程版本管理服务器出问题了,我们依然能继续写自己的代码,当他恢复的时候我们再提交我们的本地版本! Git研发初期是为了更好的管理Linux内核,不过现在已经广泛应用于各种项目中!
安装Git
如果你的系统是Linux的话,直接打开shell输入:
sudo apt-get install git
当然,大部分的系统估计都是Windows,这就需要我们到网上下载一个Git For Window了,可到下述网站下载: https://git-for-windows.github.io/ 点击 Download,跳转到 Github ,下载对应安装包即可!
点击后进入页面,下载如下文件即可
或者直接下载目前最新版2.7.0: v2.7.0.windows.1 接着傻瓜式的下一步就可以了~ 接下来你可以找到Git Gui然后开始玩Git,不过如果以后换到其他平台上,没有图形化界面你就寸步难行了! So,如果你有兴趣的话,我们来玩命令行,以后换了系统也能正常的玩Git!
玩转Git命令行
当然Git肯定是搭配着GitHub玩才够味的,不过先来学习一些本地的指令先把! 当你安装完Git后我们可以在任意位置右键,点击Git bash打开我们的Git命令行! 你可以可以点击Git Init Here直接在当前目录下创建一个代码仓库,又或者点击Git Gui打开Gui的图形操作页面!
1.创建代码仓库
Step 1:先配置下我们的身份吧,这样在提交代码的时候Git就可以知道是谁提交的,命令如下:
git config --global user.name "coder-pig" git config --global user.email "779878443@qq.com"
配置完成后,我们可以再次输入,不包括名称,可以看到我们已经配置成功了
Step 2:找个地方创建我们的代码仓库,然后我创建了一个新的项目:TestForGit,来到工程的目录下,右键,打开我们的Git Bash,键入下述指令完成代码仓库的建立!另外这个代码仓库其实是用来保存版本管理所需的一些信息,我们本地提交的代码都会提交到代码仓库中,于是乎我们可以选择还原到某个版本,当然,如果需要的话,我们还可以将保存在代码仓库中的代码推送那个到远程仓库中!比如GitHub!
git init
一个简单的代码,代码仓库就创建完毕了!继续输入:ls - al可以看到下目录下有个.git的文件夹就是他了!
也可以打开工程目录,同样看也看到.git文件夹;如果我们想删除代码仓库只需把这个文件夹删掉即可!
2.提交本地代码
创建完代码仓库,接下来说下如何提交代码,我们是先用add命令把要提交的内容都加进来,然后commit才是真的去执行提交操作!命令例子如下,你可以一次次慢慢添加,当然也可以全部提交,直接git add .即可完成! 我们现在工程目录下创建一个readme.txt的文件试试,随便写点东西,然后依次输入下述指令:
git add readme.txt git commit -m "Wrote a readme file"
输入命令试试:
当然如果你可以add多个文件后再一次性commit,不过如果我们改动的文件很多的话,我们可以git add .一次添加全部,但有一些是几百年都不变一次的又或者自动生成的,比如lib,gen,bin文件夹等等,我们可以在代码仓库的根目录下创建一个名为.gitignore的文件,然后编辑里面的内容,把不需提交的文件忽略掉!
接着输入要提交时忽略的文件内容即可!
那么我们git add .的时候,这里的文件就不会add,另外可能你会觉的commit后面写-m "xxx"很麻烦,想偷懒,但还是写上吧!输入的是本次提交的一些声明,比如自己修改了些什么!就好像写代码的时候,你偷懒不写注释,过几天你连自己写的什么鬼都不知道...
3.查看修改内容
好吧,前面我们用git add提交了整个项目到本地仓库,接下来我们改点东西,然后使用git status可以查看 修改的部分,比如,我们删掉MainActivity.java里的菜单的代码以及多余的菜单相关的包!
他就会提示我们哪些文件发生了改变,但是还没有提交,如果我们想看下具体更改了什么,我们可以用到git diff命令,另外,按Q可以退回命令行输入!
4.查看提交记录
当然随着我们项目的深入,Commit的次数也会越来越多,可能你早已忘记每次提交都修改了什么内容, 没事,Git帮你记着呢,使用git log即可查看历史提交信息!键入
git log
回车:
我们取其中一小部分来分析:
commit defd8af52be5183dfceb3e5cf23f78ea47d013b0 Author: coder-pig <779878443@qq.com> Date: Fri Jun 19 17:00:36 2015 +0800 MainActivity Delete Menu
依次是:
- 此次提交对应的版本号
- 提交人:姓名 邮箱
- 提交的时间
- 提交版本修改的内容:就是我们commit -m "xxx"里的xxx
5.撤销未提交的修改
比如我们刚提交了一个版本,然后又乱七八糟地写了一堆东西,突然发现不小心误删了一些东西,然后ctrl + s保存了,这个时候是不是欲哭无泪,不过有Git,只需一个checkout命令即可撤销更改,当然是你还没add的情况,比如我们在MainActivity里随便添加一条语句,然后ctrl + s保存代码!
然后命令行键入:git diff:
嗯,这里可以看到我们改的内容,我们可以回去把这句代码删掉,但是如果改的有上千行你怎么改, 于是乎这个时候我们可以使用
git checkout src/com/jay/example/testforgit/MainActivity.java
然后会神奇的发现,我们新写的代码没了!duang一下就没了,不信你可以自己试试
当然,如果我们已经add了的话,那么checkout是没任何作用的,我们要先取消添加才可以撤回提交,使用下述指令:
git reset HEAD src/com/jay/example/testforgit/MainActivity.java git checkout src/com/jay/example/testforgit/MainActivity.java
6.版本回退
第五点我们教了大家撤销未提交的修改,但加入提交了,我们想回退到之前的某一个版本怎么办? 第四点中我们可以通过git log查看我们的提交记录,我们需要从这里获取一个版本号, 一般我们只需要前七位字符就够了;另外在Git中,用HEAD代表当前版本,上一个版本就是HEAD^, 再上一个版本就是HEAD^^依次类推!我们先Git Log看下版本历史先!
我们回到前一个提交的版本吧,依次键入下述指令:
git reset --hard HEAD git reset --hard HEAD^ git log
这时看下我们的控制台:
可以看到我们已经回退到了前一个版本了,当然你可以直接这样写:
git reset --hard ad2080c
就是这么简单!回退后,你突然后悔了,想回退回新的那个版本, 可是遗憾的是,你键入git log却发现没有了最新的那个版本号,这怎么办呢... 没事,Git中给你提供了这颗"后悔药",Git记录着你输入的每一条指令呢!键入:
git reflog
你会发现,版本号就在这里:
然后键入:
git reset --hard ad2080c
可以看到我们又回到了最新的那个版本了,就是这么溜!
-
.5.2 Git之使用GitHub搭建远程仓库
分类 Android 基础入门教程
本节引言:
在上一节中,我们学习了如何使用Git,构建我们的本地仓库,轻松的实现了版本控制以及代码还原,修改日志查看等;读者肯定不满足与本地是吧,假如是多个人一起来开发一个程序呢?我们需要一个作为服务器的远程仓库!当然搭建一个服务器是需要成本的,为什么不把项目托管到Github上呢?作为开源代码库以及版本控制系统,Github拥有140多万开发者用户。随着越来越多的应用程序转移到了云上,Github已经成为了管理软件开发以及发现已有代码的首选方法,不需要任何成本,为何不使用呢?是吧!本节就来学习如何把我们的代码托管到Github上!
1.账号注册&仓库创建:
打开Github官网注册:Github官网,填写注册相关信息:用户呢称,邮箱,密码
注册完,跳转到如下页面,选择仓库购买方式(私有仓库,别人不可以访问,要权限),一般我们自己玩选Free: PS:对了,这时候你邮箱可能收到一封验证邮件,点下完成验证。
接下来,创建一个我们的代码仓库:
为自己的仓库添加点内容提示,就是项目的一些概述(可写可不写)
简单介绍下主页的一些东西:
2.Clone代码库到本地
当然,你可以直接用图形化界面克隆,不过我还是喜欢通过命令行来Clone,先复制下Clone的地址
然后在某个地方,有键打开Git Bash:
键入:
git clone https://github.com/ZPJay/Garbage.git
然后可以看到我们的代码库就下载完成了:
打开文件夹,可以看到下述内容:
3.分支管理
对于刚接触版本控制工具的朋友来说,分支可能比较陌生,但是他会给我们带来很大的便利!限于篇幅, 笔者直接丢个链接,大家看看图就知道了:廖雪峰的官方网站:创建和合并分支!写得真心很赞~建议收藏!
了解概念后,我们来熟悉与分支相关的几个命令:
①创建分支(后者创建同时会切换分支):
git branch v1.0.3 或 git checkout -b v1.0.4
②查看版本库中所有分支:
git branch -a
③切换到某一分支:
git checkout v1.0.3
④删除某一分支:
git branch -D v1.0.4
⑤合并分支
git merge v1.0.3
4.本地仓库与远程仓库同步问题
前面执行的这些分支操作都是在本地进行的,说了项目托管到GitHub上,我们肯定要跟远程仓库有交流是吧! 我们去年前面已经试过用clone命令把项目下载到本地,那么我们修改后如何把代码同步到Github上呢?我们先对我们的本地仓库做一点点修改,接着git add和git commit本地准备后,然后:
git push origin master 或者直接 git push
将我们本地的内容提交上去:
然后看下我们的Github,可以看到内容已经发生改变,而且提交者是我的另一个账号!
有同步到服务器,肯定有服务器同步到本地是吧,很简单,就一个
git pull
就可以
.9图片怎么玩
1.什么是.9图片?
答:图片后缀名前有.9的图片,如pic1.9.png这样的图片
2. .9图片能干嘛? 答: 在图片拉伸的时候特定的区域不会发生图片失真,而不失真的区域可以由我们自己绘制
核心要点:左上拉伸,右下内容
.先说下图片资源:
- drawable:存放各种位图文件,(.png,.jpg,.9png,.gif等)除此之外可能是一些其他的drawable类型的XML文件
- mipmap-hdpi:高分辨率,一般我们把图片丢这里
- mipmap-mdpi:中等分辨率,很少,除非兼容的的手机很旧
- mipmap-xhdpi:超高分辨率,手机屏幕材质越来越好,以后估计会慢慢往这里过渡
- mipmap-xxhdpi:超超高分辨率,这个在高端机上有所体现
接着说下布局资源:
- layout:该目录下存放的就是我们的布局文件,另外在一些特定的机型上,我们做屏幕适配,比如480*320这样的手机,我们会另外创建一套布局,就行:layout-480x320这样的文件夹!
3.接下来说下菜单资源:
- menu:在以前有物理菜单按钮,即menu键的手机上,用的较多,现在用的并不多,菜单项相关的资源xml可在这里编写,不知道谷歌会不会出新的东西来替代菜单了~
4.接下来说下values目录:demens.xml:定义尺寸资源
- string.xml:定义字符串资源
- styles.xml:定义样式资源
- colors.xml:定义颜色资源
- arrays.xml:定义数组资源
- attrs.xml:自定义控件时用的较多,自定义控件的属性!
- theme主题文件,和styles很相似,但是会对整个应用中的Actvitiy或指定Activity起作用,一般是改变窗口外观的!可在Java代码中通过setTheme使用,或者在Androidmanifest.xml中为<application...>添加theme的属性! PS:你可能看到过这样的values目录:values-w820dp,values-v11等,前者w代表平板设备,820dp代表屏幕宽度;而v11这样代表在API(11),即android 3.0后才会用到的!
5.在接着说下这个raw目录: 用于存放各种原生资源(音频,视频,一些XML文件等),我们可以通过openRawResource(int id)来获得资源的二进制流!其实和Assets差不多,不过这里面的资源会在R文件那里生成一个资源id而已
6.最后还有个动画的,动画有两种:属性动画和补间动画:
animator:存放属性动画的XML文件
anim:存放补间动画的XML文件
2.如何去使用这些资源
Java代码中使用:
Java 文字:
txtName.setText(getResources().getText(R.string.name));
图片:
imgIcon.setBackgroundDrawableResource(R.drawable.icon);
颜色:
txtName.setTextColor(getResouces().getColor(R.color.red));
布局:
setContentView(R.layout.main);
控件:
txtName = (TextView)findViewById(R.id.txt_name);
XML代码中使用:
通过@xxx即可得到,比如这里获取文本和图片:
<TextView android:text="@string/hello_world" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background = "@drawable/img_back"/>
布局文件:activity_main.xml:
代码如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /> </RelativeLayout>
AndroidManifest.xml配置文件:
代码如下:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="jay.com.example.firstapp" > <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
代码分析:
Android程序签名打包
1.什么是签名,有什么用:
Android APP都需要我们用一个证书对应用进行数字签名,不然的话是无法安装到Android手机上的,平时我们调试运行时到手机上时,是AS会自动用默认的密钥和证书来进行签名;但是我们实际发布编译时,则不会自动签名,这个时候我们就需要进行手动签名了! 为我们的APK签名有以下好处:
- 1.应用程序升级:如果你希望用户无缝升级到新的版本,那么你必须用同一个证书进行签名。这是由于只有以同一个证书签名,系统才会允许安装升级的应用程序。如果你采用了不同的证书,那么系统会要求你的应用程序采用不同的包名称,在这种情况下相当于安装了一个全新的应用程序。如果想升级应用程序,签名证书要相同,包名称要相同!
- 2.应用程序模块化: Android系统可以允许同一个证书签名的多个应用程序在一个进程里运行,系统实际把他们作为一个单个的应用程序,此时就可以把我们的应用程序以模块的方式进行部署,而用户可以独立的升级其中的一个模块。
- 3.代码或者数据共享: Android提供了基于签名的权限机制,那么一个应用程序就可以为另一个以相同证书签名的应用程序公开自己的功能。以同一个证书对多个应用程序进行签名,利用基于签名的权限检查,你就可以在应用程序间以安全的方式共享代码和数据了。 不同的应用程序之间,想共享数据,或者共享代码,那么要让他们运行在同一个进程中,而且要让他们用相同的证书签名。 ————上述内容摘自:android 为什么需要签名
反编译APK获取代码&资源
我们可以下载别人的APK,然后改下后缀名,改成xxx.zip,然后解压
1.要准备的三个工具
- apktool:获取资源文件,提取图片文件,布局文件,还有一些XML的资源文件
- dex2jar:将APK反编译成Java源码(将classes.dex转化为jar文件)
- jd-gui:查看2中转换后的jar文件,即查看Java文件 为了方便各位读者,这里将三个打包到一起放到云盘中,又需要的可以进行下载:反编译相关的三个工具.zip
详见转载的https://blog.csdn.net/s13383754499/article/details/78914592