Skip to content
This repository has been archived by the owner on Jun 2, 2024. It is now read-only.

Commit

Permalink
v3.0.0 の最終修正
Browse files Browse the repository at this point in the history
  • Loading branch information
s1204IT committed Feb 2, 2024
1 parent 4695fd6 commit e0b5b1b
Show file tree
Hide file tree
Showing 8 changed files with 116 additions and 60 deletions.
34 changes: 26 additions & 8 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ jobs:
build:
name: Build
runs-on: ubuntu-latest
permissions:
contents: write
steps:

- name: Checkout
Expand All @@ -31,7 +33,7 @@ jobs:
java-version: '8'

- name: Cache
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: |
~/.gradle/caches/
Expand All @@ -42,28 +44,44 @@ jobs:
run: |
./gradlew aR --no-daemon
cp -f app/build/outputs/apk/release/app-release.apk docs/open/TouchSetupLogin.apk
echo "version=$(grep versionName app/build.gradle | awk '{print $2}' | tr -d \")" >> $GITHUB_ENV
echo "commit=$(echo ${{ github.sha }} | cut -c-7)" >> $GITHUB_ENV
{
echo "version=v$(grep versionName app/build.gradle | awk '{print $2}' | tr -d \")"
echo "commit=$(echo ${{ github.sha }} | cut -c-7)"
} >> $GITHUB_ENV
- name: Upload APK
uses: actions/upload-artifact@v4
with:
name: NovaDirectInstaller(v${{ env.version }}@${{ env.commit }})
name: NovaDirectInstaller(${{ env.version }}@${{ env.commit }})
path: app/build/outputs/apk/release/app-release.apk

- name: Push APK
- name: Import GPG key
uses: crazy-max/ghaction-import-gpg@v6
if: github.event.inputs.release == 'true'
with:
gpg_private_key: ${{ secrets.GPG_KEY }}
passphrase: ${{ secrets.GPG_PASS }}
fingerprint: ${{ vars.GPG_FINGERPRINT }}
trust_level: 5
git_user_signingkey: true
git_commit_gpgsign: true

- name: Push APK
uses: stefanzweifel/git-auto-commit-action@v5
if: github.event.inputs.release == 'true'
with:
commit_message: v${{ env.version }}
commit_message: ${{ env.version }}
commit_user_name: ${{ vars.COMMITTER_NAME }}
commit_user_email: ${{ vars.COMMITTER_EMAIL }}
#commit_options: '-S'
file_pattern: docs/open/TouchSetupLogin.apk
tagging_message: v${{ env.version }}
tagging_message: ${{ env.version }}

- name: Release
uses: softprops/action-gh-release@v1
if: github.event.inputs.release == 'true'
with:
tag_name: v${{ env.version }}
tag_name: ${{ env.version }}
draft: true
prerelease: false
files: app/build/outputs/apk/release/app-release.apk
3 changes: 2 additions & 1 deletion app/proguard-rules.pro
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
-keep class jp.co.benesse.dcha.dchaservice.IDchaService
-keep class jp.co.benesse.dcha.dchaservice.IDchaService
-keep class jp.co.benesse.touch.setuplogin.**
3 changes: 2 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,8 @@
android:icon="@android:mipmap/sym_def_app_icon"
android:label="BRPの有効化"
android:launchMode="singleInstance"
android:noHistory="true">
android:noHistory="true"
android:theme="@android:style/ThemeOverlay.Material.Dialog.Alert">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.widget.Toast;

import java.io.File;
import java.io.FileOutputStream;
Expand All @@ -29,7 +28,6 @@ public class BypassActivity extends Activity {
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
run(this);
Toast.makeText(this, "実行しました", Toast.LENGTH_SHORT).show();
finishAndRemoveTask();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,11 @@ public class LoginSettingActivity extends Activity {

IDchaService mDchaService;

public void onBackPressed() {
// バックキーを無効化
public void ofDisable(Class<?> cls) {
getPackageManager().setComponentEnabledSetting(new ComponentName(this, cls), COMPONENT_ENABLED_STATE_DISABLED, DONT_KILL_APP);
}
public void ofEnable(Class<?> cls) {
getPackageManager().setComponentEnabledSetting(new ComponentName(this, cls), COMPONENT_ENABLED_STATE_ENABLED, DONT_KILL_APP);
}

public void onCreate(Bundle savedInstanceState) {
Expand All @@ -41,12 +44,12 @@ public void onCreate(Bundle savedInstanceState) {
final String LAUNCHER3 = "com.android.launcher3";
final String NOVA_PACKAGE = "com.teslacoilsw.launcher";
final String LOCAL_PATH = "/storage/emulated/0/Download/";
final String SD_PATH = "/storage/sdcard1/";
final String SD_PATH = "/storage/sdcard1/APK/";
final String CT3 = "TAB-A03-BR3";
final String CTZ = "TAB-A05-BA1";
// SDカードのルートに NovaLauncher のAPKを置く(CT3とCTX/Zで分ける)
final String NOVA6_SD_PATH = SD_PATH + "NovaLauncher_6.2.19.apk";
final String NOVA7_SD_PATH = SD_PATH + "NovaLauncher_7.0.57.apk";
final String NOVA7_SD_PATH = SD_PATH + "NovaLauncher_7.0.58.apk";
final String NOVA_LOCAL_PATH = LOCAL_PATH + "NovaLauncher.apk";
// Googleサービス
final String[] GApps = {
Expand Down Expand Up @@ -77,12 +80,12 @@ public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
// CT3 のみ直接インストール
if (MODEL.equals(CT3)) {
// アクティビティを無効化
getPackageManager().setComponentEnabledSetting(new ComponentName(getApplicationContext(), DchaStateChanger.class), COMPONENT_ENABLED_STATE_DISABLED, DONT_KILL_APP);
getPackageManager().setComponentEnabledSetting(new ComponentName(getApplicationContext(), DevelopmentOptions.class), COMPONENT_ENABLED_STATE_DISABLED, DONT_KILL_APP);
getPackageManager().setComponentEnabledSetting(new ComponentName(getApplicationContext(), DeviceAdminReceiver.class), COMPONENT_ENABLED_STATE_DISABLED, DONT_KILL_APP);
ofDisable(DchaStateChanger.class);
ofDisable(DevelopmentOptions.class);
ofDisable(DeviceAdminReceiver.class);
// 有効化
getPackageManager().setComponentEnabledSetting(new ComponentName(getApplicationContext(), DchaStateChanger3.class), COMPONENT_ENABLED_STATE_ENABLED, DONT_KILL_APP);
getPackageManager().setComponentEnabledSetting(new ComponentName(getApplicationContext(), DevelopmentOptions3.class), COMPONENT_ENABLED_STATE_ENABLED, DONT_KILL_APP);
ofEnable(DchaStateChanger3.class);
ofEnable(DevelopmentOptions3.class);
// APKをインストール
mDchaService.installApp(NOVA6_SD_PATH, INSTALL_FLAG);

Expand All @@ -98,8 +101,12 @@ public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
// CTZ は GMS もインストール
if (MODEL.equals(CTZ)) {
// アクティビティを無効化
getPackageManager().setComponentEnabledSetting(new ComponentName(getApplicationContext(), DchaCopyFile.class), COMPONENT_ENABLED_STATE_DISABLED, DONT_KILL_APP);
getPackageManager().setComponentEnabledSetting(new ComponentName(getApplicationContext(), DchaInstallApp.class), COMPONENT_ENABLED_STATE_DISABLED, DONT_KILL_APP);
ofDisable(DchaCopyFile.class);
ofDisable(DchaInstallApp.class);
ofDisable(DevelopmentOptions.class);
// 有効化
ofEnable(PlayUpgradeActivity.class);
ofEnable(DchaStateReceiver.class);
// DchaState を 3 にする
mDchaService.setSetupStatus(DIGICHALIZED);
// Googleサービス
Expand All @@ -117,13 +124,9 @@ public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
// DchaState を 0 にする
if (!MODEL.equals(CTZ)) {
mDchaService.setSetupStatus(UNDIGICHALIZE);
} else {
// BRP enabler
getPackageManager().setComponentEnabledSetting(new ComponentName(getApplicationContext(), PlayUpgradeActivity.class), COMPONENT_ENABLED_STATE_ENABLED, DONT_KILL_APP);
getPackageManager().setComponentEnabledSetting(new ComponentName(getApplicationContext(), DchaStateReceiver.class), COMPONENT_ENABLED_STATE_ENABLED, DONT_KILL_APP);
}
// このアクティビティを無効化
getPackageManager().setComponentEnabledSetting(new ComponentName(getApplicationContext(), LoginSettingActivity.class), COMPONENT_ENABLED_STATE_DISABLED, DONT_KILL_APP);
ofDisable(LoginSettingActivity.class);
// 再起動
mDchaService.rebootPad(REBOOT_DEVICE, null);
} catch (RemoteException ignored) {
Expand All @@ -135,4 +138,4 @@ public void onServiceDisconnected(ComponentName componentName) {
}
}, BIND_ADJUST_WITH_ACTIVITY);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
import static android.content.pm.PackageManager.*;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.ComponentName;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
Expand All @@ -17,36 +19,63 @@ public class PlayUpgradeActivity extends Activity {
private static final int GMS_MIN_VER = 18719037;
private static final int FINSKY_MIN_VER = 82195010;

public void makeToast(String msg) {
Toast.makeText(this, msg, Toast.LENGTH_LONG).show();
}

public void ofDisable(Class<?> cls) {
getPackageManager().setComponentEnabledSetting(new ComponentName(this, cls), COMPONENT_ENABLED_STATE_DISABLED, DONT_KILL_APP);
}
public void ofEnable(Class<?> cls) {
getPackageManager().setComponentEnabledSetting(new ComponentName(this, cls), COMPONENT_ENABLED_STATE_ENABLED, DONT_KILL_APP);
}

@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
finishAndRemoveTask();
Intent intent;
try {
final int GMS_VER = getPackageManager().getPackageInfo(GmsCore, 0).versionCode;
final int FINSKY_VER = getPackageManager().getPackageInfo(Phonesky, 0).versionCode;
if (GMS_VER > GMS_MIN_VER && FINSKY_VER > FINSKY_MIN_VER) {
// Enable BypassRevokePermission
getPackageManager().setComponentEnabledSetting(new ComponentName(this, BypassActivity.class), COMPONENT_ENABLED_STATE_ENABLED, DONT_KILL_APP);
getPackageManager().setComponentEnabledSetting(new ComponentName(this, BypassService.class), COMPONENT_ENABLED_STATE_ENABLED, DONT_KILL_APP);
getPackageManager().setComponentEnabledSetting(new ComponentName(this, DynamicReceiver.class), COMPONENT_ENABLED_STATE_ENABLED, DONT_KILL_APP);
getPackageManager().setComponentEnabledSetting(new ComponentName(this, BootCompletedReceiver.class), COMPONENT_ENABLED_STATE_ENABLED, DONT_KILL_APP);
getPackageManager().setComponentEnabledSetting(new ComponentName(this, PackageReceiver.class), COMPONENT_ENABLED_STATE_ENABLED, DONT_KILL_APP);
// Disable this Activity
getPackageManager().setComponentEnabledSetting(new ComponentName(this, getClass()), COMPONENT_ENABLED_STATE_DISABLED, DONT_KILL_APP);
// Disable DchaStateReceiver
getPackageManager().setComponentEnabledSetting(new ComponentName(this, DchaStateReceiver.class), COMPONENT_ENABLED_STATE_DISABLED, DONT_KILL_APP);
// Reboot
PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE);
pm.reboot(null);
new AlertDialog.Builder(this)
.setTitle(getApplicationInfo().loadLabel(getPackageManager()).toString())
.setIcon(getPackageManager().getApplicationIcon(getPackageName()))
.setMessage("BypassRevokePermission を有効にすると大幅に利便性が向上します。\nただし、 Play ストアが正しく動作しなくなる可能性があります。\n\n続行しますか?")
.setPositiveButton("はい", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface d, int s) {
ofEnable(DevelopmentOptions.class);
// Enable BypassRevokePermission
ofEnable(BypassActivity.class);
ofEnable(BypassService.class);
ofEnable(DynamicReceiver.class);
ofEnable(BootCompletedReceiver.class);
ofEnable(PackageReceiver.class);
// Disable
ofDisable(DchaStateReceiver.class);
ofDisable(DchaStateReceiver.class);
// Reboot
((PowerManager) getSystemService(POWER_SERVICE)).reboot(null);
}
})
.setNegativeButton("いいえ", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface d, int s) {
finishAndRemoveTask();
makeToast("キャンセルされました");
}
})
.show();
} else {
finishAndRemoveTask();
if (GMS_VER <= GMS_MIN_VER) {
Toast.makeText(this, "Play ストアから「Google Play開発者サービス」を更新してください", Toast.LENGTH_LONG).show();
makeToast("Play ストアから 「Google Play開発者サービス」 を更新してください");
// Require Google account
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + GmsCore)));
intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + GmsCore));
} else {
Toast.makeText(this, "設定から[Play ストアのバージョン]をタップして、ストアを更新してください", Toast.LENGTH_LONG).show();
startActivity(new Intent(Intent.ACTION_MAIN).setPackage(Phonesky));
makeToast("設定から[Play ストアのバージョン]をタップして、ストアを更新してください");
intent = new Intent(Intent.ACTION_MAIN).setPackage(Phonesky);
}
startActivity(intent);
}
} catch (PackageManager.NameNotFoundException ignored) {
}
Expand Down
30 changes: 18 additions & 12 deletions docs/HowTo.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

> [!CAUTION]
> このツールの使用に依って生じた損害については一切責任を負いません。
また、 チャレンジパッド3の場合は、 通常は [**MTKClientを使用した方法**](//zenn.dev/s1204it/articles/16fce85441821f) を利用し、 どうしてもPC環境が無い時のみ利用して下さい。
また、 チャレンジパッド3の場合は、 通常は [**MTKClientを使用した方法**](https://zenn.dev/s1204it/articles/16fce85441821f) を利用し、 どうしてもPC環境が無い時のみ利用して下さい。

## 必要なもの

Expand All @@ -17,26 +17,38 @@

⒈ Nova Launcher のAPKをダウンロードします。

チャレンジパッド**Neo** / **Next**[**7.0.57**](https://teslacoilapps.com/tesladirect/download.pl?packageName=com.teslacoilsw.launcher&versionCode=70057)
チャレンジパッド**Neo** / **Next**[**7.0.58**](https://teslacoilapps.com/tesladirect/download.pl?packageName=com.teslacoilsw.launcher&versionCode=70058)
チャレンジパッド****[**6.2.19**](https://teslacoilapps.com/tesladirect/download.pl?packageName=com.teslacoilsw.launcher&versionCode=62019)

> [!IMPORTANT]
> **※ Next の場合は Playストア を利用できます**
以下のZIPファイルをダウンロードし、5つのAPKを抽出してください。
> - [**CTZ-GApps**.zip](//subcontent.s1204.me/android/CTZ-GApps.zip)
> - [**CTZ-GApps**.zip](https://subcontent.s1204.me/android/CTZ-GApps.zip)
⒉ 次のリンクを開き、 ファイルとして保存します。
[**test_environment_info.xml**](https://smiletablabo.github.io/NovaDirectInstaller/test_environment_info.xml)

⒊ SDカードの最上層に、 `test_environment_info.xml` と ダウンロードした APK をコピーします。
⒊ SDカードの最上層に、 `test_environment_info.xml` をコピーし、 **APK** と言う名前のフォルダを作りダウンロードした APK をコピーします。
```
SDカードの最上層/
├── APK
│   ├── GmsCore.apk
│   ├── GoogleCalendarSyncAdapter.apk
│   ├── GoogleContsctsSyncAdapter.apk
│   ├── GoogleServicesFramework.apk
│   ├── NovaLauncher_6.2.19.apk
│   ├── NovaLauncher_7.0.58.apk
│   └── Phonesky.apk
└── test_environment_info.xml
```
> [!WARNING]
> ※ APKのファイル名は変えずにコピーしてください。
⒋ チャレンジパッドにmicroSDカードを挿入します。

⒌ ホーム画面の、 スタートボタンを押します。

![](https://user-images.githubusercontent.com/52069677/164911100-959604e3-d1c9-4250-9b95-94fbb2b0de62.png)
[![](https://user-images.githubusercontent.com/52069677/164911100-959604e3-d1c9-4250-9b95-94fbb2b0de62.png)](#)

⒍ 「<kbd><b>わかった</b></kbd>」 を押します。

Expand All @@ -53,7 +65,7 @@

⒏ 正常に続行すると以下のような画面が出ます。

![](https://github.com/SmileTabLabo/NovaDirectInstaller/assets/52069677/daf59624-5e31-47f8-abe5-5990e8599e16)
[![](https://github.com/SmileTabLabo/NovaDirectInstaller/assets/52069677/daf59624-5e31-47f8-abe5-5990e8599e16)](#)
**画面には触れずに** そのままお待ちください。
内部処理が終了後、 自動的に再起動されます。

Expand All @@ -64,12 +76,6 @@

これで簡易的な改造は完了です。

ADB が使用可能な場合は、 以下のコマンドを必ず実行して下さい。
```
adb shell pm uninstall --user 0 jp.co.benesse.dcha.dchaservice
```
このコマンドを実行しないと、 予期せぬタイミングでアプリやデータが全て削除される可能性が有ります。

## チャレンジパッドNext の例外について

チャレンジパッドNext では **Google Playストア** が使用できます。
Expand Down
2 changes: 1 addition & 1 deletion docs/README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Nova Direct Installer
[**DchaState Changer**](//github.com/SmileTabLabo/DchaStateChanger)を使ってSDカードから[**Nova Launcher**](//novalauncher.com)をインストールするためのアプリです。
[**DchaState Changer**](https://github.com/SmileTabLabo/DchaStateChanger)を使ってSDカードから[**Nova Launcher**](https://novalauncher.com)をインストールするためのアプリです。

[![Build](https://github.com/SmileTabLabo/DchaStateChanger/actions/workflows/build.yml/badge.svg?branch=main&event=push)](https://github.com/SmileTabLabo/NovaDirectInstaller/actions/workflows/build.yml)

Expand Down

0 comments on commit e0b5b1b

Please sign in to comment.