warrior пре 2 месеци
родитељ
комит
2b0eef71b8

+ 3 - 0
.gitignore

@@ -41,3 +41,6 @@ testem.log
 # System files
 .DS_Store
 Thumbs.db
+
+# key
+.env

+ 10 - 0
android/app/build.gradle

@@ -16,10 +16,20 @@ android {
             ignoreAssetsPattern '!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~'
         }
     }
+    signingConfigs {
+        //签名信息
+        release {
+            keyAlias System.getenv('KEY_ALIAS') ?: 'my-key-alias'
+            keyPassword System.getenv('KEY_PASSWORD') ?: '12345678'
+            storeFile file(System.getenv('KEYSTORE_PATH') ?: '../my-release-key.keystore')
+            storePassword System.getenv('STORE_PASSWORD') ?: '12345678'
+        }
+    }
     buildTypes {
         release {
             minifyEnabled false
             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+            signingConfig signingConfigs.release
         }
     }
 }

+ 6 - 0
android/gradle.properties

@@ -11,6 +11,12 @@
 # The setting is particularly useful for tweaking memory settings.
 org.gradle.jvmargs=-Xmx1536m
 
+# android/gradle.properties
+org.gradle.caching=true
+org.gradle.parallel=true
+org.gradle.daemon=true
+org.gradle.configureondemand=true
+
 # When configured, Gradle will run in incubating parallel mode.
 # This option should only be used with decoupled projects. More details, visit
 # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects

+ 1 - 1
android/gradle/wrapper/gradle-wrapper.properties

@@ -1,6 +1,6 @@
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.2.1-all.zip
+distributionUrl=https://mirrors.aliyun.com/macports/distfiles/gradle/gradle-8.2.1-all.zip
 networkTimeout=10000
 validateDistributionUrl=true
 zipStoreBase=GRADLE_USER_HOME

BIN
android/my-release-key.keystore


+ 26 - 9
build.android.md

@@ -1,16 +1,33 @@
 # 安装
+  - cnpm install
+  - 配置好java SKD 环境
+  - 配置好Android 环境(adb命令正常)
+# cap打包
+  ## 一、打包web资源到www文件内
+  - ionic build --project=live-app//默认打包 或者 ng build live-app --output-path=www/live-app
+  ## 二、添加 Android 平台
+  - npx cap sync android  添加 Android 平台(如果尚未添加)
+    - 打开 Android 项目(可选): npx cap open android
+  - android\gradle\wrapper\gradle-wrapper.properties 中 gradle-wrapper.properties 中修改阿里镜像文件
+    distributionUrl=https://mirrors.aliyun.com/macports/distfiles/gradle/gradle-8.2.1-all.zip
+  ## 三、打包 Android 平台
+   - npx cap build android 构建 Android 应用
+   
 
+# cordova打包(弃用)
+  - ionic cordova build android --release
 
-# 打包
-  ### ionic build --project=live-app//默认打包 或者 ng build live-app --output-path=www/live-app
 
 # 参考资料
-- 打包 
-  - https://blog.csdn.net/weixin_46318413/article/details/126129576
-  - https://blog.csdn.net/qq_18948359/article/details/139874286
-  - https://www.jianshu.com/p/be517d9a0567
+  - 打包 
+    - https://blog.csdn.net/weixin_46318413/article/details/126129576
+    - https://blog.csdn.net/qq_18948359/article/details/139874286
+    - https://www.jianshu.com/p/be517d9a0567
 
 # Question:
-  - npx cap sync android  添加 Android 平台(如果尚未添加)
-    - 打开 Android 项目(可选): npx cap open android
-  - npx cap build android 构建 Android 应用
+  - 签名密钥问题
+    - 如果你决定创建一个新的 keystore 文件,并使用简单的密钥别名,可以运行以下命令:
+      keytool -genkey -v -keystore my-release-key.keystore -alias release-key -keyalg RSA -keysize 2048 -validity 10000
+    - 查看签名配置信息:keytool -list -v -keystore D:\Desktop\works\nova-live\android\my-release-key.keystore -storepass 12345678
+  - angular cli创建的项目不支持ionic命令问题
+    - ionic init 生成ionic.config.json

+ 9 - 0
capacitor.config.ts

@@ -4,6 +4,15 @@ const config: CapacitorConfig = {
   appId: 'io.ionic.starter',
   appName: 'nova-live',
   webDir: 'www',
+  android: {
+    buildOptions: {
+      releaseType: 'APK',
+      keystorePath: './my-release-key.keystore',
+      keystorePassword: '12345678',
+      keystoreAlias: 'my-key-alias',
+      keystoreAliasPassword: '12345678'
+    }
+  },
   cordova: {
     preferences: {
       ScrollEnabled: 'false',

BIN
my-release-key.keystore


+ 19 - 0
package-lock.json

@@ -45,6 +45,7 @@
         "@types/parse": "^3.0.9",
         "cordova-plugin-device": "2.0.2",
         "cordova-plugin-statusbar": "2.4.2",
+        "cross-env": "^7.0.3",
         "jasmine-core": "~5.1.0",
         "karma": "~6.4.0",
         "karma-chrome-launcher": "~3.2.0",
@@ -6404,6 +6405,24 @@
         "postcss-media-query-parser": "^0.2.3"
       }
     },
+    "node_modules/cross-env": {
+      "version": "7.0.3",
+      "resolved": "https://registry.npmmirror.com/cross-env/-/cross-env-7.0.3.tgz",
+      "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==",
+      "dev": true,
+      "dependencies": {
+        "cross-spawn": "^7.0.1"
+      },
+      "bin": {
+        "cross-env": "src/bin/cross-env.js",
+        "cross-env-shell": "src/bin/cross-env-shell.js"
+      },
+      "engines": {
+        "node": ">=10.14",
+        "npm": ">=6",
+        "yarn": ">=1"
+      }
+    },
     "node_modules/cross-spawn": {
       "version": "7.0.6",
       "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.6.tgz",

+ 3 - 1
package.json

@@ -6,7 +6,8 @@
     "start": "ng serve",
     "build": "ng build",
     "watch": "ng build --watch --configuration development",
-    "test": "ng test"
+    "test": "ng test",
+    "build-android": "cross-env $(cat .env | xargs) npx cap build android"
   },
   "private": true,
   "dependencies": {
@@ -47,6 +48,7 @@
     "@types/parse": "^3.0.9",
     "cordova-plugin-device": "2.0.2",
     "cordova-plugin-statusbar": "2.4.2",
+    "cross-env": "^7.0.3",
     "jasmine-core": "~5.1.0",
     "karma": "~6.4.0",
     "karma-chrome-launcher": "~3.2.0",