Недавно мы начали использовать новый механизм Google Expansion APK. В целом работает хорошо, но нам кажется несколько хлипким. Некоторые вопросы:
Некоторые пользователи загружают приложение расширения вместе с приложением, а другие нет, и нашему приложению приходится загружать его самостоятельно. Кто-нибудь знает, что управляет, когда он работает автоматически, а когда нет?
Иногда, когда нам нужно загрузить файл расширения самостоятельно, Google Play возвращает -1 для размера файла и ноль для URL-адреса, указывая на то, что файл расширения не существует. Если я снова запущу приложение, во второй раз оно, как правило, вернет правильный размер и URL-адрес. Кто-нибудь еще видит это безобразие?
Вот основы кода:
Вот как мы настроили вызов для проверки лицензии через обратный вызов
policy = new APKExpansionPolicy( context, new AESObfuscator( SALT, context.getPackageName(), deviceId ) );
mChecker = new LicenseChecker( context, policy, BASE64_PUBLIC_KEY );
mLicenseCheckerCallback = new MyLicenseCheckerCallback();
mChecker.checkAccess( mLicenseCheckerCallback );
Затем в обратном вызове у нас есть это для метода allow() (когда лицензия действительна).
public void allow( int reason )
{
String expansionFileName = policy.getExpansionFileName( APKExpansionPolicy.MAIN_FILE_URL_INDEX );
String expansionURL = policy.getExpansionURL( APKExpansionPolicy.MAIN_FILE_URL_INDEX );
long expansionFileSize = policy.getExpansionFileSize( APKExpansionPolicy.MAIN_FILE_URL_INDEX );
}
Мы только что выпустили приложение с этим новым кодом, но значительное количество пользователей получают обратно -1 в качестве расширенияFileSize и null в качестве URL-адреса. Это приводит к тому, что пользователь не может установить файл расширения. Как правило, если они снова запустят приложение, оно будет работать во второй (или третий) раз.
У кого какие мысли, что может происходить?