Проблема, с которой вы столкнулись, заключается в том, что для работы Cordova использует мост между кодом вашего приложения, написанным на Javascript, и базовым собственным кодом.
Запутывая весь код Objective C, слой Javascript не знает об этом и больше не может найти имена искомых классов, которые он ищет.
Например, предположим, что вы включили cordova-plugin-device в ваше приложение.
Его определение <feature>
для iOS отображает имя функции Device
в класс CDVDevice
.
Предположим, что ваше приложение Cordova вызывает метод плагина device.getInfo()
.
Это, в свою очередь, вызывает вызов cordova.exec()
, который вызывает функцию Device
с действием getDeviceInfo
.
Под капотом Cordova ищет Device
, чтобы найти собственное имя класса, которому он сопоставлен (CDVDevice
), а затем на платформе iOS пытается вызвать функцию-член getDeviceInfo()
на этот класс.
Однако, запустив инструмент PPiOS-Rename, вы запутали как имя класса (CDVDevice
), так и имя функции (getDeviceInfo()
), поэтому Cordova не может найти класс или функцию для вызова, поэтому выдается ошибка .
В этом случае вам нужно будет исключить CDVDevice
, используя параметр фильтра , предоставляемый PPiOS-Rename , например:
ppios-rename --analyze -F 'CDVDevice' /path/to/program.app/program
Если вы хотите продолжить запутывание слоя Objective C в вашем приложении Cordova, вам придется добавить исключения для всех имен классов и функций, которые Cordova явно вызывает из уровня Javascript.
Сюда входят все классы интерфейса подключаемого модуля Cordova в вашем проекте и, возможно, классы, принадлежащие самой платформе Cordova (как cordova-plugin-proguard
для ProGuard на Android .