一个人的力量是有限的,而且也有自己的工作忙,不可能去另外整一个大更新,今天写的,可能过几个月就过时了,这是IT界的常态,所以还是得自己学会主动去获取知识的能力.但是切记一点,你是按需学习,而不是一个收破烂的,收藏一堆链接,收藏了你就会了,其实收集得越多,你会越浮躁!
安装Android Studio
这个比较简单,看流程就可以了的。但是我的电脑可能是内存不够,不能运行安卓虚拟机AVD,参考网上的解决方法,用GenyMotion模拟器。
AS项目目录结构分析,请阐述目录作用
- libs
- java
- res
- drawable
- layout
- values
- mipmap
- AndroidManifest.xml
.9图片
1.什么是.9图片?
答:图片后缀名前有.9的图片,如pic1.9.png这样的图片
2. .9图片能干嘛? 答: 在图片拉伸的时候特定的区域不会发生图片失真,而不失真的区域可以由我们自己绘制
UI设计
- 2个工具
- MockPlus
- Android自带的DroidDraw工具
与工程相关的3个文件
MainActivity.java
activity_main
AndroidManifest.xml
MainActivity.java
package jay.com.example.firstapp;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
为什么需要调用super.onCreate()方法?
super.onCreate(savedInstanceState)
super.onCreate(savedInstanceState)是调用父类Activity的onCreate()方法。
为什么要有super?
请看代码:
public class MainActivity extends Activity{
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView();
…
}
上述代码中的protected void onCreate()方法其实是覆写了基类(Activity类)的onCreate方法,super.onCreate()是在调用基类中的onCreate方法。而在子类的onCreate方法中,不能直接调用onCreate(),因为这样做会产生递归,为了解决这一问题,java用super关键字表示超类的意思,当前类就是从超类继承而来的
savedInstanceState是保存当前Activity的状态信息,如果一个非running的Activity因为资源紧张而被系统销毁,当再次启动这个Activity时,可以通过这个保存下来的状态实例,即通过savedInstanceState获取之前的信息,然后使用这些信息,让用户感觉和之前的界面一模一样,提升用户体验。
布局文件: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>
安卓程序签名打包
为什么需要签名?
- app升级:app升级的时候需要提供一样的签名,否则会被系统认为是两个不一样的应用。
- 应用程序模块化。在安卓系统中,允许具有相同签名的多个应用程序在同一个进程里运行。所以我们可以将应用程序模块化部署,这样用户可以升级独立的模块。
- 代码或者数据共享。相同签名的程序之间可以互相共享数据和代码。
如何打包签名
AS中build可以创建。
反编译APK获取源代码/资源
- apktool:获取资源文件,提取图片文件,布局文件,还有一些XML的资源文件
- dex2jar:将APK反编译成Java源码(将classes.dex转化为jar文件)
- jd-gui:查看2中转换后的jar文件,即查看Java文件 为了方便各位读者,这里将三个打包到一起放到云盘中,又需要的可以进行下载: 反编译相关的三个工具.zip