Skip to content

Commit

Permalink
Merge pull request #41 from david082321/patch-1
Browse files Browse the repository at this point in the history
繁体中文修正
  • Loading branch information
RikkaW authored Jul 21, 2019
2 parents 6ec0946 + 8f1bb09 commit ad9491b
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 18 deletions.
12 changes: 6 additions & 6 deletions docs/zh-hant/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# 簡介

Shizuku 可以幫助普通應用藉助一個由 app_process 啟動的 Java 程序直接以 adb 或 root 特權使用系統 API。
Shizuku 可以幫助普通程式藉助一個由 app_process 啟動的 Java 程序直接以 adb 或 root 特權使用系統 API。

Shizuku 這個名字來自[這裡](https://www.pixiv.net/member_illust.php?mode=medium&illust_id=75586127)

Expand All @@ -9,28 +9,28 @@ Shizuku 這個名字來自[這裡](https://www.pixiv.net/member_illust.php?mode=
Shizuku 的誕生主要有兩大目的:

1. 提供一個方便地使用系統 API 的方式
2. 為部分只需要 adb 許可權的應用開發提供便利
2. 為部分只需要 adb 許可權的程式開發提供便利

## Shizuku 與「傳統」做法對比

### 「傳統」做法

以啟用/禁用元件為例,一些需要 root 許可權的應用直接在 `su` 中執行 `pm disable`
以啟用/停用元件為例,一些需要 root 許可權的程式直接在 `su` 中執行 `pm disable`

1. 執行 `su`
2. 執行 `pm disable`
3. (pre-Pie) 使用 app_process 啟動 Java 程序([參見此處](https://android.googlesource.com/platform/frameworks/base/+/oreo-release/cmds/pm/pm)
4. (Pie+) 執行原生程式 `cmd`[參見此處](https://android.googlesource.com/platform/frameworks/native/+/pie-release/cmds/cmd/)
5. 處理引數,通過 binder 與 system server 互動,處理結果輸出文字結果

其中每個「執行」都意味著新程序建立,su 內部使用 socket 與 su daemon 互動,大量的時間和效能被消耗在這樣的過程中。(部分設計不佳的應用甚至會每次執行指令都執行一次 `su`
其中每個「執行」都意味著新程序建立,su 內部使用 socket 與 su daemon 互動,這樣的過程中消耗大量的時間和效能。(部分設計不佳的程式甚至會每次執行指令都執行一次 `su`

此類做法的缺點在於:

1. **極慢**
2. 需要處理文字來獲取結果
3. 功能受制於可用的指令
4. 即使 adb 有足夠許可權,應用也需要 root 許可權才可使用
4. 即使 adb 有足夠許可權,程式也需要 root 許可權才可使用

### Shizuku 做法

Expand All @@ -42,4 +42,4 @@ Shizuku app 會引導使用者使用 root 或是 adb 方式執行一個程序(
Shizuku 的優點在於:

1. 極小額外時間及效能消耗
2. 與直接呼叫 API 體驗幾乎一致(應用開發者只許新增少量程式碼
2. 與直接呼叫 API 體驗幾乎一致(程式開發者只許新增少量程式碼
4 changes: 2 additions & 2 deletions docs/zh-hant/apps.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
---
<img src="https://lh3.googleusercontent.com/WVOkVE75b9rby23ADx509k-X5zADbv_LMQASrzrxySUkPLDGjumqT9vIm0PygYxavZo" title="AppOps" width="24" align="top"/> NoPopping

根據當前應用自動切換勿擾模式(並關閉彈出通知)。
根據目前程式自動切換勿擾模式(並關閉彈出通知)。

NoPopping 使用 Shizuku 來避免使用無障礙服務。

Expand All @@ -28,4 +28,4 @@ NoPopping 使用 Shizuku 來避免使用無障礙服務。

Shizuku 是冰箱的一個免 root 工作模式。

下載:[Google Play](https://play.google.com/store/apps/details?id=com.catchingnow.icebox) / [Coolapk](https://coolapk.com/apk/com.catchingnow.icebox)
下載:[Google Play](https://play.google.com/store/apps/details?id=com.catchingnow.icebox) / [Coolapk](https://coolapk.com/apk/com.catchingnow.icebox)
14 changes: 7 additions & 7 deletions docs/zh-hant/dev.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

後面需要用到的許可權宣告包含在依賴中,不需要手動新增。

2. 獲取 binder
2. 取得 binder

在你的 AndroidManifest.xml 中加入

Expand All @@ -28,17 +28,17 @@
android:permission="android.permission.INTERACT_ACROSS_USERS_FULL" />
```

當使用者應用程序啟動時,Shizuku v3 服務使用該 Provider 傳送 binder 給應用
當使用者應用程序啟動時,Shizuku v3 服務使用該 Provider 傳送 binder 給程式

通常,當進入你自己的 Activity 時,該 provider 中的程式碼應該已被執行(即已經收到 binder),但還是建議你實現一個簡單的等待邏輯,詳細參考 sample。

3. 授權

在使用收到的 binder 之前先需要確認自身許可權。

對 API 23 及以上,直接使用了[執行時許可權機制](https://developer.android.com/distribute/best-practices/develop/runtime-permissions)只需要保證先獲取 `moe.shizuku.manager.permission.API_V23` 許可權即可。
對 API 23 及以上,直接使用了[執行時許可權機制](https://developer.android.com/distribute/best-practices/develop/runtime-permissions)只需要保證先取得 `moe.shizuku.manager.permission.API_V23` 許可權即可。

對 API 23 以下,需要啟動 Shizuku app 獲取 token,具體流程請參考 sample。
對 API 23 以下,需要啟動 Shizuku app 取得 token,具體流程請參考 sample。

4. 使用:binder transact(使用 `ShizukuBinderWrapper`

Expand Down Expand Up @@ -77,9 +77,9 @@

目前執行在 root 下的 Shizuku 會將 context 設為與 adb shell 相同(`u:r:shell:s0`)。

4. 多程序應用
4. 多程序程式

對於多程序的應用,請在使用 Shizuku 前執行 `ShizukuMultiProcessHelper#initialize` 來從 `ShizukuBinderReceiveProvider` 所在程序獲取 binder。另外由於 `ShizukuBinderReceiveProvider` 需要被其他程序啟動,建議將 `ShizukuBinderReceiveProvider` 所在程序(`android:process`指定為與你的應用中最長時間執行的程序的相同
對於多程序的程式,請在使用 Shizuku 前執行 `ShizukuMultiProcessHelper#initialize` 來從 `ShizukuBinderReceiveProvider` 所在程序取得 binder。另外由於 `ShizukuBinderReceiveProvider` 需要被其他程序啟動,建議將 `ShizukuBinderReceiveProvider` 所在程序(`android:process`指定為與你的程式中最長時間執行的程序的相同

5. Android 8.0 & adb

Expand All @@ -91,4 +91,4 @@

* 不同 Android 版本下 API 可能不同,請務必仔細檢查。此外,`android.app.IActivityManager` 在 API 26 及以後才存在 aidl 形式, `android.app.IActivityManager$Stub` 只在 API 26 以上存在。

* `SystemServiceHelper.getTransactionCode` 可能不能獲得正確的 transaction code,比如在 API 25 上不存在 `android.content.pm.IPackageManager$Stub.TRANSACTION_getInstalledPackages` 而存在 `android.content.pm.IPackageManager$Stub.TRANSACTION_getInstalledPackages_47`(這種情況已處理,但不排除還可能有其他情況)。使用 `ShizukuBinderWrapper` 方式不會遇到此問題。
* `SystemServiceHelper.getTransactionCode` 可能不能取得正確的 transaction code,比如在 API 25 上不存在 `android.content.pm.IPackageManager$Stub.TRANSACTION_getInstalledPackages` 而存在 `android.content.pm.IPackageManager$Stub.TRANSACTION_getInstalledPackages_47`(這種情況已處理,但不排除還可能有其他情況)。使用 `ShizukuBinderWrapper` 方式不會遇到此問題。
6 changes: 3 additions & 3 deletions docs/zh-hant/setup.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,15 @@

## 裝置已 root

對於已 root 裝置,直接在 Shizuku 應用啟動即可
對於已 root 裝置,直接在 Shizuku 程式啟動即可

## 裝置未 root

對於未 root 裝置,需要藉助 adb 啟動。使用 adb 並不困難,請閱讀下面的教程。

### 1. 什麼是 `adb`

Android 除錯橋 (`adb`) 是一個通用命令列工具,其允許您與模擬器例項或連線的 Android 裝置進行通訊。它可為各種裝置操作提供便利,如安裝和除錯應用,並提供對 Unix shell(可用來在模擬器或連線的裝置上執行各種命令)的訪問
Android 除錯橋 (`adb`) 是一個通用命令列工具,其允許您與模擬器例項或連線的 Android 裝置進行通訊。它可為各種裝置操作提供便利,如安裝和除錯程式,並提供對 Unix shell(可用來在模擬器或連線的裝置上執行各種命令)的存取

更多資訊請檢視 [Android Developer](https://developer.android.com/studio/command-line/adb)

Expand Down Expand Up @@ -80,4 +80,4 @@ Android 除錯橋 (`adb`) 是一個通用命令列工具,其允許您與模擬

#### 5.1. Huawei 裝置

在「開發者選項」中開啟「僅充電模式下允許 ADB 除錯選項」。
在「開發者選項」中開啟「僅充電模式下允許 ADB 除錯選項」。

0 comments on commit ad9491b

Please sign in to comment.