Почему KeyCodeNumber исключение после подписания приложения Blackberry? - PullRequest
1 голос
/ 13 декабря 2010

Мы подписали приложение Blackberry 4.7 с помощью инструмента подписи кода 4.6.Но при запуске приложения во второй раз оно выдает «исключение KeyCodeNumber».

Кто-нибудь может подсказать, почему мы получили это исключение?

1 Ответ

1 голос
/ 20 декабря 2010

Исключения KeyCodeNumber связаны с процессом проверки.

Blackberry опубликовал статью , рассказывающую, как предотвратить ошибки проверки:

При разработке приложений Java для смартфон BlackBerry, вы можете столкнуться с любым из следующих ошибки проверки или ошибки аналогичные на следующее:

Ошибка верификации 3141 Модуль «MyMIDlet» имеет ошибку подтверждения (<###>) со смещением <###>. ошибка запуск MyMIDlet: модуль «MyMIDlet» ошибка подтверждения (<####>) в смещение <###>. "Эти ошибки часто происходят при создании мидлетов. Они есть трудно отладить, потому что то же самое сообщение об ошибке может относиться к количество проблем.

Ниже приведен список возможных решений для предотвращения или исправления ошибок проверки:

  1. Если вы начали с создания Java Архив (JAR) файл, а затем использовал Компилятор прикладных программ RIM (RAPC) для создания .cod файлов, сделать обязательно выключите запутывание, когда создание файла JAR. РАПК Компилятор выполняет свои собственные запутывание и проблемы могут возникнуть, если код уже запутан.
  2. Удалить все вызовы System.out. *. Эти вообще ничего не делаю на Смартфон BlackBerry, но они может вызвать ошибки проверки.
  3. Удалить неиспользуемые операторы импорта.
  4. Явно укажите доступ для каждая функция или переменная. За Например, убедитесь, что каждый из них указано как публичное, частное или защищенный.
  5. Если вы работаете с мидлетом, убедитесь, что класс мидлета объявлен публичным.
  6. Ошибки проверки могут возникнуть, если Файл наложенного платежа поврежден или был не подписан правильно. Удостоверься что вы выполняете чистую перестройку и Вы переподписываете свою заявку. Переустановите приложение на Смартфон BlackBerry.
  7. Закомментируйте любой неисполняемый код. Ошибки проверки могут быть связаны к размеру основного файла кода и файлы библиотеки. если ты закомментируйте неисполняемый код, изменение размера файла, что может исправить проблема.
  8. Если вы создали какие-либо классы, которые наследовать от классов RIM, изменить название любых пользовательских методов и Члены, которые вы создали в тех классы. Это гарантирует, что вы не назвал никаких методов или члены с тем же именем в внутренние классы RIM.
  9. Если ваше приложение использует Программное обеспечение устройства BlackBerry® 3.8 или позже возникают ошибки проверки когда приложение, которое реализует javax.microedition.rms.RecordStore класс скомпилирован с использованием BlackBerry® Среда разработки Java® (BlackBerry JDE) ранее, чем версия 4.0. Это происходит, если Приложение использует либо addRecordListener или методы removeRecordListener Класс RecordStore. Чтобы решить это выдать, перекомпилировать приложение с использованием BlackBerry JDE 4.0 или более поздней версии.
  10. Существует проблема с тем, как BlackBerry® Java® Virtual Machine (BlackBerry JVM) обрабатывает ссылка на класс напрямую в конструкторе другого учебный класс. Ниже приведен пример: Class1 class1 = новый Class1 (Class2.class.getName ());

Чтобы обойти эту проблему, не выполняйте вызов класса в конструкторе, как показано в следующем примере:

Class1 class1;
String className = Class2.class.getName();
Class1 = new Class1(className);

Удалить ссылки на статическую переменную экземпляра из внутреннего класса. Например, следующий пример кода может вызвать ошибку:

public class MyOuterClass {
    static int var;
    class MyInnerClass {
        public void doSomething() {
            var = 7;
        }
    }
}

Есть несколько способов удалить эти ссылки, такие как создание методов get / set для var во внешнем классе или изменение логики для извлечения MyInnerClass из MyOuterClass.

  1. Процедура сборки обычно компилируется из исходного файла Java с помощью команды javac, а затем запускает файл preverify.exe, а затем РААС. Добавьте следующую командную строку аргументы в пользу Javac, чтобы помочь избежать проблемы в более ранних версиях РААС:

    javac.exe - источник 1.3 - цель 1.1

  2. Некоторые методы, которые очень долго могут причинаошибки проверки.Разбивая эти методы на вспомогательные, вы можете уменьшить вероятность ошибок проверки.

  3. Хотя это не так вероятно, некоторые очень длинные определения методов (с 10 или более параметрами), а некоторые оченьдлинные определения констант (длинная структура пакета и / или длинные имена) также могут вызвать ошибки проверки.

...