转:教大家如何用HBuilder将web项目打包成apk

链接:https://www.jianshu.com/p/d86bf569295d

 

将我们的web项目打包成一个apk文件并不难,首先准备好软件HBuilder还有你的项目,注意这里只献给那些不是真正的安卓开发却想把web打包成apk文件的老铁们看,接下来我们一步步看:

QQ截图20180523231532.png

打开HBuilder之后鼠标右键文件-新建-移动app然后会跳到这个页面,从图中我们可以看到需要我们填写几个地方,应用名称这里填你自己想写的名字,只要你喜欢即可,接下里我们要进行启动页面模板的选择,默认是第一个,其它的一样,这里我们就来看第一个吧,如图所示:

QQ截图20180523232311.png

这里我的应用名称是你懂得,然后点击完成,就是如图所示的一个项目结构,其真正的核心配置文件是manifest.json这个文件,我们来看看这个它:

QQ截图20180523232929.png

这是manifest.json文件的界面,这里我们需要挨个配置,配置之前我们先来了解下各自的作用。

了解什么是manifest.json

在HBuilder中manifest.json实质是H5+app的一个配置文件,一般用来显示我们的应用名称、图标以及该应用的入口文件和其它的一些权限信息,上图manifest.json的可视化 界面,Manifest.json文件根据w3c的webapp规范制定,plus节点下内容为
HTML5Plus扩展规范,其下包括iOS和Android子节点,内容来源分别为iOS和
Android原生打包所要求的参数,用于对5+移动App打包为ipa或apk安装包进行配
置,我们来看看它的代码视图:

代码视图:

{
"@platforms": ["android", "iPhone", "iPad"],
"id": "H5030C660",/*应用的标识,创建应用时自动生成,勿手动修改*/
"name": "你懂得",/*应用名称,程序桌面图标名称*/
"version": {
    "name": "1.0",/*应用版本名称*/
    "code": ""
},
"description": "",/*应用描述信息*/
"icons": {
    "72": "icon.png"
},
"launch_path": "index.html",/*应用的入口页面,默认为根目录下的index.html;支持网络地址,必须以http://或https://开头*/
"developer": {
    "name": "",/*开发者名称*/
    "email": "",/*开发者邮箱地址*/
    "url": ""/*开发者个人主页地址*/
},
"permissions": {
    "Accelerometer": {
        "description": "访问加速度感应器"
    },
    "Audio": {
        "description": "访问麦克风"
    },
    "Messaging":{
        "description": "短彩邮件插件"
    },
    "Cache": {
        "description": "管理应用缓存"
    },
    "Camera": {
        "description": "访问摄像头"
    },
    "Console": {
        "description": "跟踪调试输出日志"
    },
    "Contacts": {
        "description": "访问系统联系人信息"
    },
    "Device": {
        "description": "访问设备信息"
    },
    "Downloader": {
        "description": "文件下载管理"
    },
    "Events": {
        "description": "应用扩展事件"
    },
    "File": {
        "description": "访问本地文件系统"
    },
    "Gallery": {
        "description": "访问系统相册"
    },
    "Geolocation": {
        "description": "访问位置信息"
    },
    "Invocation": {
        "description": "使用Native.js能力"
    },
    "Orientation": {
        "description": "访问方向感应器"
    },
    "Proximity": {
        "description": "访问距离感应器"
    },
    "Storage": {
        "description": "管理应用本地数据"
    },
    
    "Uploader": {
        "description": "管理文件上传任务"
    },
    "Runtime": {
        "description": "访问运行期环境"
    },
    "XMLHttpRequest": {
        "description": "跨域网络访问"
    },
    "Zip": {
        "description": "文件压缩与解压缩"
    },
    "Barcode": {
        "description": "管理二维码扫描插件"
    },
    "Maps": {
        "description": "管理地图插件"
    },
    "Speech": {
        "description": "管理语音识别插件"
    },
    "Webview":{
        "description": "窗口管理"
    },
    "NativeUI":{
        "description": "原生UI控件"
    },
    "Navigator":{
        "description": "浏览器信息"
    },
    "NativeObj":{
        "description": "原生对象"
    }
},
"plus": {
    "splashscreen": {
        "autoclose": true,/*是否自动关闭程序启动界面,true表示应用加载应用入口页面后自动关闭;false则需调plus.navigator.closeSplashscreen()关闭*/
        "waiting": true/*是否在程序启动界面显示等待雪花,true表示显示,false表示不显示。*/
    },
    "popGesture": "close",/*设置应用默认侧滑返回关闭Webview窗口,"none"为无侧滑返回功能,"hide"为侧滑隐藏Webview窗口。参考http://ask.dcloud.net.cn/article/102*/
    "runmode": "normal",/*应用的首次启动运行模式,可取liberate或normal,liberate模式在第一次启动时将解压应用资源(Android平台File API才可正常访问_www目录)*/
    "signature": "Sk9JTiBVUyBtYWlsdG86aHIyMDEzQGRjbG91ZC5pbw==",/*可选,保留给应用签名,暂不使用*/
    "distribute": {
        "apple": {
            "appid": "",/*iOS应用标识,苹果开发网站申请的appid,如io.dcloud.HelloH5*/
            "mobileprovision": "",/*iOS应用打包配置文件*/
            "password": "",/*iOS应用打包个人证书导入密码*/
            "p12": "",/*iOS应用打包个人证书,打包配置文件关联的个人证书*/
            "devices": "universal",/*iOS应用支持的设备类型,可取值iphone/ipad/universal*/
            "frameworks":[
            ]/*调用Native.js调用原生Objective-c API需要引用的FrameWork,如需调用GameCenter,则添加"GameKit.framework"*/
        },
        "google": {
            "packagename": "",/*Android应用包名,如io.dcloud.HelloH5*/
            "keystore": "",/*Android应用打包使用的密钥库文件*/
            "password": "",/*Android应用打包使用密钥库中证书的密码*/
            "aliasname": "",/*Android应用打包使用密钥库中证书的别名*/
           "permissions": ["<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>","<uses-permission android:name=\"android.permission.READ_CONTACTS\"/>","<uses-permission android:name=\"android.permission.VIBRATE\"/>","<uses-permission android:name=\"android.permission.READ_LOGS\"/>","<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>","<uses-feature android:name=\"android.hardware.camera.autofocus\"/>","<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>","<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>","<uses-permission android:name=\"android.permission.CAMERA\"/>","<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>","<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>","<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>","<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>","<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>","<uses-permission android:name=\"android.permission.CALL_PHONE\"/>","<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>","<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>","<uses-feature android:name=\"android.hardware.camera\"/>","<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>","<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"]
            /*使用Native.js调用原生安卓API需要使用到的系统权限*/
        },
        "orientation": [
            "portrait-primary"
        ],/*应用支持的方向,portrait-primary:竖屏正方向;portrait-secondary:竖屏反方向;landscape-primary:横屏正方向;landscape-secondary:横屏反方向*/
        "icons": {
            "ios": {
                "prerendered": true, /*应用图标是否已经高亮处理,在iOS6及以下设备上有效*/
                "auto": "", /*应用图标,分辨率:512x512,用于自动生成各种尺寸程序图标*/
                "iphone": {
                    "normal": "", /*iPhone3/3GS程序图标,分辨率:57x57*/
                    "retina": "", /*iPhone4程序图标,分辨率:114x114*/
                    "retina7": "", /*iPhone4S/5/6程序图标,分辨率:120x120*/
        "retina8": "", /*iPhone6 Plus程序图标,分辨率:180x180*/
                    "spotlight-normal": "", /*iPhone3/3GS Spotlight搜索程序图标,分辨率:29x29*/
                    "spotlight-retina": "", /*iPhone4 Spotlight搜索程序图标,分辨率:58x58*/
                    "spotlight-retina7": "", /*iPhone4S/5/6 Spotlight搜索程序图标,分辨率:80x80*/
                    "settings-normal": "", /*iPhone4设置页面程序图标,分辨率:29x29*/
                    "settings-retina": "", /*iPhone4S/5/6设置页面程序图标,分辨率:58x58*/
        "settings-retina8": "" /*iPhone6Plus设置页面程序图标,分辨率:87x87*/
                },
                "ipad": {
                    "normal": "", /*iPad普通屏幕程序图标,分辨率:72x72*/
                    "retina": "", /*iPad高分屏程序图标,分辨率:144x144*/
                    "normal7": "", /*iPad iOS7程序图标,分辨率:76x76*/
                    "retina7": "", /*iPad iOS7高分屏程序图标,分辨率:152x152*/
                    "spotlight-normal": "", /*iPad Spotlight搜索程序图标,分辨率:50x50*/
                    "spotlight-retina": "", /*iPad高分屏Spotlight搜索程序图标,分辨率:100x100*/
                    "spotlight-normal7": "",/*iPad iOS7 Spotlight搜索程序图标,分辨率:40x40*/
                    "spotlight-retina7": "",/*iPad iOS7高分屏Spotlight搜索程序图标,分辨率:80x80*/
                    "settings-normal": "",/*iPad设置页面程序图标,分辨率:29x29*/
                    "settings-retina": "" /*iPad高分屏设置页面程序图标,分辨率:58x58*/
                }
            },
            "android": {
                "mdpi": "", /*普通屏程序图标,分辨率:48x48*/
                "ldpi": "", /*大屏程序图标,分辨率:48x48*/
                "hdpi": "", /*高分屏程序图标,分辨率:72x72*/
                "xhdpi": "",/*720P高分屏程序图标,分辨率:96x96*/
                "xxhdpi": ""/*1080P 高分屏程序图标,分辨率:144x144*/
            }
        },
        "splashscreen": {
            "ios": {
                "iphone": {
                    "default": "", /*iPhone3启动图片选,分辨率:320x480*/
                    "retina35": "",/*3.5英寸设备(iPhone4)启动图片,分辨率:640x960*/
                    "retina40": "",/*4.0 英寸设备(iPhone5/iPhone5s)启动图片,分辨率:640x1136*/
                    "retina47": "",/*4.7 英寸设备(iPhone6)启动图片,分辨率:750x1334*/
                    "retina55": "",/*5.5 英寸设备(iPhone6 Plus)启动图片,分辨率:1242x2208*/
                    "retina55l": ""/*5.5 英寸设备(iPhone6 Plus)横屏启动图片,分辨率:2208x1242*/
                },
                "ipad": {
                    "portrait": "", /*iPad竖屏启动图片,分辨率:768x1004*/
                    "portrait-retina": "",/*iPad高分屏竖屏图片,分辨率:1536x2008*/
                    "landscape": "", /*iPad横屏启动图片,分辨率:1024x748*/
                    "landscape-retina": "", /*iPad高分屏横屏启动图片,分辨率:2048x1496*/
                    "portrait7": "", /*iPad iOS7竖屏启动图片,分辨率:768x1024*/
                    "portrait-retina7": "",/*iPad iOS7高分屏竖屏图片,分辨率:1536x2048*/
                    "landscape7": "", /*iPad iOS7横屏启动图片,分辨率:1024x768*/
                    "landscape-retina7": ""/*iPad iOS7高分屏横屏启动图片,分辨率:2048x1536*/
                }
            },
            "android": {
                "mdpi": "", /*普通屏启动图片,分辨率:240x282*/
                "ldpi": "", /*大屏启动图片,分辨率:320x442*/
                "hdpi": "", /*高分屏启动图片,分辨率:480x762*/
                "xhdpi": "", /*720P高分屏启动图片,分辨率:720x1242*/
                "xxhdpi": ""/*1080P高分屏启动图片,分辨率:1080x1882*/
             }
          }
       }
     }
 }

这里是manifest.json的全部配置代码信息,我们也可以手动的去配置我们想要的,接下来我们将我们需要的权限挨个配置,首先我们来看应用信息:

应用信息

应用信息下包括了基本信息有:应用的名称、appid、版本号和页面入口等。如图所示:

QQ截图20180524002640.png

这里是它的可视化界面,我们这里的应用名称、以及appid、版本号、页面入口如图所示,注意一点,APPID是通过云端自动获取,版本号自己填,页面入口是index.html 页面。

代码视图

QQ截图20180524003325.png

重力感应的配置

所谓重力感应无非是手机的应用显示的方向比如竖屏、横屏以及旋转等,我们老看看它的可视化图的界面:

QQ截图20180524003827.png

上图是我们应用方向的可视化图,这里我们选择了所有的显示方向,我们来看看它的代码视图:

代码可视化

QQ截图20180524095101.png

上图是我们该应用显示方向的代码配置,其中:
portrait-primary:竖屏正方向;
portrait-secondary:竖屏反方向;
landscape-primary:横屏正方向;
landscape-secondary:横屏反方向;
这些要生效我们必须要在云端将它打包成app才能看到效果,接下来就是设备的选择,由于我毕设是安卓的,所以我这里来说说安卓设备的配置,照猫画虎,IOS差不多。

设备选择

HBuilder给我们提供了安卓和iOS设备当然也包括iOS平板等设备,选择不同的设备会有不同的不同的启动界面以及相应的配置,选择好了平台之后我们来进行相应的配置:

图标配置

QQ截图20180524100948.png

首次配置时就如图所示,这里我们需要添加自己喜欢的图标,要求是正方形的格式为png的图片默认大小是180*180,添加之后是这个样子的,如图所示:

QQ截图20180524101311.png

对,没错就是这样的,之后将我们设备的图标替换成我们自己的,默认是HBuilder的logo,如图所示:

QQ截图20180524101325.png

这就是我们app的图标了,配置玩图标的可视化图我们来看看它的代码是如何配置的。如图所示:

QQ截图20180524102242.png

代码中我们可以看到,图标的大小跟我们视图的大小一致,总共有4中选择,你可以选择你喜欢的作为app的图标,接下来我们看app启动界面的配置

启动界面的配置

QQ截图20180524102706.png

上图是安卓的启动界面的截图,首先点击图中箭头的按钮回跳到这个页面,选择你要的设备进行配置,如不配置,默认是HBuilder的logo,这里有5中分辨率的类型,是根据你手机的分辨率来进行对应的匹配,这里我们选择自己想要的图片点击图中的选择按钮,将图片加载进来,建议你5中分辨率全都将图片加载一下即可,之后选择按钮变为更换。

QQ截图20180524103449.png

这是代码视图,跟我们可视化图中的分辨率是一致的,当打包之后安装时会根据你手机分辨率的大小进行选择,这里我们不需要我们去设置,接下来进行SDK的配置,简单的说就是第三方的插件。

SDK配置

QQ截图20180524104139.png

图中为第三方插件的配置,我们需要各自的接口,由于我的要求比较简单没有设置第三方的配置,不过后来我试了百度地图的SDK接口,可以的,这里不说了,下次说。

模块权限的配置

QQ截图20180524204913.png

模块权限的配置使我们的应用能用到的,比如第三方的插件,这里会联动帮我们自动配置,所以这里不多说了。我们的应用配置差不多这里了,接下来是奇迹的时刻了,要想将你的项目能在app中显示,在我们的入口显示页面中加入如图所示的代码:

QQ截图20180524210828.png

在index.html页面中加入如图的代码即可,接下来近视打包的时刻了,如图所示:

QQ截图20180524211335.png

如图所示,点击发行-发行为原生安装包之后到了这个页面,选择自己的平台,我这里是安卓平台,如果你有自己的证书可以使用自己的,没有的话就使用公用证书,然后打包,跳到这个页面如图所示:

QQ截图20180524211843.png

到了这个界面,别担心稍等几分钟就可以了,然后就是一个apk安装包,可以手动下载安装到手机上就可以了,没错就是这么简单,不信动手试试哦!



作者:会上树的程序猿
链接:https://www.jianshu.com/p/d86bf569295d
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值