cargo apk

Tool for creating Android packages.

Installation

From crates.io: cargo install cargo-apk

From source: cargo install --path .

Commands

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