#android #applications #activity #xml #manifest #com #intent

android-manifest

Rust 的 AndroidManifest 序列化和反序列化器

16 个版本

0.2.0 2023年7月20日
0.1.10 2022年8月8日
0.1.9 2022年7月26日
0.1.6 2022年6月30日
0.0.4 2021年6月7日

#2214 in 解析实现

每月32次下载
6 个crate中(3个直接) 使用

Apache-2.0

365KB
2.5K SLoC

Android Manifest

CI Info Crate Info API Docs Crate

AndroidManifest 序列化和反序列化器用于 Rust。此库也将随着 AndroidManifest 规范的变化而保持更新。

# Cargo.toml
[dependencies]
android-manifest = "*"

自行创建 AndroidManifest.xml

let manifest = AndroidManifest {
    package: "com.example.toggletest".to_string(),
    version_code: Some(1),
    version_name: Some("1.0".to_string()),
    application: Application {
        allow_backup: Some(true.into())),
        icon: Some(MipmapOrDrawableResource::mipmap("ic_launcher", None)),
        label: Some(StringResourceOrString::resource("app_name", None)),
        theme: Some(StyleResource::new("AppTheme", None)),
        activity: vec![Activity {
            label: Some(StringResourceOrString::resource("app_name", None)),
            name: "com.example.toggletest.MainActivity".to_string(),
            intent_filter: vec![IntentFilter {
                action: vec![Action {
                    name: Some("android.intent.action.MAIN".to_string()),
                }],
                category: vec![Category {
                    name: Some("android.intent.category.LAUNCHER".to_string()),
                }],
                ..Default::default()
            }],
            ..Default::default()
        }],
        ..Default::default()
    },
    ..Default::default()
};
let serialized_manifest = android_manifest::to_string_pretty(&manifest).unwrap();

或解析任何 AndroidManifest.xml 文件

let xml = r#"
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.toggletest"
          android:versionCode="1"
          android:versionName="1.0">
    <application android:allowBackup="true"
               android:icon="@drawable/ic_launcher"
               android:label="@string/app_name"
               android:theme="@style/AppTheme">
        <activity android:label="@string/app_name"
                  android:name="com.example.toggletest.MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>"#;
let manifest: AndroidManifest = android_manifest::from_str(xml).unwrap();

许可证

本项目采用 Apache License,Version 2.0 许可,(LICENSEhttp://www.apache.org/licenses/LICENSE-2.0)。

贡献

除非您明确声明,否则您有意提交给 toml-rs 的任何贡献,根据 Apache-2.0 许可证定义,应按上述方式双重许可,不附加任何额外条款或条件。

依赖项

~0.8–1.4MB
~31K SLoC