Проблемы с сервером лицензирования Android

Я пытался использовать новую службу лицензирования Android и столкнулся с некоторыми проблемами. Мой код в основном действии выглядит так:

  mLicenseCheckerCallback = new MyLicenseCheckerCallback();

  String deviceId = Secure.getString(MainTabActivity.this.getContentResolver(), Secure.ANDROID_ID);

    mChecker = new LicenseChecker(
            MainTabActivity.this, new ServerManagedPolicy(MainTabActivity.this,
                new AESObfuscator(SALT, getPackageName(), deviceId)),
            BASE64_PUBLIC_KEY  
            );

        mChecker.checkAccess(mLicenseCheckerCallback);

(в основном просто показанный код онлайн-документации Android. Обратный вызов проходит, если он разрешен, а если нет, он отображает сообщение и закрывает приложение. Пока все хорошо.

Проблема в том, что он отлично работает в отладчике, но когда я публикую его на рынке и обновляю свое приложение (я купил версию своего приложения с моей личной учетной записью gmail, поэтому я законный пользователь) я получаю ошибка, что мое приложение не лицензировано. Я даже добавил свой личный адрес gmail в белый список в своем профиле на рынке и установил статус «ЛИЦЕНЗИРОВАНО», но все равно появляется ошибка. У Вас есть какие-то предложения ?


person Daniel    schedule 12.09.2010    source источник
comment
Вы запутываете код? Я столкнулся с парой проблем, вызванных тем, что обфускатор все испортил.   -  person Dan Dyer    schedule 13.09.2010
comment
Пока мы обсуждаем эту тему, должен ли сервер лицензирования отклонять учетную запись разработчика, если установлено значение «Отвечать нормально»? Я не устанавливал его в дикой природе. Ваше сообщение выше меня немного насторожило. Пожалуйста, обновите, если вы обнаружите ответ.   -  person Jason    schedule 13.09.2010
comment
Да, у меня есть обфускация кода. Я постараюсь без запутывания и дам вам знать. Если у вас есть другие предложения, дайте мне знать. У меня есть две учетные записи: учетная запись разработчика для публикации моих приложений, личная учетная запись с моей личной почтой на моем мобильном телефоне. я купил приложение со своей личной учетной записью, поэтому оно должно быть зарегистрировано   -  person Daniel    schedule 13.09.2010
comment
Вы по-прежнему должны стремиться запутать код, но стоит отключить его для тестирования, просто чтобы исключить такую ​​возможность. Я задокументировал две проблемы, связанные с обфускацией LVL, здесь: blog.uncommons.org/2010/09/13/android-lvl-obfuscation-pitfalls   -  person Dan Dyer    schedule 13.09.2010


Ответы (2)


Обратный звонок от службы лицензирования иногда не происходит в течение нескольких секунд - хуже, если есть задержка сети. Обычно он кэширует ответ в службе после успешной попытки, чтобы уменьшить задержку при более поздних запусках приложения.

Скорее всего, вам нужно перенести логику закрытия приложения (или отключения функций) на более поздний этап работы с пользовательским интерфейсом.

У меня также было несколько ложноотрицательных результатов для пользователей, которые исправлялись, если они закрывали приложение и повторяли попытку позже.

person Tony Maro    schedule 14.12.2010

У меня была такая же проблема, и я добавил

<uses-permission
        android:name="com.android.vending.CHECK_LICENSE"></uses-permission> 

к манифесту, сделал трюк для меня!

person Alex    schedule 02.07.2011