flutter发布插件bixolon-sdk调用时apk崩溃



我正在尝试在我的flutter插件中使用Bixolon SDK,在调试模式下,一切都很好,工作非常完美。但是,当我进入发布模式时,它崩溃了,应用程序关闭,并显示以下错误:

F/example.alsahi(21380): thread.cc:2155] No pending exception expected: java.lang.ClassNotFoundException: Didn't find class "com.bixolon.commonlib.emul.EscPosEmul" on path: DexPathList[[zip file "/data/app/com.example.alsahil-SQ9CSxBQ66--Q9wfyJTfmQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.alsahil-SQ9CSxBQ66--Q9wfyJTfmQ==/lib/arm, /data/app/com.example.alsahil-SQ9CSxBQ66--Q9wfyJTfmQ==/base.apk!/lib/armeabi-v7a, /system/lib, /system/vendor/lib]]
F/example.alsahi(21380): thread.cc:2155]   at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:134)
F/example.alsahi(21380): thread.cc:2155]   at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379)    
F/example.alsahi(21380): thread.cc:2155]   at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
F/example.alsahi(21380): thread.cc:2155]   at java.lang.String java.lang.Runtime.nativeLoad(java.lang.String, java.lang.ClassLoader) (Runtime.java:-2)
F/example.alsahi(21380): thread.cc:2155]   at void java.lang.Runtime.loadLibrary0(java.lang.ClassLoader, java.lang.String) (Runtime.java:1014)     
F/example.alsahi(21380): thread.cc:2155]   at void java.lang.System.loadLibrary(java.lang.String) (System.java:1669)
F/example.alsahi(21380): thread.cc:2155]   at void j.d.<clinit>() (:-1)
F/example.alsahi(21380): thread.cc:2155]   at void n.a.a.b.<init>(android.content.Context) (:-1)
F/example.alsahi(21380): thread.cc:2155]   at void n.a.a.c.a(byte[], java.lang.String, java.lang.String, android.content.Context) (:-1)
F/example.alsahi(21380): thread.cc:2155]   at void n.a.a.a.h(i.a.c.a.i, i.a.c.a.j$d) (:-1)
F/example.alsahi(21380): thread.cc:2155]   at void i.a.c.a.j$a.a(java.nio.ByteBuffer, i.a.c.a.b$b) (:-1)
F/example.alsahi(21380): thread.cc:2155]   at void io.flutter.embedding.engine.f.c.i(io.flutter.embedding.engine.f.c$d, java.nio.ByteBuffer, int) (:-1)
F/example.alsahi(21380): thread.cc:2155]   at void io.flutter.embedding.engine.f.c.j(java.lang.String, io.flutter.embedding.engine.f.c$d, java.nio.ByteBuffer, int, long) (:-1)
F/example.alsahi(21380): thread.cc:2155]   at void io.flutter.embedding.engine.f.c.k(java.lang.String, io.flutter.embedding.engine.f.c$d, java.nio.ByteBuffer, int, long) (:-1)
F/example.alsahi(21380): thread.cc:2155]   at void io.flutter.embedding.engine.f.a.run() (:-1)
F/example.alsahi(21380): thread.cc:2155]   at void android.os.Handler.handleCallback(android.os.Message) (Handler.java:873)
F/example.alsahi(21380): thread.cc:2155]   at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:99)
F/example.alsahi(21380): thread.cc:2155]   at void android.os.Looper.loop() (Looper.java:214)
F/example.alsahi(21380): thread.cc:2155]   at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:7156)
F/example.alsahi(21380): thread.cc:2155]   at java.lang.Object java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) (Method.java:-2)
F/example.alsahi(21380): thread.cc:2155]   at void com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run() (RuntimeInit.java:494)
F/example.alsahi(21380): thread.cc:2155]   at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:975)
F/example.alsahi(21380): thread.cc:2155]
F/example.alsahi(21380): runtime.cc:577] Runtime aborting...
F/example.alsahi(21380): runtime.cc:577] Dumping all threads without appropriate locks held: thread list lock

这是我的应用程序级构建等级:

compileSdkVersion flatter.compileSdkVersion

compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.example.alsahil"
minSdkVersion 21
targetSdkVersion flutter.targetSdkVersion
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
multiDexEnabled true
}
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}

这是我的AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.alsahil">
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true"/>
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

显示插件文件的照片

任何帮助都将不胜感激。。

问题:

发布模式下似乎存在访问问题。

解决方案:

  1. 为了避免这种情况,proguard将在app/gradle上帮助我们:
buildTypes {
release {
signingConfig signingConfigs.debug

// Add this line below
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
  1. 创建proguard rules.pro文件并添加此行:
-keep class com.bixolon.** { *; }

最新更新