为什么使用 Ionic Framework 构建的应用程序在 Android 设备上安装时会替换另一个 Ionic 应用程序
Why application built with Ionic Framework substitute another Ionic app while installation on Android device
我用 Ionic 框架开发了一些应用程序 (Angular)。
当我构建一个 .apk 文件并将其安装到 Android 设备时,新的应用程序会替换(删除旧的)之前安装的旧应用程序。
当我在 Android Studio 中开发本机应用程序时,我没有这样的问题。
我搜索了 Ionic documentation 但没有找到这个问题。
我只建议在使用一些标志(例如 --release)构建或签署应用程序的 apk 文件后问题将得到解决。
问题 是“android”文件夹已经存在。所以我在答案中描述了解决方案。
只有在第一次 android/ios 添加之前未更改应用程序 ID 时才会出现此问题。
在整个项目中搜索“com.”
12 results - 6 files
android/build.gradle:
9 dependencies {
10: classpath 'com.android.tools.build:gradle:7.0.4'
11: classpath 'com.google.gms:google-services:4.3.5'
12
android/app/build.gradle:
1: apply plugin: 'com.android.application'
2
46 if (servicesJSON.text) {
47: apply plugin: 'com.google.gms.google-services'
48 }
android/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java:
1: package com.getcapacitor.myapp;
2
23
24: assertEquals("com.getcapacitor.app", appContext.getPackageName());
25 }
android/app/src/main/assets/capacitor.plugins.json:
3 "pkg": "@capacitor/app",
4: "classpath": "com.capacitorjs.plugins.app.AppPlugin"
5 },
7 "pkg": "@capacitor/haptics",
8: "classpath": "com.capacitorjs.plugins.haptics.HapticsPlugin"
9 },
11 "pkg": "@capacitor/keyboard",
12: "classpath": "com.capacitorjs.plugins.keyboard.KeyboardPlugin"
13 },
15 "pkg": "@capacitor/status-bar",
16: "classpath": "com.capacitorjs.plugins.statusbar.StatusBarPlugin"
17 }
android/app/src/main/java/io/ionic/starter/MainActivity.java:
2
3: import com.getcapacitor.BridgeActivity;
4
android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java:
1: package com.getcapacitor.myapp;
2
您必须更改 config.xml 中的包名称。因为新的与其他应用程序的包名相同。
您的应用程序可能在 config.xml 中有一个名为 'com.example.app' 的程序包,因此您必须更改为类似 'com.dziamid.thatawesomeapp' 的内容,然后您的下一个应用程序将有一个程序包'com.dziamid.evenmoreawesomeapp' 等。如果您使用的是电容器,请也检查 capacitor.config.json 的 appId 和 appName。
已解决!
- 删除“android”文件夹
- 将appId更改为:'io.ionic.yourApp' in capacitor.config.ts
- cmd
ionic cap add android
(我之前也重建了“www”文件夹)就是这样。
我用 Ionic 框架开发了一些应用程序 (Angular)。 当我构建一个 .apk 文件并将其安装到 Android 设备时,新的应用程序会替换(删除旧的)之前安装的旧应用程序。 当我在 Android Studio 中开发本机应用程序时,我没有这样的问题。
我搜索了 Ionic documentation 但没有找到这个问题。 我只建议在使用一些标志(例如 --release)构建或签署应用程序的 apk 文件后问题将得到解决。
问题 是“android”文件夹已经存在。所以我在答案中描述了解决方案。 只有在第一次 android/ios 添加之前未更改应用程序 ID 时才会出现此问题。
在整个项目中搜索“com.”
12 results - 6 files
android/build.gradle:
9 dependencies {
10: classpath 'com.android.tools.build:gradle:7.0.4'
11: classpath 'com.google.gms:google-services:4.3.5'
12
android/app/build.gradle:
1: apply plugin: 'com.android.application'
2
46 if (servicesJSON.text) {
47: apply plugin: 'com.google.gms.google-services'
48 }
android/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java:
1: package com.getcapacitor.myapp;
2
23
24: assertEquals("com.getcapacitor.app", appContext.getPackageName());
25 }
android/app/src/main/assets/capacitor.plugins.json:
3 "pkg": "@capacitor/app",
4: "classpath": "com.capacitorjs.plugins.app.AppPlugin"
5 },
7 "pkg": "@capacitor/haptics",
8: "classpath": "com.capacitorjs.plugins.haptics.HapticsPlugin"
9 },
11 "pkg": "@capacitor/keyboard",
12: "classpath": "com.capacitorjs.plugins.keyboard.KeyboardPlugin"
13 },
15 "pkg": "@capacitor/status-bar",
16: "classpath": "com.capacitorjs.plugins.statusbar.StatusBarPlugin"
17 }
android/app/src/main/java/io/ionic/starter/MainActivity.java:
2
3: import com.getcapacitor.BridgeActivity;
4
android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java:
1: package com.getcapacitor.myapp;
2
您必须更改 config.xml 中的包名称。因为新的与其他应用程序的包名相同。
您的应用程序可能在 config.xml 中有一个名为 'com.example.app' 的程序包,因此您必须更改为类似 'com.dziamid.thatawesomeapp' 的内容,然后您的下一个应用程序将有一个程序包'com.dziamid.evenmoreawesomeapp' 等。如果您使用的是电容器,请也检查 capacitor.config.json 的 appId 和 appName。
已解决!
- 删除“android”文件夹
- 将appId更改为:'io.ionic.yourApp' in capacitor.config.ts
- cmd
ionic cap add android
(我之前也重建了“www”文件夹)就是这样。