1 配置环境变量
1.1 安装jdk
- 系统变量→新建 JAVA_HOME 变量 。
变量值填写jdk的安装目录(本人是 D:\Program Files\Android\jdk)
- 系统变量→新建 CLASSPATH变量
输入.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
- 系统变量→编辑PATH的变量
输入:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
1.2 安装sdk
- 用户变量→新建ANDROID_HOME变量
输入:变量值填写jdk的安装目录(本人是D:\sdk)
- 用户变量→编辑PATH的变量
输入:%ANDROID_HOME%\platform-tools
- 系统变量→编辑PATH的变量
输入:% JAVA_HOME%\ bin
2 安装创建
2.1 安装cordova
npm install -g cordova
2.2 创建cordova项目
cordova create cordovaApp com.cordovaApp.app cordovaApp
说明:第一个cordovaApp 表示文件夹的名称
第二个com.cordovaApp .app 表示项目id
第三个cordovaApp 表示项目名称
cd cordovaApp //转到你创建的目录
cordova platform add android//添加构建app的平台
2.3 打包构建(测试使用apk)
cordova build android
生成apk地址:platforms\android\app\build\outputs\apk\debug
2.4 打包带签名的apk
2.4.1 生成不带签名的apk
cordova build --release android
生成的文件名称是:app-release-unsigned.apk
2.4.2 在生成apk的目录下(只是便于查找),生成签名
keytool -genkeypair -alias demo.keystore -keyalg RSA -validity 4000 -keystore demo.keystore
将name替换成你所需要的生成签名文件的名称
这里需要注意,当你输入keytool时,可能会出现
有可能时因为你的环境变量配置的有问题,你也可以将所在目录下的执行文件拖入cmd中,如果你使用的是git也可以直接使用keytool(我自己的是乱码,但是不影响使用,对应的输入信息是一样的)
输入命令:
"D:\Program Files\Android\jdk\jre\bin\keytool.exe" -genkeypair -alias test.keystore -keyalg RSA -validity 4000 -keystore test.keystore
将会输入一些信息:这里会要求输入两次密码,作为之后你使用签名的凭证
2.4.3 使用签名生成带签名的apk
jarsigner -verbose -keystore name.keystore -signedjar name.apk
- name_unsigned.apk name.keystore
- name.keystore 替换成 你所生成的签名文件 我的就是test.keystore
- name.apk 的name替换成你所需要生成的apk的名称 我这边是test
- name_unsigned.apk 替换成未带签名的apk 我这边就是 app-release-unsigned.apk
这里需要注意,当你输入jarsigner时,可能会出现和keytool一样的问题,操作方式也是相同的
输入命令:
"D:\Program Files\Android\jdk\bin\jarsigner.exe" -verbose -keystore test.keystore -signedjar test.apk app-release-unsigned.apk test.keystore
注意:
Keytool和jarsigner都是java下的工具,一个在bin文件目录下,一个在jre\bin文件目录下,如果你安装了jdk,但是你输入keytool或者jarsigner都是不可运行的程序的话,
- 你可以直接拖入exe文件替换相应的名称文件,
- 你也可以用管理员方式执行cmd然后输入keytool或者jarsigner,就会有相应的信息
- 你也可以使用git打开也是可以执行的*
2.5 如果你打包的是一个服务器的地址,那么你需要以下cordova文件:
2.5.1 将cordova文件中的config.xml的content修改成服务器地址
2.5.2 修改下面这个文件 新增两段代码
//add 拦截webview的请求,实现加载本地js
private static final String INJECTION_TOKEN = "http://injection/";
// add 拦截webview的请求,实现加载本地js
if(url != null && url.contains(INJECTION_TOKEN)) {
String assetPath = url.substring(url.indexOf(INJECTION_TOKEN) + INJECTION_TOKEN.length(), url.length());
try {
WebResourceResponse response = new WebResourceResponse(
"application/javascript",
"UTF8",
view.getContext().getAssets().open(assetPath)
);
return response;
} catch (IOException e) {
e.printStackTrace(); // Failed to load asset file
return new WebResourceResponse("text/plain", "UTF-8", null);
}
}
2.5.3 修改你所在代码引入的cordova.js
<script type="text/javascript" src="http://injection/www/cordova.js"></script>