{"id":26585149,"url":"https://github.com/mzdk100/droid-wrap","last_synced_at":"2025-03-23T10:30:58.316Z","repository":{"id":252187610,"uuid":"839681327","full_name":"mzdk100/droid-wrap","owner":"mzdk100","description":"用于Rust的Android API的高级封装","archived":false,"fork":false,"pushed_at":"2025-02-26T09:03:36.000Z","size":541,"stargazers_count":9,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-26T09:35:25.256Z","etag":null,"topics":["android","api","jni","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mzdk100.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-08T05:46:37.000Z","updated_at":"2025-02-26T09:03:39.000Z","dependencies_parsed_at":"2024-08-08T08:04:19.069Z","dependency_job_id":"6e09a1cd-bf9e-4845-850f-2d1179ed5a5f","html_url":"https://github.com/mzdk100/droid-wrap","commit_stats":null,"previous_names":["mzdk100/droid-wrap"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mzdk100%2Fdroid-wrap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mzdk100%2Fdroid-wrap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mzdk100%2Fdroid-wrap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mzdk100%2Fdroid-wrap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mzdk100","download_url":"https://codeload.github.com/mzdk100/droid-wrap/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245090410,"owners_count":20559291,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","api","jni","rust"],"created_at":"2025-03-23T10:30:57.372Z","updated_at":"2025-03-23T10:30:57.936Z","avatar_url":"https://github.com/mzdk100.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 用于Rust的Android API的高级封装\n\n[GitCode](https://gitcode.com/mzdk100/droid-wrap.git)\n[GitHub](https://github.com/mzdk100/droid-wrap)\n[crates.io](https://crates.io/crates/droid-wrap)\n[docs.rs](https://docs.rs/droid-wrap/latest/droid_wrap/)\n\n## 介绍\n\n这个箱子提供对Android API的高级封装，依赖于jni-rs库，这包括以下内容：\n\n1. 消除函数调用时的unsafe；\n2. 本地化类型，例如把java原始类型boolean转换到rust的基本类型bool；\n3. 规范命名规则，例如把以小写开头字母的驼峰命名式的函数统一为下划线命名法；\n4. 添加必要的官方说明，以便于随时查阅；\n5. 实现内存自动管理；\n6. 简化调用，让代码更整洁。\n\n当您如果在尝试封装类似的功能函数时，请优先考虑上述规则。\n\n## 特点\n\n- Java 动态代理，使用Rust函数实现java接口的方法；\n- 提供常用的Android API；\n- API调用符合rust代码规范；\n- 拥有完整的测试，覆盖每个函数调用；\n- 构建和使用简单；\n- 多线程安全。\n\n## 使用\n\n1. 环境配置\n   在使用之前需要确保配置Android SDK和Java环境。\n    - ANDROID_HOME： 指向Android SDK的根目录路径。\n    - ANDROID_BUILD_TOOLS_VERSION： 例如\"35.0.0\"。\n    - ANDROID_API_LEVEL： 例如35。\n    - JAVA_HOME： 指向jre或者jdk的根目录路径。\n      注意：我们不使用javac来编译生成java字节码，所以无须使用完整的JDK环境，仅使用JRE（Java 运行时）即可。\n2. 安装apk打包工具\n   ```shell\n   cargo install cargo-apk2\n   ```\n3. 运行示例\n   ```shell\n   git clone https://gitcode.net/mzdk100/droid-wrap.git\n   cd droid-wrap\n   cargo apk2 run -p droid-wrap-example --example activity-example\n   cargo apk2 run -p droid-wrap-example --example java-example\n   ```\n4. 运行测试\n   ```shell\n   cargo apk2 run -p droid-wrap-test --all-features\n   ```\n\n如需了解更多信息，请查看example目录中的代码示例。\n\n### 关于构建工具\n\n[cargo-apk2](https://github.com/mzdk100/cargo-apk2)是一个更加轻量级的安卓apk打包工具，他从已经弃用的[cargo-apk](https://github.com/rust-mobile/cargo-apk)fork而来，cargo-apk2将持续维护，可放心使用。\n同时本项目中提供了一个[cargo-aapt2](aapt2/README.md)的cargo扩展程序，如果您对打包apk有更高的需求，可以使用此扩展。\n\n\n## 分类\n\n这些功能函数的分类使用条件编译的方式被链接到程序中。使用时，请将这个箱子作为可选依赖项，并指定相关的feature，这是防止编译不必要的代码从而让程序体积的不断膨胀。\n\n## 安卓(android)\n\n### 安卓应用(android_app)\n\n提供Activity类的常用API。\n\n### 安卓内容(android_content)\n\n1. android.content.Context;\n2. android.content.ContextWrapper;\n3. android.content.Intent。;\n4. android.content.ComponentName;\n5. android.content.ComponentName_WithComponentName;\n\n### 安卓硬件(android_hardware)\n\n1. android.hardware.Camera;\n2. android.hardware.vibrator.Effect;\n3. android.hardware.vibrator.EffectStrength;\n\n### 安卓系统(android_os)\n\n1. android.os.Bundle;\n2. android.os.VibrationEffect;\n3. android.os.Vibrator;\n4. android.os.VibratorManager;\n5. android.os.Build;\n6. android.os.SystemProperties;\n7. android.os.Build_VERSION_CODES;\n8. android.os.Build_VERSION;\n9. android.os.SystemProperties_Handle;\n\n### 安卓内容提供者(android_provider)\n\n1. android.provider.Settings;\n\n### 安卓语音(android_speech)\n\nandroid.speech.tts.TextToSpeech的API等。\n\n### 安卓文本(android_text)\n\n已经实现下列接口：\n\n1. android.text.Editable;\n2. android.text.InputType;\n3. android.text.TextWatcher;\n\n### 安卓视图(android_view)\n\nandroid.view.View的API等（包括点击监听器的实现）。\n\n1. android.view.View;\n2. android.view.ViewGroup;\n3. android.view.View_OnClickListener;\n4. android.view.ViewGroup_LayoutParams;\n5. android.view.ViewGroup_MarginLayoutParams;\n6. android.view.ViewManager;\n7. android.view.WindowManager;\n8. android.view.Display;\n9. android.view.inputmethod.InputMethodManager;\n10. android.view.KeyEvent;\n11. android.view.InputEvent;\n12. android.view.inputmethod.EditorInfo;\n13. android.view.View_OnLongClickListener;\n14. android.view.ViewParent;\n15. android.view.View_OnKeyListener;\n16. android.view.Window;\n17. android.view.ContextThemeWrapper;\n18. android.view.SurfaceHolder;\n19. android.view.Surface;\n\n### 安卓小部件(android_widget)\n\n常用的一些UI小部件：\n\n1. android.widget.TextView;\n2. android.widget.EditText;\n3. android.widget.Button;\n4. android.widget.LinearLayout;\n5. android.widget.LinearLayout_LayoutParams;\n6. android.widget.TextView_OnEditorActionListener;\n\n## java功能(java)\n\n### javaIO操作(java_io)\n\n实现了java.io.File等。\n\n1. java.io.File;\n2. java.io.Serializable;\n\n### java语言内置(java_lang)\n\n实现了java.lang.String,java.lang.Integer等类型。\n\n1. java.lang.Boolean;\n2. java.lang.Float;\n3. java.lang.Object;\n4. java.lang.String;\n5. java.lang.Integer;\n6. java.lang.CharSequence;\n7. java.lang.Runnable;\n8. java.lang.System;\n9. java.lang.reflect.Executable;\n10. java.lang.Comparable;\n\n### java缓冲区(java_nio)\n\n实现了java.nio.ByteBuffer等类型。\n\n1. java.nio.ByteBuffer;\n2. java.nio.file.Path;","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmzdk100%2Fdroid-wrap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmzdk100%2Fdroid-wrap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmzdk100%2Fdroid-wrap/lists"}