安卓入门

169 阅读7分钟

1. 如何创建新的项目

(1) 创建时有两种方式:

a) 打开软件之间进入某个工作空间(如图1所示)则

File-->Open-->New Project

image.png

图1

 

b) 打开软件后是如图2界面则选择 start a new Android Studio project

 

 

image.png  

图2

 

 

(2)选择如图3的 Empty Activity,点击next

 

image.png 图3

(3)如图4根据需要选择修改项目名、包名、项目位置、最低安卓版本,然后点击Finish ,完成创建。

 

image.png 图4

(4)创建完成如图5:

 

image.png 图5

 

2. 项目包结构

    

image.png 图6                                           

image.png  图7

可以看到图6 、图7为两种包结构,一种是工作空间结构的,也是实际你在本地文件夹看到的包结构,另外一种是针对于工作空间下某个android 项目的包结构,我们以工作空间下某个android 项目的包结构来介绍具体部分。

 

image.png 图8

Manifests: AndroidManifest.xml 这个文件是整个项目的清单文件,用来配置一些类似于包名、权限、程序组件等重要信息。一个应用程序在运行的时候是先去运行它的清单文件,系统过滤清单文件以后就知道你当前应用程序有什么内容,该去怎么执行。

 

Java :用于编写java代码

 

assets :存放资源文件(资源、音频、xml),不会自动生成id且不会自动占用当前应用程序生成最终的apk的大小。当assets中的资源文件没有被用到的时候是不会占当前应用程序大小的

 

res: res顾名思义是资源文件,目录中存放应用用到的所有资源,如图片、布局等。该目录中的资源有多大,它就会占用我们最终生成的apk文件大小。res目录下还有很多不同的文件夹用于不同的功能,例如drawable、layout、values等。

drawable:该目录用来存放不同密度的图片资源,有很多不同的尾缀(hdpi、ldpi、mdpi、xhdpi等),不同的尾缀用来代表不同的分辨率。android设备由于厂家和机型的不同,所以市面上有很多不同分辨率的android手机,我们在开发应用的时候会用到不同分辨率的图片,当运行在不同分辨率的设备上的时候当前应用程序会自动去寻找这个分辨率所对应的图片。

mipmap:存放apk不同分辨率的图标

layout:用来存放布局文件的,布局就是手机屏幕展示的应用的界面,我们可以在这个界面根据我们的需求来进行一些UI的操作和处理。android中布局文件是使用XML文件(.xml)来编辑的。

values:存放字符串(strings.xml),主题(styles.xml),颜色(colors.xml)等资源文件。在程序开发过程中会用到很多字符串、宽高大小这些数字,还有一些颜色和一些样式风格这些内容,可以存放在我们的values文件夹中

 

gradle scripts:项目的gradle配置

3. 如何打包

 

(1) 如图9 在工具栏选择Build-->Generate Signed Bundle / APK

 

 

image.png 图9

(2) 如图10 弹出的窗口页面选择第二项:APK ,点击next

 

 

image.png 图10

(3)如图11 中Key store path 是安卓签名文件位置,如果有创建好的签名文件则直接选择即可,若没有则可以创建,点击图中 Create new… 按钮

 

image.png 图11

 

下图12是创建新的签名文件:

 

Key store path: 签名文件存放位置

Password: 密码 、confirm: 重复密码

 

Alias: 签名的名字

Password: 签名的密码  Confirm: 重复密码(一般签名密码与签名文件密码设置为一致的)

Validity(years): 签名有效期

 

Certificate下的是开发者信息。

 

 

图12

创建好签名信息后点击ok,回到之前的页面(如图13)可以看到该填写的都已经自动填写,你也可以将记住密码勾选,下次使用时较为方便。然后点击next

 

 

image.png 图13

image.png  

 

在图14页面中可分为三部分,

 

第一部分为apk保存位置,

第二部分为打包等级:debug版本(debug) 和 发行版本(release)一般选择发行版本

第三部分是:打包签名类型(二者皆勾选即可,以下为勾选原因)

 

1)只勾选v1签名并不会影响什么,但是在安卓7.0上不会使用更安全的验证方式

2)只勾选V2签名安卓7.0以下会直接安装完显示未安装,安卓7.0以上则使用了V2的方式验证

3)同时勾选V1和V2则所有机型都没问题

 

(Android 7.0中引入了APK Signature Scheme v2,v1是jar Signature来自JDK

V1:应该是通过ZIP条目进行验证,这样APK 签署后可进行许多修改 - 可以移动甚至重新压缩文件。

V2:验证压缩文件的所有字节,而不是单个 ZIP 条目,因此,在签名后无法再更改(包括 zipalign)。正因如此,现在在编译过程中,我们将压缩、调整和签署合并成一步完成。好处显而易见,更安全而且新的签名可缩短在设备上进行验证的时间(不需要费时地解压缩然后验证),从而加快应用安装速度。)

 

 

 

 

image.png 图14

 

最后点击finish 即可完成apk打包,如图15 下方显示此信息说明打包完成。在你之前设置的apk打包位置就会出现一个release文件夹,里面的app-release.apk 即为打包出的apk

 

 

图15

 

 

 

 

 

4. 如何画页面

上面我们已经知道布局文件是在res—layout 文件夹下,一个Activity活动对应一个布局文件。

下图16/17为MainActivity的布局文件,红色框中Design 模式是布局显示层面,Text 是代码层面

 

image.png 图16

image.png  

image.png 图17

所以我们选择text模式下进行页面布局的编写

 

(里面有各种布局分类)

  image.png

 

 

5. 安卓与h5如何互相调用

(1) H5调用安卓

安卓代码:

在每个Activity中都有一个重写的onCreate()方法,在此方法中来处理js调用

 (安卓代码示例)

 image.png  

  image.png

 

package com.example.test;

(导包省略)

public class MainActivity extends Activity {

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        WebView  mWebView = findViewById(R.id.webview);

        if(null!=mWebView){

            //url 可以是网址链接、也可以将HTML页面放入assets文件夹下(注意:该文件夹

//需要自己创建,放在app\src\main目录下,与java/res同级),

            //mWebView.loadUrl("http://127.0.0.1/web/index.html");

            mWebView.loadUrl("file:///android_asset/web.xml");

            WebSettings mWebSettings = mWebView.getSettings();

            //启用Javascript

            mWebSettings.setJavaScriptEnabled(true);

            //Webivew支持标签的viewport属性

            mWebSettings.setUseWideViewPort(true);

            mWebSettings.setJavaScriptCanOpenWindowsAutomatically(true);

  // 通过addJavascriptInterface()将Java对象映射到JS

            mWebView.addJavascriptInterface(new MyJavaScriptInterface(this),"myJsInterface");

        }else{

            Log.v("err===============","ss");

        }

    }

//被调用的接口类

    private class MyJavaScriptInterface{

        private Context mContext;

        public MyJavaScriptInterface(Context context){

            mContext = context;

       

//被调用的接口方法(注意: @JavascriptInterface 注解用于将此方法暴露给js)

        @JavascriptInterface

       public String sayHello(){

            return "hello world!";

        }

    }

}

 

 

 

Js 代码:

function showMsg(){

var a= myJsInterface.sayHello();

}

 

直接在js方法中用安卓类中起的别名来调取有@JavascriptInterface注解的特定方法即可

(安卓代码)(H5代码)

 

(2) 安卓调用H5

 

 

 

 

 

 

6. 导入别人的安卓项目(假设项目A)

1.打开要导入的项目(项目A)的目录,删除下图红框中的文件。

 

image.png 图18

 

2.打开或者新建一个在自己的android studio 上的任一项目,以下称项目B,在上图蓝框的对应位置打开build.gradle的文件,记住你自己的gradle 版本号,下图19为文件中版本号的位置

 

image.png 图19

3.回到要导入的项目,打开图18中蓝框中的文件(build.gradle),修改gradle版本为自己的gradle版本号,然后保存(既图19的位置)

4.在项目B中,复制gradle文件夹(注意:请和 .gradle文件夹区分开来),粘贴到项目A,即要导入的项目,最后正常导入即可。

image.png