Канал платформы работает нормально в отладке, но не работает в релизе - PullRequest
0 голосов
/ 22 декабря 2019
java.lang.NoSuchFieldError: No instance field name of type Ljava/lang/String; in class Lh/e/c/a; or its superclasses (declaration of 'h.e.c.a' appears in /data/app/com.epub.epubreader-1/base.apk)
    at h.e.c.a.<init>(:89)
    at h.e.c.b.a(:52)
    at h.e.c.a(:358)
    at h.f.a.c.<clinit>(:70)
    at org.readium.r2.streamer.a.d.d(:62)
    at org.readium.r2.streamer.c.b.a(:101)
    at com.folioreader.ui.activity.FolioActivity.B(:477)
    at com.folioreader.ui.activity.FolioActivity.A(:447)
    at com.folioreader.ui.activity.FolioActivity.onCreate(:296)
    at android.app.Activity.performCreate(Activity.java:5979)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2262)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2369)
    at android.app.ActivityThread.access$800(ActivityThread.java:149)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1289)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:135)
    at android.app.ActivityThread.main(ActivityThread.java:5258)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700)

Я создал канал платформы для доступа к библиотеке Android Folioreader из флаттера. Читатель работал хорошо в отладке, но в выпуске apk приложение вылетает, когда я пытаюсь открыть библиотеку. Ниже приведены основные действия.

class MainActivity : FlutterActivity() {
private val channelName = "epubchannel"
var config = Config()
        .setAllowedDirection(Config.AllowedDirection.ONLY_HORIZONTAL)
        .setDirection(Config.Direction.HORIZONTAL)
var folioReader = FolioReader.get()
        .setConfig(config, true)

@SuppressLint("SdCardPath")
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    GeneratedPluginRegistrant.registerWith(this)

    MethodChannel(flutterView, channelName).setMethodCallHandler { call, result ->
        try {
            if (call.method == "resume") {
                Log.i(LOG_TAG, "-> saveReadLocator -> " + call.arguments.toString())
                val readLocator = ReadLocator.fromJson(call.argument<String>("lastReadPosition"))
                folioReader.setReadLocator(readLocator)
                folioReader.openBook(call.argument<String>("path"))

                folioReader.setReadLocatorListener { readLocator ->
                    Log.i(LOG_TAG, "-> saveReadLocator -> " + readLocator.toJson()!!)
                    result.success(readLocator.toJson().toString())
                    FolioReader.clear()

                }
            } else if (call.method == "start") {
                folioReader.openBook(call.argument<String>("path"))

                folioReader.setReadLocatorListener { readLocator ->
                    result.success(readLocator.toJson().toString())
                    FolioReader.clear()

                }
            }

        } catch (e: Exception) {
            result.error("failed", "${e.toString()}", "")
        }
    }

  }
}

Какая будет ошибка, вызывающая проблему? пожалуйста, прокомментируйте, если вам нужно больше ресурсов, чтобы понять проблему. Спасибо.

ОБНОВЛЕНИЕ: Я добавил ниже свойства в методе выпуска, и приложение работает нормально. Есть ли проблема с добавлением этого свойства?

       minifyEnabled false
       shrinkResources false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...