-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Sergey Golovin
committed
Oct 18, 2023
1 parent
6799c15
commit 6c127b0
Showing
121 changed files
with
5,674 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
.gradle | ||
/local.properties | ||
/.idea/workspace.xml | ||
.DS_Store | ||
|
||
# built application files | ||
*.apk | ||
*.ap_ | ||
|
||
# files for the dex VM | ||
*.dex | ||
|
||
# Java class files | ||
*.class | ||
|
||
# generated files | ||
bin/ | ||
gen/ | ||
|
||
# Local configuration file (sdk path, etc) | ||
local.properties | ||
|
||
# Eclipse project files | ||
.classpath | ||
.project | ||
|
||
# Proguard folder generated by Eclipse | ||
proguard/ | ||
|
||
# Intellij project files | ||
*.iml | ||
*.ipr | ||
*.iws | ||
.idea/ | ||
|
||
# Gradle | ||
build/ | ||
|
||
# Maven | ||
target/ | ||
build-maven | ||
|
||
!gradle |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
# ===== CODE OWNERS ===== | ||
*gradle.lockfile @co-is @co-is-required | ||
*settings.gradle.kts @co-is @co-is-required |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
## Чеклист для влития | ||
<!-- | ||
Список шагов, которые необходимо проверить перед влитием этого MR. | ||
Если какой-то шаг выполнять не нужно, оставьте галку пустой и укажите причину. | ||
--> | ||
* [ ] Ветка сделана от свежей версии девелопа | ||
* [ ] Код проверен на тестовом окружении | ||
* [ ] Код покрыт тестами, по возможности | ||
* [ ] В демку внесены изменения, по возможности | ||
* [ ] Изменения описаны в документации | ||
* [ ] Задача находится в статусе Verified или у нее стоит тег dev_test | ||
|
||
## Какиe изменения сделаны? | ||
<!-- | ||
Вкратце изложите суть изменений. | ||
Здесь могут быть указаны: | ||
- Список проделанных изменений | ||
- Ошибки, которые были исправлены | ||
- Описание добавленных функций и их назначение | ||
- Проделанные оптимизации | ||
--> | ||
|
||
## Зачем сделаны изменения? | ||
<!-- | ||
Расскажите о цели внесения изменений. | ||
Здесь могут быть указаны: | ||
- Причины внесения изменений | ||
- Как изменения улучшают проект | ||
- Требования и запросы пользователей, которые были решены | ||
--> | ||
|
||
## Как реализованы изменения? | ||
<!-- | ||
Укажите реализацию изменений. | ||
Здесь могут быть указаны: | ||
- Используемые технологии, методы или алгоритмы | ||
- Вспомогательные материалы, такие как диаграммы, схемы или ссылки на документацию | ||
- Скриншоты из демки, если были изменения UI | ||
Для этого скопируйте <img src="/uploads/hash/image.png" width="400"/> и замените hash на хэш изображения. | ||
--> | ||
|
||
## Как проводилось тестирование? | ||
<!-- | ||
Опишите метод проверки изменений. | ||
Здесь могут быть указаны: | ||
- Добавленные тесты, их объем и описание | ||
- Функционал, проверенный ручным тестированием | ||
- Автотесты, запущенные на измененном коде | ||
- Необходимые для проведения тестирования нестройки, например тестовые пользователи или фиче-тоглы | ||
--> | ||
|
||
## На что обратить внимание? | ||
<!-- | ||
Добавьте дополнительные примечания для проведения ревью. | ||
Здесь могут быть указаны: | ||
- Инструкции для ревьюера | ||
- Известные ограничения, проблемы или замечания | ||
--> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
# Code Style | ||
|
||
В проекте используется detekt и [ktlint](https://detekt.dev/docs/rules/formatting/)-плагин для него. | ||
Ktlint это чуть более строгие стандартные [котлиновские гайдлайны](https://kotlinlang.org/docs/coding-conventions.html). | ||
|
||
И детект и форматтер запускаются одной командой `./gradlew detekt` — форматтер постарается сразу исправить то, что сможет, но ошибки покажет в любом случае, даже если все исправил. | ||
|
||
Чтобы detekt запускался перед каждым пушем, выполните скрипт `sudo bash scripts/install-git-hooks.sh` — может понадобиться sudo так как гит-хуки это исполняемые файлы. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,87 @@ | ||
# Contributing | ||
|
||
## ⏳ Подготовка к разработке | ||
Для начала работы нужно склонировать репозиторий и перейти в созданную директорию | ||
|
||
```bash | ||
git clone [email protected]:vk-ecosystem/shared/vk-id.git | ||
cd android-sdk | ||
``` | ||
Так же можно сделать форк и склонировать его | ||
|
||
## 🐶 Базовые команды | ||
> Все команды запускаются из корня проекта | ||
1. `./gradlew build` - полная сборка проекта | ||
2. `./gradlew test` - прогон unit тестов | ||
3. `./gradlew lint` - запуск android линта | ||
4. `./gradlew detekt` - запуск detekt для проверки качества кода | ||
|
||
## 🪵 Создание ветки | ||
|
||
Ветки создаются от `develop`. | ||
|
||
Для названия веток используется специальный шаблон: | ||
|
||
``` | ||
{username}/{task_type}/{issue_number}/{description} | ||
Где: | ||
- {username} - Ник пользователя в свободном формате, латиницей | ||
- {task_type} - "fix", если это испарвление бага и "feature", если это полноценная доработка | ||
- {issue_number} - VKIDSDK-XXX для разработчиков VK и ISSUE-XXX для внешних контрибьютеров | ||
- {description} - Краткое описание проделанной работы | ||
``` | ||
|
||
Пример: | ||
```bash | ||
git checkout develop | ||
git pull | ||
git checkout -b u.name/feature/some-feature/ISSUE-0000 | ||
``` | ||
|
||
Для веток будет сделана проверка формата в хуке `commit-msg`, которая провалидирует соответствие названия ветки шаблону | ||
|
||
## 📝 Создание коммита | ||
|
||
Сообщение в коммите должно соответствовать шаблону: | ||
|
||
``` | ||
{issue_number}: {commit_description} | ||
Где: | ||
- {issue_number} - VKIDSDK-XXX для разработчиков VK и ISSUE-XXX для внешних контрибьютеров | ||
- {commit_description} - Краткое описание коммита на английском языке | ||
``` | ||
|
||
Для коммитов будет добавлен линтер на хук `commit-msg`, который проверяет, соответствует ли сообщение в коммите шаблону | ||
|
||
Пример: | ||
```bash | ||
git checkout develop | ||
git add -A | ||
git commit -m "ISSUE-0000: some commit description" | ||
``` | ||
|
||
## 😸 Подготовка Merge Request | ||
|
||
Заголовок мра должен быть сделан по следующему шаблону: | ||
``` | ||
{issue_number}: {commit_description} | ||
Где: | ||
- {issue_number} - VKIDSDK-XXX для разработчиков VK и ISSUE-XXX для внешних контрибьютеров | ||
- {commit_description} - Краткое описание коммита на английском языке | ||
``` | ||
|
||
Пример: | ||
``` | ||
ISSUE-000: Some issue description | ||
``` | ||
|
||
Для того, чтобы подготовить Merge Request, необходимо пройти [Чеклист](.gitlab/Default.md) | ||
|
||
## 🚅 Релизы версий | ||
### <span style="color:green">TODO, добавить после публикации релизов</span> | ||
|
||
## 🖊️ Документация | ||
### <span style="color:green">TODO, добавить после поддержки генерации документации</span> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
Copyright © 2023 V Kontakte LLC | ||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: | ||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. | ||
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,106 @@ | ||
# VK ID | ||
<div align="center"> | ||
<h1 align="center"> | ||
<img src="logo.svg" width="150" alt="VK ID SDK Logo"> | ||
</h1> | ||
<p align="center"> | ||
VK ID SDK — библиотека для авторизации пользователей Android-приложений с помощью аккаунта VK ID. | ||
</p> | ||
</div> | ||
|
||
VK ID - SDK для авторизации пользователей Android приложений с помощью аккаунта VK. | ||
## Предварительно | ||
|
||
Что такое VK ID и как интегрировать его в приложение читайте здесь https://id.vk.com/business/go/docs/vkid/latest/start-page. | ||
|
||
Чтобы подключить VK ID SDK, сначала получите ID приложения (app_id) и защищенный ключ (client_secret). Для этого создайте приложение в [кабинете подключения VK ID](https://id.vk.com/business/go/docs/vkid/latest/create-application). | ||
|
||
|
||
## Установка | ||
|
||
Для начала работы добавьте репозиторий: | ||
```kotlin | ||
maven { | ||
url("https://artifactory-external.vkpartner.ru/artifactory/vkid-sdk-andorid/") | ||
} | ||
``` | ||
|
||
Подключите библиотеку: | ||
```kotlin | ||
implementation("com.vk.id:vkid:${sdkVersion}") | ||
``` | ||
|
||
И пропишите плейсхолдеры манифеста в секции `android` в `build.gradle.kts`: | ||
```kotlin | ||
android { | ||
//... | ||
addManifestPlaceholders(mapOf( | ||
"VKIDClientID" to "1233445", // ID вашего приложения (app_id). | ||
"VKIDClientSecret" to "000000000000", // Ваш защищенный ключ (client_secret). | ||
"VKIDRedirectHost" to "vk.com", // Обычно используется vk.com. | ||
"VKIDRedirectScheme" to "vk1233445", // Обычно используется vk{ID приложения}. | ||
)) | ||
} | ||
``` | ||
|
||
## Интеграция | ||
### Инициализация VK ID SDK | ||
Инициализируйте работу VK ID SDK через объект `VKID`. | ||
```kotlin | ||
val vkid = VKID(context) | ||
``` | ||
### Авторизация | ||
Результат авторизации передается в коллбэк `VKID.AuthCallback`, поэтому его нужно объявить: | ||
```kotlin | ||
private val vkAuthCallback = object : VKID.AuthCallback { | ||
override fun onSuccess(accessToken: AccessToken) { | ||
val token = accessToken.token | ||
//... | ||
} | ||
|
||
override fun onFail(fail: VKIDAuthFail) { | ||
when (fail) { | ||
is VKIDAuthFail.Canceled -> { /*...*/ } | ||
else -> { | ||
//... | ||
} | ||
} | ||
} | ||
} | ||
``` | ||
Авторизация запускается с помощью метода authorize(), у которого есть два варианта вызова: | ||
```kotlin | ||
viewModelScope.launch { | ||
vkid.authorize(vkAuthCallback) | ||
} | ||
``` | ||
или с передачей LifecycleOwner: | ||
```kotlin | ||
vkid.authorize(this@MainActivity, vkAuthCallback) // Первый параметр LifecycleOwner, например активити. | ||
``` | ||
|
||
## Демонстрация | ||
|
||
SDK поставляется с [тестовым примером приложения](sample), где можно посмотреть работу авторизации. | ||
Чтобы получить токен, создайте файл secrets.properties и пропишите в нем client_id и client_secret вашего приложения VK ID: | ||
|
||
|
||
Файл `secrets.properties`: | ||
``` | ||
VKIDClientSecret=Ваш защищённый ключ | ||
VKIDClientID=Ваш ID приложения | ||
``` | ||
|
||
## Документация | ||
|
||
- [Что такое VK ID](https://id.vk.com/business/go/docs/vkid/latest/start-page) | ||
- [Создание приложения](https://platform.vk.com/docs/vkid/latest/create-application) | ||
- [Требования к дизайну](https://platform.vk.com/docs/vkid/latest/guidelines/design-rules) | ||
|
||
## Contributing | ||
Проект VK ID SDK имеет открытый исходный код на GitHub, и вы можете присоединиться к его доработке — мы будем благодарны за внесение улучшений и исправление возможных ошибок. | ||
|
||
### Code of Conduct | ||
Если вы собираетесь вносить изменения в проект VK ID SDK, следуйте [правилам разработки](CODE_OF_CONDUCT.md). Они помогут понять, какие действия возможны, а какие недопустимы. | ||
|
||
### Contributing Guide | ||
В [руководстве](CONTRIBUTING.md) вы можете подробно ознакомиться с процессом разработки и узнать, как предлагать улучшения и исправления, а ещё — как добавлять и тестировать свои изменения в VK ID SDK. | ||
Также рекомендуем ознакомиться с общими [правилами оформления кода](CODE_STYLE.md) в проекте. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile | ||
|
||
plugins { | ||
`kotlin-dsl` | ||
} | ||
|
||
group = "com.vk.id.buildlogic" | ||
|
||
// Configure the build-logic plugins to target JDK 17 | ||
// This matches the JDK used to build the project, and is not related to what is running on device. | ||
java { | ||
sourceCompatibility = JavaVersion.VERSION_17 | ||
targetCompatibility = JavaVersion.VERSION_17 | ||
} | ||
tasks.withType<KotlinCompile>().configureEach { | ||
kotlinOptions { | ||
jvmTarget = JavaVersion.VERSION_17.toString() | ||
} | ||
} | ||
|
||
dependencies { | ||
compileOnly(libs.android.gradlePlugin) | ||
compileOnly(libs.kotlin.gradlePlugin) | ||
compileOnly(libs.ksp.gradlePlugin) | ||
compileOnly(libs.detekt.gradlePlugin) | ||
} | ||
|
||
gradlePlugin { | ||
plugins { | ||
register("androidApplication") { | ||
id = "vkid.android.application" | ||
implementationClass = "AndroidApplicationConventionPlugin" | ||
} | ||
register("androidApplicationCompose") { | ||
id = "vkid.android.application.compose" | ||
implementationClass = "AndroidApplicationComposeConventionPlugin" | ||
} | ||
register("androidLibrary") { | ||
id = "vkid.android.library" | ||
implementationClass = "VKIDLibraryConventionPlugin" | ||
} | ||
register("vkidPublish") { | ||
id = "vkid.android.publish" | ||
implementationClass = "VKIDPublishConventionPlugin" | ||
} | ||
register("vkidDependencyLock") { | ||
id = "vkid.android.dependency.lock" | ||
implementationClass = "DependencyLockPlugin" | ||
description = """Helper to create lockfiles for all modules with one command. | ||
|Usage: `./gradlew allDependencies --write-locks`""".trimMargin() | ||
} | ||
} | ||
} | ||
|
17 changes: 17 additions & 0 deletions
17
build-logic/convention/src/main/kotlin/AndroidApplicationComposeConventionPlugin.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
import com.android.build.api.dsl.ApplicationExtension | ||
import com.vk.id.configureAndroidCompose | ||
import com.vk.id.configureDetekt | ||
import org.gradle.api.Plugin | ||
import org.gradle.api.Project | ||
import org.gradle.kotlin.dsl.getByType | ||
|
||
class AndroidApplicationComposeConventionPlugin : Plugin<Project> { | ||
override fun apply(target: Project) { | ||
with(target) { | ||
pluginManager.apply("vkid.android.application") | ||
val extension = extensions.getByType<ApplicationExtension>() | ||
configureAndroidCompose(extension) | ||
configureDetekt(isCompose = true) | ||
} | ||
} | ||
} |
Oops, something went wrong.