Skip to content

cordova 打包流程 #7

@AnswerYas

Description

@AnswerYas
  1. 全局安装cordova
npm install -g cordova
  1. 创建你的app
cordova create hello com.example.hello HelloWorld

hello 是app名 com.example.hello 是bundle id
3. 添加平台

cd hello
cordova platform add ios --save
cordova platform add android --save

每次更改文件的时候重新构建app的时候不生效,可以删除platform对应平台再重新添加。
4. 测试app

cordova emulate android
cordova emulate ios

ios 可以利用xcode进行调试。Android可以用Android studio
5. 热更新

  • 安装热跟新插件
cordova plungin add cordova-hot-code-push-plugin
  • 进入你的项目初始化cordova-hcp.json文件。
cd hello
cordova-hcp init
{
  // 自动在native(iOS/Android)下生成文件链接标签
  "autogenerated": true,
  // 项目名称(自行替换)
  "name": "com.example.hello",
  // 更新的方式,有三个选项:start(app启动时安装更新,默认值)、now(app从后台切换过来的时候安装更新)、resume(web内容下载完毕即安装更新)
  "update": "now",
  // 项目在服务器上面的地址(这里使用了笔者本地的服务器地址,自行替换)
  "content_url": "http://localhost/cordova/www"
}

然后在根目录的config.xml文件中加入以下这段

<chcp>
    <config-file url="http://localhost/cordova/www/chcp.json"/>
</chcp>
  1. 替换icon和启动图。
  • 安装splashscreen插件:
cordova plugin add cordova-plugin-splashscreen
  • 在config.xml添加以下代码
<platform name="android">  
    <icon density="ldpi" src="res/icon/android/icon-36-ldpi.png" />  
    <icon density="mdpi" src="res/icon/android/icon-48-mdpi.png" />  
    <icon density="hdpi" src="res/icon/android/icon-72-hdpi.png" />  
    <icon density="xhdpi" src="res/icon/android/icon-96-xhdpi.png" />  
    <icon density="xxhdpi" src="res/icon/android/icon-144-xxhdpi.png" />  
    <icon density="xxxhdpi" src="res/icon/android/icon-192-xxxhdpi.png" />  

    <splash density="land-hdpi" src="res/screen/android/splash-land-hdpi.png" />  
    <splash density="land-ldpi" src="res/screen/android/splash-land-ldpi.png" />  
    <splash density="land-mdpi" src="res/screen/android/splash-land-mdpi.png" />  
    <splash density="land-xhdpi" src="res/screen/android/splash-land-xhdpi.png" />  
    <splash density="port-hdpi" src="res/screen/android/splash-port-hdpi.png" />  
    <splash density="port-ldpi" src="res/screen/android/splash-port-ldpi.png" />  
    <splash density="port-mdpi" src="res/screen/android/splash-port-mdpi.png" />  
    <splash density="port-xhdpi" src="res/screen/android/splash-port-xhdpi.png" />  
</platform>  
<platform name="ios">  
    <!-- iOS 8.0+ -->  
    <!-- iPhone 6 Plus  -->  
    <icon src="res/icon/ios/icon-60@3x.png" width="180" height="180" />  
    <!-- iOS 7.0+ -->  
    <!-- iPhone / iPod Touch  -->  
    <icon src="res/icon/ios/icon-60.png" width="60" height="60" />  
    <icon src="res/icon/ios/icon-60@2x.png" width="120" height="120" />  
    <!-- iPad -->  
    <icon src="res/icon/ios/icon-76.png" width="76" height="76" />  
    <icon src="res/icon/ios/icon-76@2x.png" width="152" height="152" />  
    <!-- iOS 6.1 -->  
    <!-- Spotlight Icon -->  
    <icon src="res/icon/ios/icon-40.png" width="40" height="40" />  
    <icon src="res/icon/ios/icon-40@2x.png" width="80" height="80" />  
    <!-- iPhone / iPod Touch -->  
    <icon src="res/icon/ios/icon.png" width="57" height="57" />  
    <icon src="res/icon/ios/icon@2x.png" width="114" height="114" />  
    <!-- iPad -->  
    <icon src="res/icon/ios/icon-72.png" width="72" height="72" />  
    <icon src="res/icon/ios/icon-72@2x.png" width="144" height="144" />  
    <!-- iPhone Spotlight and Settings Icon -->  
    <icon src="res/icon/ios/icon-small.png" width="29" height="29" />  
    <icon src="res/icon/ios/icon-small@2x.png" width="58" height="58" />  
    <icon src="res/icon/ios/icon-small@3x.png" width="87" height="87" />  
    <!-- iPad Spotlight and Settings Icon -->  
    <icon src="res/icon/ios/icon-50.png" width="50" height="50" />  
    <icon src="res/icon/ios/icon-50@2x.png" width="100" height="100" />  


    <splash src="res/screen/ios/Default~iphone.png" width="320" height="480"/>  
    <splash src="res/screen/ios/Default@2x~iphone.png" width="640" height="960"/>  
    <splash src="res/screen/ios/Default-Portrait~ipad.png" width="768" height="1024"/>  
    <splash src="res/screen/ios/Default-Portrait@2x~ipad.png" width="1536" height="2048"/>  
    <splash src="res/screen/ios/Default-Landscape~ipad.png" width="1024" height="768"/>  
    <splash src="res/screen/ios/Default-Landscape@2x~ipad.png" width="2048" height="1536"/>  
    <splash src="res/screen/ios/Default-568h@2x~iphone.png" width="640" height="1136"/>  
    <splash src="res/screen/ios/Default-667h.png" width="750" height="1334"/>  
    <splash src="res/screen/ios/Default-736h.png" width="1242" height="2208"/>  
    <splash src="res/screen/ios/Default-Landscape-736h.png" width="2208" height="1242"/>  
</platform>
  • 其他配置
  • 自动影藏启动页面AutoHideSplashScreen (默认为true)
  <preference name="AutoHideSplashScreen" value="true" />
  • 显示启动页面的时间长度SplashScreenDelay(默认为:3000)
  <preference name="SplashScreenDelay" value="3000" />
  • 若想禁用启动页面,可设置为:<preference name="SplashScreenDelay" value="0"/>
    如果是iOS平台上想禁止启动页面,还需要添加<preference name="FadeSplashScreenDuration" value="0"/>
  • 启动页面淡入淡出的效果
    是否显示淡入淡出效果FadeSplashScreen(默认为:true)
  <preference name="FadeSplashScreen" value="false"/>

淡入淡出效果的执行时间长度FadeSplashScreenDuration(默认为:500)

  <preference name="FadeSplashScreenDuration" value="750"/>

注意:FadeSplashScreenDuration时间是包含在SplashScreenDelay的时间里的。

  • 启动页面是否允许旋转(默认为:true)
  <preference name="ShowSplashScreenSpinner" value="false"/>
  • 通过js调用
 navigator.splashscreen.hide();//隐藏启动页面

  navigator.splashscreen.show();//显示启动页面
  • Android平台下的特殊设置
  <preference name="SplashMaintainAspectRatio" value="true|false" />
  <preference name="SplashShowOnlyFirstTime" value="true|false" />

SplashMaintainAspectRatio:选填项,默认为false。当设置为true时,则不会拉伸图片来填充屏幕,会以图片原始比例显示图片。

SplashShowOnlyFirstTime:选填项,默认为true。当设置为false时,APP通过navigator.app.exitApp()代码退出app后,在下次打开APP时,还会显示启动页面。若为true时,就不会出现。

  • 安卓图标规格(存放目录:res/icon/android/)
  36*36   icon-36-ldpi.png
  48*48   icon-48-ldpi.png
  72*72   icon-72-ldpi.png
  96*96   icon-96-ldpi.png
  144*144 icon-144-ldpi.png
  192*192 icon-192-ldpi.png
  • ios图标规格(存放目录:res/icon/ios/)
  29*29   icon-small.png
  58*58   icon-small@2x.png
  87*87   icon-small@3x.png
  40*40   icon-40.png
  80*80   icon-40@2x.png
  50*50   icon-50.png
  100*100 icon-50@2x.png
  60*60   icon-60.png
  120*120 icon-60@2x.png
  180*180 icon-60@3x.png
  72*72   icon-72.png
  144*144 icon-72@2x.png
  76*76   icon-76.png
  152*152 icon-76@2x.png
  • 安卓启动图规格(存放目录:res/screen/android/)
  960*720 splash-land-xhdpi.png
  640*480 splash-land-hdpi.png
  470*320 splash-land-mdpi.png
  426*320 splash-land-ldpi.png
  720*960 splash-port-xhdpi.png
  480*640 splash-port-hdpi.png
  320*470 splash-port-mdpi.png
  320*426 splash-port-ldpi.png
  • ios启动图规格(存放目录:res/screen/ios/)
  320*480 Default~iphone.png
  640*960 Default@2x~iphone.png
  768*1024    Default-Portrait~ipad.png
  1536*2048   Default-Portrait@2x~ipad.png
  1024*768    Default-Landscape~ipad.png
  2048*1536   Default-Landscape@2x~ipad.png
  640*1136    Default-568h@2x~iphone.png
  750*1334    Default-667h.png
  1242*2208   Default-736h.png
  2208*1242   Default-Landscape-736h.png
  1. 设置状态栏。适配iphonex
  • 安装cordova-plugin-statusbar插件
cordova plugin add cordova-plugin-statusbar
document.addEventListener("deviceready", onDeviceReady, false);
    function onDeviceReady() {
        if (navigator.userAgent.match(/(iPhone)/)) {
          if ((screen.availHeight == 647) && (screen.availWidth == 375) && (window.devicePixelRatio == 3)) {
              StatusBar.overlaysWebView(true)
              StatusBar.backgroundColorByHexString("#26a2ff")
          }
        }
    }
  1. 每次打包完你的app文件,替换掉www下的文件。
  2. 然后执行
cordova-hcp build
  • 复制www下所有文件到对应文件服务器。
  1. 分别打包ios android 应用。
  • ios通过xcode打包(具体详见ios打包)
  • Android打包
cordova build android

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions