Compare commits

..

2 commits

Author SHA1 Message Date
c7ea76f2e1 support magisk 27001 or other lower version
fix bug to support magisk 27001 or other lower version (in this version, install module will notice This zip is not a Magisk module)
2025-09-29 07:45:09 +02:00
a0f23df41f 更新 app/magisk/customize.sh
fix bug
2025-09-29 07:40:32 +02:00
6 changed files with 44 additions and 81 deletions

View file

@ -2,8 +2,6 @@ on:
push:
branches:
- '*'
tags:
- '*'
jobs:
build-debug:

View file

@ -18,30 +18,17 @@ There are two variants of this project, OpenEUICC and EasyEUICC:
[^2]: Carrier Partner API unimplemented yet
Some side notes:
1. When privileged, OpenEUICC supports any eUICC chip that implements the SGP.22 standard, internal or external. However, there is __no guarantee__ that external (removable) eSIMs actually follow the standard. Please __DO NOT__ submit bug reports for non-functioning removable eSIMs. They are __NOT__ officially supported unless they also support / are supported by EasyEUICC, the unprivileged variant.
2. Both variants support accessing eUICC chips through USB CCID readers, regardless of whether the chip contains the correct ARA-M hash to allow for unprivileged access. However, only `T=0` readers that use the standard [USB CCID protocol](https://en.wikipedia.org/wiki/CCID_(protocol)) are supported.
3. Prebuilt release-mode EasyEUICC apks can be downloaded [here](https://gitea.angry.im/PeterCxy/OpenEUICC/releases). For OpenEUICC, no official release is currently provided and only debug mode APKs and Magisk modules can be found in the [CI page](https://gitea.angry.im/PeterCxy/OpenEUICC/actions).
4. For removable eSIM chip vendors: to have your chip supported by official builds of EasyEUICC when inserted, include the ARA-M hash `2A2FA878BC7C3354C2CF82935A5945A3EDAE4AFA`.
1. When privileged, OpenEUICC supports any eUICC chip that implements the [SGP.22] standard, internal or external.
However, there is **no guarantee** that external (removable) eSIMs actually follow the standard.
Please **DO NOT** submit bug reports for non-functioning removable eSIMs.
They are **NOT** officially supported unless they also support / are supported by EasyEUICC, the unprivileged variant.
2. Both variants support accessing eUICC chips through USB CCID readers,
regardless of whether the chip contains the correct ARA-M hash to allow for unprivileged access.
However, only `T=0` readers that use the standard [USB CCID protocol][usb-ccid] are supported.
3. Prebuilt release-mode EasyEUICC apks can be downloaded [here][releases].
For OpenEUICC, no official release is currently provided and only debug mode APKs and Magisk modules can be found in the [CI page][actions].
4. For removable eSIM chip vendors: to have your chip supported by official builds of EasyEUICC when inserted,
include the ARA-M hash `2A2FA878BC7C3354C2CF82935A5945A3EDAE4AFA`.
__This project is Free Software licensed under GNU GPL v3, WITHOUT the "or later" clause.__ Any modification and derivative work __MUST__ be released under the SAME license, which means, at the very least, that the source code __MUST__ be available upon request.
[sgp.22]: https://www.gsma.com/solutions-and-impact/technologies/esim/gsma_resources/sgp-22-v2-2-2/ "SGP.22 v2.2.2"
[usb-ccid]: https://en.wikipedia.org/wiki/CCID_%28protocol%29 "USB CCID Protocol"
[releases]: https://gitea.angry.im/PeterCxy/OpenEUICC/releases "EasyEUICC Releases"
[actions]: https://gitea.angry.im/PeterCxy/OpenEUICC/actions "OpenEUICC Actions"
__If you are releasing a modification of this app, you are kindly asked to make changes to at least the app name and package name.__
**This project is Free Software licensed under GNU GPL v3, WITHOUT the "or later" clause.**
Any modification and derivative work **MUST** be released under the SAME license, which means, at the very least, that the source code **MUST** be available upon request.
**If you are releasing a modification of this app, you are kindly asked to make changes to at least the app name and package name.**
# Building (Gradle)
Building (Gradle)
===
Make sure you have all submodules cloned and updated by running
@ -74,7 +61,8 @@ For EasyEUICC:
./gradlew :app-unpriv:assembleRelease
```
# Building (AOSP)
Building (AOSP)
===
There are two ways to include OpenEUICC in your AOSP-based system image:
@ -84,22 +72,22 @@ There are two ways to include OpenEUICC in your AOSP-based system image:
- Compilation of this project is **only** tested against the latest AOSP release version. The app itself should be compatible with older AOSP versions, but the source may not compile against an older AOSP source tree.
2. If compilation against AOSP source tree is not possible, consider [building with gradle](#building-gradle) and import the apk as a prebuilt.
- No official `Android.bp` is provided for this case but it should be straightforward to write.
- You might want to include [`privapp_whitelist_im.angry.openeuicc.xml`] as well.
- You might want to include `privapp_whitelist_im.angry.openeuicc.xml` as well.
[`privapp_whitelist_im.angry.openeuicc.xml`]: privapp_whitelist_im.angry.openeuicc.xml "OpenEUICC Privapp Whitelist"
FAQs
===
# FAQs
- Q: Do you provide prebuilt binaries for OpenEUICC?
- A: Debug-mode APKs and Magisk modules are available continuously as an artifact of the [Actions](https://gitea.angry.im/PeterCxy/OpenEUICC/actions) CI used by this project. However, these debug-mode APKs are **not** intended for inclusion inside system images, nor are they supported by the developer in any sense. If you are a custom ROM developer, either include the entire OpenEUICC repository in your AOSP source tree, or generate an APK using `gradle` and import that as a prebuilt system app. Note that you might want `privapp_whitelist_im.angry.openeuicc.xml` as well.
- Q: Do you provide prebuilt binaries for OpenEUICC? \
A: Debug-mode APKs and Magisk modules are available continuously as an artifact of the [Actions] CI used by this project. However, these debug-mode APKs are **not** intended for inclusion inside system images, nor are they supported by the developer in any sense. If you are a custom ROM developer, either include the entire OpenEUICC repository in your AOSP source tree, or generate an APK using `gradle` and import that as a prebuilt system app. Note that you might want [`privapp_whitelist_im.angry.openeuicc.xml`] as well.
- Q: Can EasyEUICC manage my phone's internal eSIM?
- A: No. For EasyEUICC to work, the eSIM chip MUST proactively grant access via its ARA-M field.
- Q: Can EasyEUICC manage my phone's internal eSIM? \
A: No. For EasyEUICC to work, the eSIM chip MUST proactively grant access via its ARA-M field.
- Q: Removable eSIMs? Are they a joke?
- A: No, even though the name "removable embedded SIM" can sound like an oxymoron. In fact, there can be many advantages to these chips compared to fully embedded ones. For example, the ability to transfer eSIM profiles without carrier support or approval, or the ability to use eSIM on devices that do not and may never get the support, such as Wi-Fi hotspots.
- Q: Removable eSIMs? Are they a joke? \
A: No, even though the name "removable embedded SIM" can sound like an oxymoron. In fact, there can be many advantages to these chips compared to fully embedded ones. For example, the ability to transfer eSIM profiles without carrier support or approval, or the ability to use eSIM on devices that do not and may never get the support, such as Wi-Fi hotspots.
# Copyright
Copyright
===
Everything except `libs/lpac-jni` and `art/`:
@ -139,4 +127,4 @@ License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
```
`art/`: Courtesy of [Aikoyori](https://github.com/Aikoyori), CC NC-SA 4.0.
`art/`: Courtesy of [Aikoyori](https://github.com/Aikoyori), CC NC-SA 4.0.

View file

@ -43,10 +43,6 @@ enum class SimplifiedErrorMessages(
R.string.download_wizard_error_profile_unreleased,
R.string.download_wizard_error_suggest_contact_reissue
),
UnavailableProfile(
R.string.download_wizard_error_profile_unavailable,
R.string.download_wizard_error_suggest_contact_carrier
),
MatchingIDRefused(
R.string.download_wizard_error_matching_id_refused,
R.string.download_wizard_error_suggest_contact_carrier
@ -86,39 +82,21 @@ enum class SimplifiedErrorMessages(
companion object {
private val httpErrors = buildMap {
// @formatter:off
// Stage: InitiateAuthentication
put("8.8.1" to "3.8", UnknownHost) // Invalid SM-DP+ Address.
put("8.8.2" to "3.1", UnsupportedProfile) // None of the proposed Public Key Identifiers is supported by the SM-DP+.
put("8.8.3" to "3.1", UnsupportedProfile) // The SVN indicated by the eUICC is not supported by the SM-DP+.
put("8.8.4" to "3.7", UnsupportedProfile) // The SM-DP+ has no CERT.DPAuth.ECDSA signed by one of the GSMA CI Public Key supported by the eUICC.
// Stage: AuthenticateClient
put("8.1" to "4.8", InsufficientMemory) // eUICC does not have sufficient space for this Profile.
put("8.1.1" to "2.1", EIDNotSupported) // eUICC does not support the EID.
put("8.1.1" to "3.8", EIDMismatch) // EID doesn't match the expected value.
put("8.1.2" to "6.1", UnsupportedProfile) // EUM Certificate is invalid.
put("8.1.2" to "6.3", UnsupportedProfile) // EUM Certificate has expired.
put("8.1.3" to "6.1", UnsupportedProfile) // eUICC Certificate is invalid.
put("8.1.3" to "6.3", UnsupportedProfile) // eUICC Certificate has expired.
put("8.2" to "1.2", UnreleasedProfile) // Profile has not yet been released.
put("8.2.5" to "4.3", UnavailableProfile) // No eligible Profile for this eUICC/Device.
put("8.2.6" to "3.8", MatchingIDRefused) // MatchingID (AC_Token or EventID) is refused.
put("8.8" to "4.2", EIDNotSupported) // eUICC is not supported by the SM-DP+.
put("8.8.5" to "6.4", ProfileRetriesExceeded) // The maximum number of retries for the Profile download order has been exceeded.
put("8.10.1" to "3.9", UnsupportedProfile) // The RSP session identified by the TransactionID is unknown.
put("8.11.1" to "3.9", UnsupportedProfile) // Unknown CI Public Key.
put("8.1" to "4.8", InsufficientMemory)
put("8.1.1" to "2.1", EIDNotSupported)
put("8.1.1" to "3.8", EIDMismatch)
put("8.2" to "1.2", UnreleasedProfile)
put("8.2.6" to "3.8", MatchingIDRefused)
put("8.8.5" to "6.4", ProfileRetriesExceeded)
// Stage: GetBoundProfilePackage
put("8.2" to "3.7", UnavailableProfile) // BPP is not available for a new binding.
put("8.2.7" to "2.2", ConfirmationCodeMissing) // Confirmation Code is missing.
put("8.2.7" to "3.8", ConfirmationCodeRefused) // Confirmation Code is refused.
put("8.2.7" to "6.4", ConfirmationCodeRetriesExceeded) // The maximum number of retries for the Confirmation Code has been exceeded.
put("8.2.7" to "2.2", ConfirmationCodeMissing)
put("8.2.7" to "3.8", ConfirmationCodeRefused)
put("8.2.7" to "6.4", ConfirmationCodeRetriesExceeded)
// Stage: AuthenticateClient, GetBoundProfilePackage
put("8.1" to "6.1", UnsupportedProfile) // eUICC Signature is invalid.
put("8.8.5" to "4.10", ProfileExpired) // The Download order has expired.
// @formatter:on
put("8.8.5" to "4.10", ProfileExpired)
}
fun fromDownloadError(exc: LocalProfileAssistant.ProfileDownloadException) = when {

View file

@ -166,33 +166,33 @@
<string name="pref_notifications">通知</string>
<string name="pref_notifications_desc">eSIM のプロファイル操作により、通信事業者に通知が送信されます。必要に応じてこの動作を微調整できます。</string>
<string name="pref_notifications_download">ダウンロード</string>
<string name="pref_notifications_download_desc">プロファイルを<i>ダウンロード中</i>の通知を送信します</string>
<string name="pref_notifications_download_desc">プロファイルを<i>ダウンロード中</i>の通知を送信します</string>
<string name="pref_notifications_delete">削除</string>
<string name="pref_notifications_delete_desc">プロファイルを<i>削除中</i>の通知を送信します</string>
<string name="pref_notifications_delete_desc">プロファイルを<i>削除中</i>の通知を送信します</string>
<string name="pref_notifications_switch">切り替え中</string>
<string name="pref_notifications_switch_desc">プロファイルを<i>切り替え中</i>の通知を送信します\nこのタイプの通知は信頼できないことに注意してください。</string>
<string name="pref_notifications_switch_desc">プロファイルを<i>切り替え中</i>の通知を送信します\nこのタイプの通知は信頼できないことに注意してください。</string>
<string name="pref_advanced">高度な設定</string>
<string name="pref_advanced_disable_safeguard_removable_esim">プロファイルの無効化と削除を許可</string>
<string name="pref_advanced_disable_safeguard_removable_esim_desc">デフォルトでは、このアプリでデバイスに挿入されたリムーバブル eSIM の有効なプロファイルを無効化することを防いでいます。なぜなのかというと<i>時々</i>アクセスができなくなるからです。\nこのチェックボックスを ON にすることで、この保護機能を<i>解除</i>します。</string>
<string name="pref_advanced_verbose_logging">詳細ログ</string>
<string name="pref_advanced_verbose_logging_desc">詳細ログを有効化します。これには個人的な情報が含まれている可能性があります。この機能を ON にした後は、信頼できるユーザーとのみログを共有してください。</string>
<string name="pref_advanced_language">言語</string>
<string name="pref_advanced_language_desc">アプリの言語を設定します。</string>
<string name="pref_advanced_language_desc">アプリの言語</string>
<string name="pref_advanced_logs">ログ</string>
<string name="pref_advanced_logs_desc">アプリの最新デバッグログを表示します</string>
<string name="pref_advanced_logs_desc">アプリの最新デバッグログを表示します</string>
<string name="pref_developer">開発者オプション</string>
<string name="pref_developer_refresh_after_switch">モデムに更新コマンドを送信</string>
<string name="pref_developer_refresh_after_switch_desc">プロファイルを切り替えた後にモデムに更新コマンドを送信するかどうかを設定します。クラッシュが発生する場合は、この機能を無効化してください。</string>
<string name="pref_developer_unfiltered_profile_list">未フィルタリングのプロファイルリストを表示</string>
<string name="pref_developer_unfiltered_profile_list_desc">非運用のプロファイルも含めるようにします</string>
<string name="pref_developer_unfiltered_profile_list">フィルタリングされていないプロファイル一覧を表示</string>
<string name="pref_developer_unfiltered_profile_list_desc">非運用のプロファイルも含めます</string>
<string name="pref_developer_ignore_tls_certificate">SM-DP+ TLS 証明書を無視する</string>
<string name="pref_developer_ignore_tls_certificate_desc">RSP サーバーで使用される TLS 証明書を受け入れます</string>
<string name="pref_developer_ignore_tls_certificate_desc">RSP サーバーで使用される TLS 証明書を受け入れます</string>
<string name="pref_developer_euicc_memory_reset">eUICC の消去を許可</string>
<string name="pref_developer_euicc_memory_reset_desc">これは危険な操作であり、デフォルトでは非表示になっています。代わりとしてすべてのプロファイルを手動で削除することもできます。</string>
<string name="pref_developer_es10x_mss_desc">グローバル ES10x MSS を設定します。</string>
<string name="pref_developer_es10x_mss_desc">グローバル ES10x MSS</string>
<string-array name="pref_developer_es10x_entry_keys">
<item>効率</item>
<item>高い互換性</item>
<item></item>
<item>互換モード</item>
</string-array>
<string name="pref_developer_isdr_aid_list">ISD-R AID リストをカスタマイズ</string>
<string name="pref_developer_isdr_aid_list_desc">一部ブランドのリムーバブル eUICC は独自の非標準な ISD-R AID を使用しているため、サードパーティー製アプリからアクセスできない場合があります。このリストに追加された非標準な AID の使用を試みますが、動作の保証はできません。</string>

View file

@ -111,7 +111,6 @@
<string name="download_wizard_error_eid_not_supported">The EID of your device or eSIM chip is unsupported by your carrier.</string>
<string name="download_wizard_error_eid_mismatch">This eSIM profile has been downloaded on another device.</string>
<string name="download_wizard_error_profile_unreleased">This eSIM profile has been revoked.</string>
<string name="download_wizard_error_profile_unavailable">This eSIM profile has been unavailable.</string>
<string name="download_wizard_error_matching_id_refused">The activation code is invalid.</string>
<string name="download_wizard_error_profile_retries_exceeded">The maximum number of download attempts for the eSIM profile has been exceeded.</string>
<string name="download_wizard_error_confirmation_code_missing">Confirmation code is required to download this profile.</string>

View file

@ -9,7 +9,7 @@
<string name="slot_mapping_logical_slot">論理スロット %d:</string>
<string name="slot_mapping_port">スロット %1$d ポート %2$d</string>
<string name="slot_mapping_help">使用しているデバイスは、%1$d 個の論理 SIM スロットと %2$d 個の物理 SIM スロットがあります。%3$s\n\n各論理スロットに対応する物理スロットまたはポートを選択してください。すべてのマッピングモードがハードウェアでサポートされているわけではないことにご注意ください。</string>
<string name="slot_mapping_help_mep">\n\n物理スロット %1$d は、複数の有効なプロファイル (MEP) をサポートしています。この機能を使用するには、%2$d の仮想ポートを上記の異なる論理スロットに割り当てます。\n\nMEP を有効化すると、ポートは共有プロファイルのリストを除いて OpenEUICC の個別の eSIM スロットのように動作します。</string>
<string name="slot_mapping_help_mep">\n\n物理スロット %1$d は、複数の有効なプロファイル (MEP) をサポートしています。この機能を使用するには、%2$d の仮想ポートを上記の異なる論理スロットに割り当てます。\n\nMEP を有効化すると、ポートは共有プロファイルの一覧を除いて OpenEUICC の個別の eSIM スロットのように動作します。</string>
<string name="slot_mapping_help_dsds">\nデュアル SIM モードはサポートされていますが、無効化されています。デバイスに内部 eSIM チップが搭載されている場合は、デフォルトで有効化されていない可能性があります。上記のマッピングを変更するか、デュアル SIM を有効化して eSIM にアクセスしてください。</string>
<string name="slot_mapping_completed">新しいスロットマッピングが設定されました。モデムがスロットを更新するまでお待ちください。</string>
<string name="slot_mapping_failure">指定されたマッピングが無効化されているか、ハードウェアがサポートをしていない可能性があります。</string>