将网站封装成APP安卓应用我接触到的目前有三种方法,构建方法和难度也是逐步提升,不过,世上无难事,只怕有心人,干就完了,奥里给!
法一:利用一个木函
封装 讲真,这个方法是我目前接触到最快 ,最省力 ,而且最高效 的做法,速度起飞,快的一批~~
1.1 手机应用商店搜索一个木函
应用。
1.2 找到下载并安装。
1.3 打开,依次 全部应用 >>网页转应用 。 1.4 填写好相关信息。
1.5 打包构建安装即可。
1.6 诺,可以正常使用啦!
法二:利用HBuilderX构建 相对于法一来说,这个要稍微进阶一点,我们要借用HBuilderX
把文件进行打包构建。既然然说到这里了,不得不插一嘴谈谈uni-app
,据说这个特别厉害,官方文档 是这么解释的:
uni-app
是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/QQ/快手/钉钉/淘宝)、快应用等多个平台。
老牛逼了!改天着手研究研究!好了,让我们来开始转换。
2.1 新建一个5+App
项目
如果你想了解什么是5+App
项目,可以直接去阅读官方文档 。
我们填写好项目名字和路径,项目会自动生成相关文件,文件各个内容如下所示。
这里的unpackage
文件夹中,放的是一些不用打包编译的文件,manifest
则是配置项了。删除css\img\js\index.html
,把自己的项目文件复制过来,配置好相关权限,然后选择云打包,当然,本地打包也不是不可以,看你自己使用习惯了。
然后我么点击发行 ——原生APP-云打包 。
2.2 证书生成打包 打包需要证书,这里我们生成自己的证书,注意,在生成之前,我们需要安装JRE环境 ,可以去官网下载:https://www.oracle.com/technetwork/java/javase/downloads/index.htm
下载好后,配置好环境变量,在一个自己记得住的路径下打开powershell
,输入以下命令,生成证书:
1 keytool -genkey -alias chuyuxuan -keyalg RSA -keysize 2048 -validity 36500 -keystore chuyuxuan.keystore
chuyuxuan
是证书别名,可修改为自己想设置的字符,建议使用英文字母和数字
chuyuxuan.keystore
是证书文件名称,可修改为自己想设置的文件名称,也可以指定完整文件路径
36500
是证书的有效期,表示100年有效期,单位天,建议时间设置长一点,避免证书过期
回车后会提示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Enter keystore password: //输入证书文件密码,输入完成回车 Re-enter new password: //再次输入证书文件密码,输入完成回车 What is your first and last name? [Unknown]: //输入名字和姓氏,输入完成回车 What is the name of your organizational unit? [Unknown]: //输入组织单位名称,输入完成回车 What is the name of your organization? [Unknown]: //输入组织名称,输入完成回车 What is the name of your City or Locality? [Unknown]: //输入城市或区域名称,输入完成回车 What is the name of your State or Province? [Unknown]: //输入省/市/自治区名称,输入完成回车 What is the two-letter country code for this unit? [Unknown]: //输入国家/地区代号(两个字母),中国为CN,输入完成回车 Is CN=XX, OU=XX, O=XX, L=XX, ST=XX, C=XX correct? [no]: //确认上面输入的内容是否正确,输入y,回车 Enter key password for <testalias> (RETURN if same as keystore password): //确认证书密码与证书文件密码一样(HBuilder|HBuilderX要求这两个密码一致),直接回车就可以
以上命令运行完成后就会在你选择的路径生成证书。
2.3 查看证书信息 可以使用以下命令查看:
1 2 复制代码keytool -list -v -keystore chuyuxuan.keystore Enter keystore password: //输入密码,回车
会输出以下格式信息:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 密钥库类型: PKCS12 密钥库提供方: SUN 您的密钥库包含 1 个条目 别名: chuyuxuan 创建日期: 2021年8月26日 条目类型: PrivateKeyEntry 证书链长度: 1 证书[1]: 所有者: CN=chu, OU=yuxuan, O=chuyuxuan, L=HN, ST=HN, C=CN 发布者: CN=chu, OU=yuxuan, O=chuyuxuan, L=HN, ST=HN, C=CN 序列号: 542e4e8 生效时间: Thu Aug 26 14:30:51 CST 2021, 失效时间: Sat Aug 02 14:30:51 CST 2121 证书指纹: SHA1: 43:52:72:5F:B3:4B:24:4C:F8:0B:8A:7F:58:F1:D8:29:7E:12:84:6B SHA256: 9B:00:FE:63:B6:47:AC:74:B0:0F:74:B7:A5:52:1D:C8:D0:23:E0:87:B5:85:8E:D1:85:D1:D8:2D:BF:C6:34:41 签名算法名称: SHA256withRSA 主体公共密钥算法: 2048 位 RSA 密钥 版本: 3 扩展: # 1: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: 4F 03 F5 28 33 A2 A8 8C 65 9D A9 68 24 11 C7 2A O..(3...e..h$..* 0010: 26 EF E7 92 &... ] ] ******************************************* *******************************************
其中证书指纹信息(Certificate fingerprints):
我们记住好这些,就可以利用他们来打包了,接下来填入相关信息,进行打包。
2.4 云打包 如图,填写好相关信息,打包即可。
注意通讯录权限
打包好之后,下载,安装即可。
2.5 正常使用~~
法三:利用Android studio构建 Android Studio 可是官方指定的安卓应用开发软件。你可以点击这里 进行下载。后续的操作,你得在这个环境下去实现。
不知道你有没有发现,无论是通过一个木函
封装还是通过HBuilderX
,都有缺点,状态栏,标题栏无法自定义,它是固定住了的,无法手动修改了,所以,通过Android studio ,我们可以刻画出我们任何想要的界面,甚至加入一些丰富的功能。
3.1创建一个项目先 创建项目如下图所示:
我们要创建一个空的活动页(Activity),这样IDE会帮我们搭建好基础框架,免得我们自己动手去配置了。
在配置项目相关信息的时候,需要注意的是项目名称,项目语言,以及项目的SDK,注意,下载SDK需要一定的网络环境,否则会报错。SDK是确保你的应用能够运行在安卓系统上的工具包,你需要选择好符合你系统的SDK,一般安卓都是向下兼容的,我们选5.0
以上的都行。
3.2 熟悉一下结构先 当你完成初始化之后,我们先来认识各个界面和功能吧,这样对我们之后更改有大用处。如图所示:
1️⃣处是视图切换,2️⃣处是控件集合,3️⃣处是目录树,也就是整个文件的结构,4️⃣所编辑的文件。
和大多数IDE一样,各个功能都差不多,基本上手就能看懂了,这里,就不在一一详细的去解释了。
3.3 添加WebView到主界面 由于我们只是利用webView做中间件,即相当于内嵌了一个浏览器,所以我们没有必要再添加其他组件了,直接在主界面上使用即可。
在设计模式下(Design)我们在组件面板(Palette)中找到小部件(Widgets),把其中的WebView拖拽到界面中,如图所示:
之后,我们需要设定该组件的高度和宽度,这里,我们然它全屏就好了,匹配父组件即可。直接在最右边的布局(layout)中修改即可,当然,你也可以在代码(Code)模式下,输入以下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 <?xml version="1.0" encoding="utf-8" ?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android ="http://schemas.android.com/apk/res/android" xmlns:app ="http://schemas.android.com/apk/res-auto" xmlns:tools ="http://schemas.android.com/tools" android:layout_width ="match_parent" android:layout_height ="match_parent" tools:context =".MainActivity" > <WebView android:id ="@+id/mWebview" android:layout_width ="match_parent" android:layout_height ="match_parent" android:visibility ="visible" app:layout_constraintBottom_toBottomOf ="parent" app:layout_constraintEnd_toEndOf ="parent" app:layout_constraintStart_toStartOf ="parent" app:layout_constraintTop_toTopOf ="parent" /> </androidx.constraintlayout.widget.ConstraintLayout >
效果如下图所示了:
3.4 配置 web View 我们界面已经绘制完毕,接下来,就开始配置逻辑了。首先,我们要让Webview显示我们需要显示的东西。
webView显示我们内容有两种方式,一种是将本地文件打包,另一种是直接访问链接。WebView在Android 4.3之后是基于chrome内核的,这里我们只介绍利用链接的方式加载界面,读取本地文件的方式也大同小异,故不在详解,具体使用方法大家可以参考官方文档
我们在MianActivity.java
文件中加入如以下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 package com.example.chuyuxantest;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.view.Window;import android.webkit.WebView;import android.webkit.WebViewClient;public class MainActivity extends AppCompatActivity { private WebView mWebView; @Override protected void onCreate (Bundle savedInstanceState) { super .onCreate(savedInstanceState); supportRequestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); mWebView = (WebView) findViewById(R.id.mWebview); mWebView.getSettings().setJavaScriptEnabled(true ); mWebView.setWebViewClient(new WebViewClient ()); mWebView.loadUrl("https://blog.chuyuxuan.top/" ); } public boolean onKeyDown (int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { if ((System.currentTimeMillis() - mExitTime) > 2000 ) { Toast.makeText(this , "请您确保当前的操作正确性,再按一次将退出程序" , Toast.LENGTH_SHORT).show(); mExitTime = System.currentTimeMillis(); } else { System.exit(0 ); } return true ; } return super .onKeyDown(keyCode, event); } 当然,我们也可也把返回变成浏览器里面返回上一页。 代码如下: @Override public boolean onKeyDown (int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) { mWebView.goBack(); return true ; } return super .onKeyDown(keyCode, event); } }
我们不要忘记申请网络权限哈!找到app
目录下的manifests
,配置AndroidManifest.xml
。 代码如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 <?xml version="1.0" encoding="utf-8" ?> <manifest xmlns:android ="http://schemas.android.com/apk/res/android" package ="com.example.chuyuxantest" > <uses-permission android:name ="android.permission.INTERNET" /> <application android:allowBackup ="true" android:icon ="@mipmap/ic_launcher" android:label ="@string/app_name" android:roundIcon ="@mipmap/ic_launcher_round" android:supportsRtl ="true" android:usesCleartextTraffic ="true" android:theme ="@style/Theme.ChuyuxanTest" > <activity android:name =".MainActivity" android:exported ="true" > <intent-filter > <action android:name ="android.intent.action.MAIN" /> <category android:name ="android.intent.category.LAUNCHER" /> </intent-filter > </activity > </application > </manifest >
3.5 配置主题颜色图标应用名称 接下来,我们找到res
目录下的mipmap
文件,这里是我们的应用图标,应为要适配平板,手机,手表等,所以需要不同的格式,你选择自己喜欢的图片即可。
我们要该的主题颜色,应用文件等都在values文件夹中配置。如果你向我一样有强迫症,记得仔细改哈。
3.6 开始打包部署吧 我们找到菜单栏中的build
,找到下面的Build Bundle(s)/ APK(s)
或者Generate Signed Bundle /APK
,运行起来,当然,你也可也运行没有签名的,这里,我们选择生成签名的APK。
3.6.1证书配置 导入我们之前在HBuilderX
配置好了的证书,当然,你也可以再重新签名一张。
填写好证书相关信息后,选择release
即可打包,之后,在当前目录下就会生成APP文件,我们安装到手机上即可。
不得不说,观感好了很多。
总结 总的来说,效果达到了,但是还是有点欠缺,例如,AndroidStudio中,一些控件用法,生命周期函数等,Java语法,用的还不是太熟练,只停留在基本了解阶段,还有很多要学。相对于的Android开发大佬,我还只是个刚入门的小菜鸟。
打包webview只是学习Android开发的一小步,虽然谷歌安卓开发技术每年都在改变,每年都在提升,但接下来的几年里,Android还是在技术前沿,我们学习前端开发,不能够仅仅停留在会用Vue \React \angular的框架上,还需要不断的综合提升,才能走更远。