一、环境
@ionic/cli@6.19.1
cordova@11.0.0
gradle-4.6
Android SDK@29.0.2
Java SDK@1.8.0_361
nodejs@16.18.1
二、下载SDK、配置环境变量
下载不了的话 百度找下国内镜像下载;
配置系统环境变量:
GRADLE_HOME:D:\gradle-4.10.3\bin
2、Android SDK我是用Android Studio下载的
注意本地有多个SDK版本的情况,可能不兼容;
配置环境变量:
ANDROID_HOME、ANDROID_SDK_ROOT,两者值一样,填自己本地路径,C:\Users\你电脑的用户名\AppData\Local\Android\Sdk
3、安装java8并配置环境变量
JAVA_HOME:D:\jdk1.8.0_361\bin
CLASSPATH:%JAVA_HOME%\lib
4、然后path也添加一下
%JAVA_HOME%
%GRADLE_HOME%
%ANDROID_SDK_ROOT%
三、安装项目依赖
cnpm i或者yarn
npm i -g cordova@11.0.0 @ionic/cli@6.19.1
四、构建安卓工程
ionic cordova prepare android
如果没添加过安卓工程,控制台提示add增加,输入y回车即可
构建时如遇插件缺失
Failed to restore plugin xxx,则安装对应插件cordova plugin add xxx,像极光推送jpush-phonegap-plugin还需要加上key:cordova plugin add jpush-phonegap-plugin --variable APP_KEY=xxx
五、打包安卓apk
1、默认打包debug版本
ionic cordova build android
2、打包正式版
ionic cordova build android --release
3、build时下载gradle超时解决方案
安卓工程platforms\android搜索:
services.gradle.org/distributions/gradle;
搜索结果例如:https\://services.gradle.org/distributions/gradle-4.6-all.zip;
替换为本地地址(下载到本地):
file\:///D:/gradle/gradle-4.6-all.zip
4、远程Maven仓库文件下载超时(要上梯)
改为阿里云云效Maven;
文件位置:platforms\android\build.gradle或者repositories.gradle;
按需添加google、jcenter等,有特殊的如mpaas还需要账号密码;
maven {
url 'https://maven.aliyun.com/repository/google/'
}
maven {
url 'https://maven.aliyun.com/repository/public/'
}
5、记得build之前要改好gradle和Maven配置
6、程序包com.example.chenyu不存在 程序包R不存在
用到百度地图才做,报错:SerialLocation.java:17: 错误: 程序包com.example.chenyu不存在 程序包R不存在
修改包名:
全局搜索com.example.chenyu替换为自己APP的包名
我这里的文件位置:platforms\android\app\src\main\java\com\chenyu\GaoDeLocation\SerialLocation.java17行的:import com.example.chenyu.R;
7、打包生产报错
ERROR in : Cannot determine the module for class AutotrophyContractPage in D:/project/arrow_epms/src/app/pages/project/autotrophy-contract/autotrophy-contract.page.ts! Add AutotrophyContractPage to the
NgModule to fix it.
意思是AutotrophyContractPage组件没有注册到NgModule;
- 配置到对应
xxx.module.ts里面; - 如果改页面没用了就移除了重新
build;
8、apk位置
D:\project\arrow_epms\platforms\android\app\build\outputs\apk\
六、签名
使用jarsigner给打包出来的apk签名:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore 证书路径 app-release.apk 别名
例如:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore myapp.keystore app-release.apk myapp_alias
至此apk就打包好了!