一、环境
@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.java
17行的: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
就打包好了!