mirror of
https://github.com/android/ndk-samples
synced 2025-11-06 07:25:36 +08:00
Add an ARCHITECTURE.md.
This commit is contained in:
96
ARCHITECTURE.md
Normal file
96
ARCHITECTURE.md
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
# Architecture
|
||||||
|
|
||||||
|
This document describes the layout of the samples repository.
|
||||||
|
|
||||||
|
The top level directory is a Gradle project. This directory can be opened in
|
||||||
|
Android Studio (and that will be the easiest way to work with the samples).
|
||||||
|
|
||||||
|
## Directory structure
|
||||||
|
|
||||||
|
### Samples
|
||||||
|
|
||||||
|
Most subdirectories are the individual sample apps. These can't be opened in
|
||||||
|
Android Studio individually, as they rely on common code from the top level
|
||||||
|
project. These subdirectories have their own `build.gradle` (the Groovy DSL) or
|
||||||
|
`build.gradle.kts` (the Kotlin DSL) files. In Gradle terms these are "projects".
|
||||||
|
Android Studio calls them "modules". The documentation in this repository will
|
||||||
|
typically call them "modules".
|
||||||
|
|
||||||
|
Each sample has its own README.md that explains what features it demonstrates,
|
||||||
|
as well as any unique requirements.
|
||||||
|
|
||||||
|
To run a sample, use the configuration selector in the top panel of Android
|
||||||
|
Studio to select the sample and then click run. For example, to run the
|
||||||
|
endless-tunnel sample game:
|
||||||
|
|
||||||
|
![Select and run a sample][docs/run-sample.png]
|
||||||
|
|
||||||
|
#### Build types
|
||||||
|
|
||||||
|
Android Gradle modules have multiple "build types", sometimes called "variants".
|
||||||
|
For most of the samples, there are only two build types: debug and release. A
|
||||||
|
few samples, notably the sanitizers sample, have more. To view the build types
|
||||||
|
for the modules in this repository, in the Android Studio application menu,
|
||||||
|
select View -> Tool Windows -> Build Variants. A window will open that lets you
|
||||||
|
select the active variant for each sample.
|
||||||
|
|
||||||
|
### build-logic
|
||||||
|
|
||||||
|
The `build-logic` directory contains Gradle convention plugins used by this
|
||||||
|
repository. This is where Gradle policy decisions that apply to the whole
|
||||||
|
repository are made.
|
||||||
|
|
||||||
|
See the README.md in that directory for more details.
|
||||||
|
|
||||||
|
### docs
|
||||||
|
|
||||||
|
Documentation and supporting artifacts for this repository. Yes, for now it's
|
||||||
|
just images for the READMEs and this doc.
|
||||||
|
|
||||||
|
### gradle/libs.versions.toml
|
||||||
|
|
||||||
|
This is a Gradle [version catalog]. It's the central location that defines the
|
||||||
|
library and plugin dependencies for each sample.
|
||||||
|
|
||||||
|
The Android Gradle Plugin does not support evaluating version catalog fields in
|
||||||
|
its DSL, so versions for SDK and NDK tools (`ndkVersion`, `compileSdkVersion`,
|
||||||
|
`targetSdkVersion`, etc) are all defined by the convention plugins in
|
||||||
|
[build-logic](#build-logic).
|
||||||
|
|
||||||
|
[version catalog]: https://docs.gradle.org/current/userguide/platforms.html
|
||||||
|
|
||||||
|
### Gradle wrapper
|
||||||
|
|
||||||
|
The `gradlew` and `gradlew.bat` scripts are the Gradle wrappers, macOS/Linux-
|
||||||
|
and Windows batch-compatible respectively. They will manage the Gradle
|
||||||
|
installation used by this repository for you, ensuring that the correct versions
|
||||||
|
and environment are used. These should be used instead of running `gradle`
|
||||||
|
directly.
|
||||||
|
|
||||||
|
`gradle/wrapper/gradle-wrapper.properties` defines which version of Gradle will
|
||||||
|
be used. This should rarely be modified manually. Android Studio's Upgrade
|
||||||
|
Assistant will manage that file and upgrade to whatever version of Gradle it
|
||||||
|
prefers for that version of Android Studio and Android Gradle.
|
||||||
|
|
||||||
|
### build.gradle and settings.gradle
|
||||||
|
|
||||||
|
The build.gradle (or build.gradle.kts) file is the top level build file. It
|
||||||
|
doesn't do anything interesting but declares which plugins will be used by the
|
||||||
|
child modules. Each sample's module has its own build.gradle file that defines
|
||||||
|
properties of the app.
|
||||||
|
|
||||||
|
The settings.gradle (or settings.gradle.kts) file configures repositories for
|
||||||
|
fetching dependencies, and declares each app module.
|
||||||
|
|
||||||
|
### Metadata directories
|
||||||
|
|
||||||
|
#### .github
|
||||||
|
|
||||||
|
This directory contains GitHub metadata files, such as GitHub Action workflows
|
||||||
|
and Issue templates.
|
||||||
|
|
||||||
|
#### .google
|
||||||
|
|
||||||
|
The `packaging.yaml` file in this directory is used by Android Studio to enable
|
||||||
|
the File -> New -> Import Sample feature. As this repository is a monolithic
|
||||||
|
sample project, it should not need to be changed.
|
||||||
@@ -4,6 +4,9 @@
|
|||||||
|
|
||||||
This repository contains sample apps that use the [Android NDK].
|
This repository contains sample apps that use the [Android NDK].
|
||||||
|
|
||||||
|
For an explanation of the layout of this repository, see
|
||||||
|
[ARCHITECTURE.md](ARCHITECTURE.md).
|
||||||
|
|
||||||
## Build and run
|
## Build and run
|
||||||
|
|
||||||
1. Clone the repository
|
1. Clone the repository
|
||||||
|
|||||||
BIN
docs/run-sample.png
Normal file
BIN
docs/run-sample.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 18 KiB |
Reference in New Issue
Block a user