Skip to content
筋斗云手机应用项目模板(cordova项目模板)
Objective-C Java C# JavaScript C++ HTML Other
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
hooks
icon-src
plugins
tool
www
.gitignore
Makefile
README.md
build.json
config.xml
package-lock.json
package.json

README.md

筋斗云手机应用程序的模板工程

jdcloud-app基于Cordova版本7.1. (建议node v8.9+, npm v5.5+) 分支v1使用Cordova 5.4版本,用于筋斗云v5之前的版本。

特性:

  • 为筋斗云H5应用定制的config.xml
  • 远程URL访问权限
  • 图标/启动页设置。默认启动页最多显示10s(SplashScreenDelay),筋斗云H5应用加载完成时应关闭启动页
  • 无法访问网络时,跳转错误页(www/error.html)。
  • 图标和启动页图片工具
  • 已添加splashscreen, statusbar, camera, inappbrowser等插件。
  • 已添加myapp插件,要为H5应用添加新的原生接口,可在这个插件中直接扩展。

Cordova工程初始化

收集信息

  • 收集安卓签名使用的证书。
  • 收集苹果开发者帐号、证书。
  • 以上文件一般放tool目录下,然后修改build.json。证书密码一般使用123456。
  • 修改config.xml中的应用信息、版本号、启动地址等。
  • 修改package.json中的项目信息。(非必须)

初始化:

npm install

根据package.json/package-lock.json中的内容重建npm依赖模块(node_modules文件夹)。

制作图标及启动画面

  • 进入icon-src目录,将应用程序图标(512x512)、启动画面图片(1920x1080,要求图片中心区域是图文,四周为纯色,保证放缩时可用)复制进来。
  • 执行 create_icon.sh生成各种尺寸图标和启动图到icon目录。注意需要安装图形命令行工具 ImageMagick(建议6.9版本以上),确保在命令行中输入convert命令有效。

创建工程

  • 添加额外的插件到plugins目录。
  • 创建安卓与苹果工程,添加到git中。

命令:

cordova plugin add {cordova-plugin-xxx}
cordova platform add android
cordova platform add ios

压缩一下node模块,否则IOS平台在xcode中编译时会出错(与shelljs版本冲突相关)

npm dedupe
(会更新package-lock.js)

应用补丁:(一些对cordova android/ios平台源码的修改)

# 打开tool/myfix.diff文件,修改“工程名”等内容,然后执行
patch -p1 < tool/myfix.diff

然后将新文件加入git (注意默认的.gitignore文件已排除node_modules等目录)

git add .
git commit -a -m 'init app'

之后在每次修改了config.xml或图标资源时,应执行

cordova prepare

将更新应用到工程中。

打包

安卓打包: 将tool/my.keystore文件换成要发布的安卓证书,在build.json中指定密码等信息,然后执行:

make
或
cordova build android --release

可以用Android Studio导入platforms/android路径下的工程进行调试。

在IOS平台上,由于cordova与xcode兼容性不太好,不建议命令行打包。建议使用xcode来编译、调试和打包。

cd platforms/ios
open {xxx}.xcworkspace

打开工程后,注意在工程中先设置签名(General - Signing)。

如果想用IOS命令行打包:

# app-store
cordova build ios --release --device

# ad-hoc (debug)
cordova build ios --device

在手机上运行:

cordova run android --release --device
# 如果不需要检查编译,加 --nobuild参数
# --device强制要求在手机上运行,否则自动检测

注意事项

安卓平台的jniLibs

问题:添加极光插件用于推送服务,安卓上初始化时无法获取到Registration ID。

原因:打包时未将设置原生库(jni的so库文件)打包到apk中。

cordova 7.1添加platform后,生成的 build.gradle 中有配置项:

sourceSets {
    main {
		...
        jniLibs.srcDirs = ['libs']
	}
}

因为android studio较新版本默认是把jniLibs目录做为缺省jni库目录,这里就强制改成了libs目录。 应检查android目录下面的库文件实际放在哪里再做修改。比如极光插件将so文件放在jniLibs目录下,就应改成

        jniLibs.srcDirs = ['jniLibs']

如果libs和jniLibs两个目录都有so文件,那就合并到一起,或是

        jniLibs.srcDirs = ['jniLibs', 'libs']

clone工程后无法执行cordova prepare或无法编译

问题:工程在某处已经可以编译使用,但换了一个目录clone后编译报错,缺少某些nodejs库,或找不到platform

原因:在cordova platform add之后, 在相应平台的cordova/node_modules下有很多库,它们是不添加到git库中的,导致了nodejs库缺失。

应在添加plugin及platform后,运行 npm dedupe 将用到的库加到项目根目录下的 package_lock.json 中提交。 在初始化文档中已提过这一点。

You can’t perform that action at this time.