cargo apk
Tool for creating Android packages.
Installation
From crates.io:
cargo install cargo-apk
From source:
cargo install --path .
Commands
build: Compiles the current packagerun: Run a binary or example of the local packagegdb: Start a gdb session attached to an adb device with symbols loaded
Manifest
cargo supports the metadata table for configurations for external tools like cargo apk.
Following configuration options are supported by cargo apk under [package.metadata.android]:
# Name of your APK as shown in the app drawer and in the app switcher
= "APK Name"
# The target Android API level.
= 29
= 26
# Virtual path your application's icon for any mipmap level.
# If not specified, an icon will not be included in the APK.
= "@mipmap/ic_launcher"
# If set to true, makes the app run in full-screen, by adding the following line
# as an XML attribute to the manifest's <application> tag :
# android:theme="@android:style/Theme.DeviceDefault.NoActionBar.Fullscreen
# Defaults to false.
= false
# Set the minimum required OpenGL ES version.
# Defaults to [3, 1]
= [3, 0]
# Sets the applications screenOrientation.
# See https://developer.android.com/guide/topics/manifest/activity-element
# and look for `android:screenOrientation` for possible values
# Defaults to "unspecified" which makes the system pick an orientation and
# doesn't give you help with rotation.
= "sensorLandscape"
# Adds a uses-feature element to the manifest
# Supported keys: name, required
# See https://developer.android.com/guide/topics/manifest/uses-feature-element
[[]]
= "android.hardware.camera"
[[]]
= "android.hardware.vulkan.level"
= "1"
# Adds a uses-permission element to the manifest.
# Note that android_version 23 and higher, Android requires the application to request permissions at runtime.
# There is currently no way to do this using a pure NDK based application.
# See https://developer.android.com/guide/topics/manifest/uses-permission-element
[[]]
= "android.permission.WRITE_EXTERNAL_STORAGE"
= 18
# Specifies the array of targets to build for.
= [ "armv7-linux-androideabi", "aarch64-linux-android", "i686-linux-android", "x86_64-linux-android" ]
# Path to your application's resources folder.
# If not specified, resources will not be included in the APK
= "path/to/res_folder"
# Path to the folder containing your application's assets.
# If not specified, assets will not be included in the APK
= "path/to/assets_folder"
TODO: intent filters and application metadatas