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 package
run: Run a binary or example of the local package
gdb: 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]:
```toml
Name of your APK as shown in the app drawer and in the app switcher
apk_label = "APK Name"
The target Android API level.
targetsdkversion = 29
minsdkversion = 26
Virtual path your application's icon for any mipmap level.
If not specified, an icon will not be included in the APK.
icon = "@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 tag :
android:theme="@android:style/Theme.DeviceDefault.NoActionBar.Fullscreen
Defaults to false.
fullscreen = false
Set the minimum required OpenGL ES version.
Defaults to [3, 1]
opengles_version = [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.
orientation = "sensorLandscape"
Adds a uses-feature element to the manifest
Supported keys: name, required
See https://developer.android.com/guide/topics/manifest/uses-feature-element
[[package.metadata.android.feature]]
name = "android.hardware.camera"
[[package.metadata.android.feature]]
name = "android.hardware.vulkan.level"
version = "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
[[package.metadata.android.permission]]
name = "android.permission.WRITEEXTERNALSTORAGE"
maxsdkversion = 18
Specifies the array of targets to build for.
buildtargets = [ "armv7-linux-androideabi", "aarch64-linux-android", "i686-linux-android", "x8664-linux-android" ]
Path to your application's resources folder.
If not specified, resources will not be included in the APK
res = "path/to/res_folder"
Path to the folder containing your application's assets.
If not specified, assets will not be included in the APK
assets = "path/to/assets_folder"
Adds application metadata to the manifest
Note that there can be several application_metadatas entries
this will add:
[[package.metadata.android.applicationmetadatas]]
name = "com.samsung.android.vr.application.mode"
value = "vronly"
Adds activity metadata to the manifest
Note that there can be several activity_metadatas entries
this will add:
[[package.metadata.android.activity_metadatas]]
name = "com.oculus.vr.focusaware"
value = "true"
```
TODO: intent filters