У меня есть приложение для Android, которое было разработано, скомпилировано и выпущено с использованием опции SDK по умолчанию.
Use Compile using SDK Version
Мне нужно внести дополнения в это приложение, однако я не знаю, на какой SDK он был нацелен на время компиляции, когда последний раз тестировался и выпускался.
Проблема в том, что более поздние уровни API имеют другие требования, такие как изменения авторизации, когда вам нужно запрашивать разрешение у пользователя. Я вижу из кода, что этого не происходит, поэтому это должно быть раньше.
Есть ли способ узнать из исходного кода или предыдущего скомпилированного .apk, какой SDK использовался? У меня нет разрешения обновлять весь код, чтобы добавить все эти изменения авторизации, просто нужно сделать несколько небольших изменений.
Возможно, вы можете добавить свои изменения внутри, если вот так:
if (Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.**TheVersionYouNeed**) {
// Your code
}
.apk - это просто zip-файл, поэтому распакуйте его и просмотрите XML-файл манифеста.
В верхней части файла вы должны найти элемент, в котором может содержит минимальный, целевой и максимальный SDK.
<uses-sdk android:minSdkVersion = "integer"
android:targetSdkVersion = "integer"
android:maxSdkVersion = "integer" />
Вы будете искать уровень API targetSdkVersion
re: https://developer.android.com/guide/topics/manifest/uses-sdk-element.html
Похоже, что в скомпилированном apk файл AndroidManifest.xml не является xml. Я просто получаю много символов ascii. Я вижу в источнике, что был установлен только android:minSdkVersion. Возможно, просто нужно сделать немного проб и ошибок
Это не сработает. Если я компилирую неправильный SDK, например Android API 23, мне нужно будет модернизировать все проверки, чтобы запрашивать разрешения у пользователей для каждого компонента, который использует приложение. Я не могу сделать это. Мне нужно скомпилировать правильный API, используемый предыдущим разработчиком