我已经使用ionic 3开发了该应用程序,现在在生成android apk文件时,它的大小变得太大了。
在API集成之前,一旦开始API 交互,文件大小为4.8MB,我刚修改了10页,然后APK文件大小变为71 MB
我使用过的Cordova插件
cordova-plugin-console
cordova-plugin-datepicker
cordova-plugin-device
cordova-plugin-network-information
cordova-plugin-splashscreen
cordova-plugin-statusbar
cordova-plugin-whitelist
cordova-plugin-x-socialsharing
cordova-sqlite-storage
es6-promise-plugin
ionic-plugin-keyboard
Run Code Online (Sandbox Code Playgroud)
我解压缩了APK文件,以了解发生了什么事,我查看了资产/ www /文件夹中的build文件夹(重357MB),其中包含js文件和MAP文件
WWW中的Rest Assests文件夹包含4.5 MB的Css文件
如何减少android apk应用程序的大小?
我在app上使用原生文件插件。Ionic 3你能告诉我如何在它上面使用getFile ()方法吗?我找不到那个方法的正确实现。它的签名如下。但我不知道如何给出directoryEntry参数。
getFile(directoryEntry, fileName, flags)
Run Code Online (Sandbox Code Playgroud) 我正在使用Here(Ionicframework.com)的 Ionic 3 SQLite本机插件,这是我的构造函数代码:
constructor(public navCtrl: NavController,
public menu: MenuController,
translate: TranslateService,
private tts: TextToSpeech,
private sqlite: SQLite) {
this.sqlite.create({
name: 'data.db',
location: 'default'
}).then((db: SQLiteObject) => {
db.executeSql('create table IF NOT EXISTS `localflags`(`flag1` VARCHAR(10),`flag2` VARCHAR(10),`flag3` VARCHAR(10), `flag4` VARCHAR(10));', {})
.then(() => console.log('Table created!!!'))
.catch(e => console.log(e));
}).catch(e => console.log(e));
}
Run Code Online (Sandbox Code Playgroud)
所以,当我使用"ionic cordova run android -lc"在设备上运行时,它会给我这个错误,
Can't resolve all parameters for SQLiteObject: (?)
此代码来自离子原生文档.这是非常基本的代码,我是新手,所以我无法弄清楚这有什么问题.
任何帮助将不胜感激.如果有人能指出我的Ionic 3 SQLite教程,那将是很棒的.提前致谢.
附加信息:
我知道访问cordova插件的常用方法:
(<any>window).plugins.myPlugin
or
declare var yourGloballyAccessablePlugin: any;
Run Code Online (Sandbox Code Playgroud)
但它与插件不同bluetoothle(通过离子3支持的本机蓝牙插件都不够好,因为它们不提供蓝牙功能peripherial如广告)
解决方案尝试:
我在离子论坛上找到了一个相关的问题,并询问他们是如何实现的,到目前为止,我未能重复该过程,到目前为止,没有人回答我的问题,这就是为什么要开放这个问题。
显然,蓝牙公开了一个全局可访问的变量。
如前所述,我在declaration.d.ts文件src夹中添加了以下内容:
declare module 'cordova-plugin-bluetoothle';
import 'cordova-plugin-bluetoothle';
declare var cordova: any;
Run Code Online (Sandbox Code Playgroud)
然后,我尝试像这样访问插件(在手机上对其进行了测试):
import { bluetoothle } from 'cordova-plugin-bluetoothle';
...
(<any>window).bluetoothle
Run Code Online (Sandbox Code Playgroud)
问题:
但是蓝牙对我来说始终是不确定的。由于我是Cordova,Ionic和TypeScript的新手,我想我使用clarifications.d.ts的方式有问题
那么,有人知道我在做什么错吗,如何在ionic 3中使用cordova原生插件bluetoothle?
更新,解决方案尝试2:
因此,我尝试按照app.component.ts@Webruster的建议在初始项目结构中运行此代码,并使用蓝牙文档中的init参数:
(这里的唯一目标是查看插件是否正常工作)
进口...
declare var cordova: any;
Run Code Online (Sandbox Code Playgroud)
@Component,类开始和属性...
constructor(private translate: TranslateService, platform: Platform, settings: Settings, private config: Config, private statusBar: StatusBar, private splashScreen: SplashScreen) {
platform.ready().then(() => …Run Code Online (Sandbox Code Playgroud) 我有一个带有Ionic 3的应用程序,并且在您的app.component.ts中,我使用Statusbar ionic插件将其隐藏,但是,只有在平台就绪启动后才会发生这种情况。
如何在启动画面期间将其隐藏?我试过了:
–在启动画面期间不隐藏,仅在此隐藏之后–在启动画面期间不更改背景颜色
解决方案?
离子技术的初学者。创建项目离子启动Myapp空白离子Cordova运行android后面临的问题
@ionic/cli-utils : 1.19.2
ionic (Ionic CLI) : 3.20.0
Run Code Online (Sandbox Code Playgroud)
全局软件包:
cordova (Cordova CLI) : 8.0.0
Run Code Online (Sandbox Code Playgroud)
本地套餐:
@ionic/app-scripts : 3.1.11
Cordova Platforms : android 7.0.0
Ionic Framework : ionic-angular 3.9.2
Run Code Online (Sandbox Code Playgroud)
系统:
Android SDK Tools : 26.1.1
Node : v8.11.2
npm : 5.6.0
OS : Windows 10
Run Code Online (Sandbox Code Playgroud)
环境变量:
ANDROID_HOME : C:\Users\XXX\AppData\Local\Android\Sdk
Run Code Online (Sandbox Code Playgroud)
其他:
backend : pro.
Run Code Online (Sandbox Code Playgroud)
运行应用程序后使用android设备进行检查。chrome:// inspect /#devices存在以下差异!
上图和URL以localhost:8080开头
图片下方的网址以file:///android_asset/www/index.html开头
如何在每个离子项目中使用chrome inspect而不是localhost:8080将URL作为file:///android_asset/www/index.html获取?
由于此问题,面临以下问题:对预检请求的响应未通过访问控制检查:在所请求的资源上不存在“ Access-Control-Allow-Origin”标头。因此,不允许访问源' http:// localhost:8080 '。响应的HTTP状态码为400。
google-chrome-devtools ionic-framework ionic-view ionic-native ionic3
我使用下面的最新版本的Ionic CLI v4.9.0创建了新的Ionic 3应用程序
$ ionic start Ionic3Project blank --type ionic-angular
Run Code Online (Sandbox Code Playgroud)
默认情况下会创建V4 Ionic项目。
然后我在这里按照步骤进行本机应用程序版本插件
导入app.module.ts文件时遇到以下控制台错误
Uncaught Error: Invalid provider for the NgModule 'AppModule' - only instances of Provider and Type are allowed, got: [StatusBar, ?[object Object]?, ...]
at syntaxError (compiler.js:486)
at compiler.js:15784
at Array.forEach (<anonymous>)
at CompileMetadataResolver._getProvidersMetadata (compiler.js:15752)
at CompileMetadataResolver.getNgModuleMetadata (compiler.js:15320)
at JitCompiler._loadModules (compiler.js:34413)
at JitCompiler._compileModuleAndComponents (compiler.js:34374)
at JitCompiler.compileModuleAsync (compiler.js:34268)
at CompilerImpl.compileModuleAsync (platform-browser-dynamic.js:239)
at PlatformRef.bootstrapModule (core.js:5578)
Run Code Online (Sandbox Code Playgroud)
app.module.ts文件
import { BrowserModule } from '@angular/platform-browser';
import { …Run Code Online (Sandbox Code Playgroud) 当我尝试使用import nativepagetransition提供程序时,它显示了一个错误。
import { BrowserModule } from '@angular/platform-browser';
import { ErrorHandler, NgModule } from '@angular/core';
import { IonicApp, IonicErrorHandler, IonicModule } from 'ionic-angular';
import { SplashScreen } from '@ionic-native/splash-screen';
import { StatusBar } from '@ionic-native/status-bar';
import { LinkPage } from '../pages/link/link';
import { NativePageTransitions } from '@ionic-native/native-page-transitions';
import { MyApp } from './app.component';
import { HomePage } from '../pages/home/home';
@NgModule({
declarations: [
MyApp,
HomePage,
LinkPage,
],
imports: [
BrowserModule,
IonicModule.forRoot(MyApp)
],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
HomePage,
LinkPage …Run Code Online (Sandbox Code Playgroud) 我iOS只想在一页中禁用而不是全局禁用,所以让 \xe2\x80\x99s 说用户结账并付款,我不希望用户在获得后返回到他所在的位置收据。我希望用户留在该页面而不能向后滑动,在 android 中我已经禁用了硬件按钮,而在iOS我有点挣扎。
我已经添加到app.module:
\n\nIonicModule.forRoot({ swipeBackEnabled: false })\nRun Code Online (Sandbox Code Playgroud)\n\n这会禁用全局向后滑动,这就是我不想要的,我也尝试过这个:
\n\n\n\n我跟着它,但仍然无法达到我想要的,
\n\n我也不明白用户最后说的话:
\n\n当前的实现仅适用于应用程序中的单个实例IonRouterInstance,但如果您在自己的应用程序中需要,可以通过支持其他实例来增强它。
他所说的“作品与单曲”是什么意思?
\n\n非常感谢,任何帮助将不胜感激。
\n我想向基于 Ionic 的应用程序添加功能,以检查相应的应用程序商店是否有更新版本,如果存在,则提示用户下载一次(不要重复 - 他们应该能够跳过并且不会被打扰)。与Siren类似,但适用于 Ionic 以及 Google Play 和 Apple App Store。我看到对本机应用程序和 AppStore 的类似请求以及对 Play Store 的类似请求,但没有任何特定于 Ionic 的请求。我觉得我可以使用应用程序版本和这些请求中列出的 ajax 调用将其缝合在一起,但必须有其他人已经这样做了,并且拥有现有的 Cordova/Capacitor 插件。此外,可能存在细微差别,即简单的解决方案可能会失败(即ajax调用失败、应用商店更改API、设备不支持更新版本等)。
是否有现有的插件或代码可以实现上述行为?
ionic-native ×10
ionic3 ×6
cordova ×3
ionic2 ×2
angular ×1
back ×1
ionic-view ×1
ionic4 ×1
ios ×1
sqlite ×1
swipe ×1
typescript ×1