Skip to content

Update README.md

Update README.md #15

Workflow file for this run

# This is a basic workflow to help you get started with Actions
name: HMCL.PE
# Controls when the workflow will run
on:
# Triggers the workflow on push or pull request events but only for the "main" branch
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v3
# Runs a single command using the runners shell
- name: Run a one-line script
implementation project(path: ':Boat') implementation project(path: ':Boat') implementation project(path: ':PojavLauncher') fix;

Check failure on line 31 in .github/workflows/blank.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/blank.yml

Invalid workflow file

You have an error in your yaml syntax on line 31
implementation 'androidx.appcompat:appcompat:1.5.0' implementation 'androidx.appcompat:appcompat:1.5.1'
implementation 'com.github.naman14:app-theme-engine:0.5.2@aar' implementation 'com.github.naman14:app-theme-engine:0.5.2@aar'
implementation 'com.google.android.material:material:1.6.1' implementation 'com.google.android.material:material:1.6.1'
implementation 'com.squareup.okhttp3:okhttp:4.9.3' implementation 'com.squareup.okhttp3:okhttp:4.9.3'
implementation 'org.nanohttpd:nanohttpd:2.3.1' implementation 'org.nanohttpd:nanohttpd:2.3.1'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4' implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'cat.ereza:customactivityoncrash:2.3.0' implementation 'cat.ereza:customactivityoncrash:2.4.0'
implementation 'com.google.code.gson:gson:2.8.9' implementation 'com.google.code.gson:gson:2.9.0'
implementation 'org.apache.commons:commons-compress:1.21' implementation 'org.apache.commons:commons-compress:1.21'
implementation 'com.github.steveice10:opennbt:1.4' implementation 'com.github.steveice10:opennbt:1.4'
implementation 'com.jaredrummler:colorpicker:1.1.0' implementation 'com.jaredrummler:colorpicker:1.1.0'
implementation 'com.jaredrummler:android-device-names:2.0.0' implementation 'com.jaredrummler:android-device-names:2.1.0'
implementation 'org.jsoup:jsoup:1.14.3' implementation 'org.jsoup:jsoup:1.15.3'
implementation 'org.apache.commons:commons-lang3:3.12.0' implementation 'org.apache.commons:commons-lang3:3.12.0'
implementation 'org.jenkins-ci:constant-pool-scanner:1.2' implementation 'org.jenkins-ci:constant-pool-scanner:1.2'
implementation 'com.github.gzu-liyujiang:Android_CN_OAID:4.2.4'
implementation 'com.github.nedimf:maildroid:v0.1.0-release'
testImplementation 'junit:junit:4.13.2' testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
5 changes: 0 additions & 5 deletions5
HMCLPE/src/main/java/com/tungsten/hmclpe/launcher/HMCLPEApplication.java
@@ -2,10 +2,6 @@
import android.app.Application; import android.app.Application;
import android.content.Context; import android.content.Context;
import android.content.res.Configuration;
import com.github.gzuliyujiang.oaid.DeviceIdentifier;
import com.tungsten.hmclpe.utils.LocaleUtils;
import wang.switchy.hin2n.Hin2n; import wang.switchy.hin2n.Hin2n;
@@ -16,7 +12,6 @@ public class HMCLPEApplication extends Application {
@Override @Override
public void onCreate() { public void onCreate() {
super.onCreate(); super.onCreate();
DeviceIdentifier.register(this);
context = this.getApplicationContext(); context = this.getApplicationContext();
Hin2n.getInstance().setup(context); Hin2n.getInstance().setup(context);
} }
17 changes: 17 additions & 0 deletions17
HMCLPE/src/main/java/com/tungsten/hmclpe/launcher/dialogs/ContributorListDialog.java
@@ -0,0 +1,17 @@
package com.tungsten.hmclpe.launcher.dialogs;
import android.app.Dialog;
import android.content.Context;
import androidx.annotation.NonNull;
import com.tungsten.hmclpe.R;
public class ContributorListDialog extends Dialog {
public ContributorListDialog(@NonNull Context context) {
super(context);
setContentView(R.layout.dialog_contributor_list);
}
}
165 changes: 163 additions & 2 deletions165
...rc/main/java/com/tungsten/hmclpe/launcher/uis/universal/setting/right/help/AboutUsUI.java
@@ -10,6 +10,7 @@
import com.tungsten.hmclpe.R; import com.tungsten.hmclpe.R;
import com.tungsten.hmclpe.launcher.MainActivity; import com.tungsten.hmclpe.launcher.MainActivity;
import com.tungsten.hmclpe.launcher.dialogs.ContributorListDialog;
import com.tungsten.hmclpe.launcher.uis.tools.BaseUI; import com.tungsten.hmclpe.launcher.uis.tools.BaseUI;
import com.tungsten.hmclpe.utils.animation.CustomAnimationUtils; import com.tungsten.hmclpe.utils.animation.CustomAnimationUtils;
@@ -21,13 +22,40 @@ public class AboutUsUI extends BaseUI implements View.OnClickListener {
private ImageButton tungs; private ImageButton tungs;
private ImageButton mio; private ImageButton mio;
private ImageButton community;
private ImageButton cosine; private ImageButton cosine;
private ImageButton legacy;
private ImageButton saltfish; private ImageButton saltfish;
private ImageButton hmcl; private ImageButton hmcl;
private ImageButton bangbang93; private ImageButton bangbang93;
private ImageButton mcbbs; private ImageButton mcbbs;
private ImageButton mcmod; private ImageButton mcmod;
private ImageButton discord;
private ImageButton qqChannel;
private ImageButton qq;
private ImageButton libHmcl;
private ImageButton libBoat;
private ImageButton libPojav;
private ImageButton libHin2n;
private ImageButton libGson;
private ImageButton libTheme;
private ImageButton libOkhttp;
private ImageButton libNano;
private ImageButton libCrash;
private ImageButton libCommonC;
private ImageButton libCommonL;
private ImageButton libOpenNBT;
private ImageButton libColor;
private ImageButton libDevice;
private ImageButton libJsoup;
private ImageButton libPool;
private ImageButton copyright;
private ImageButton eula;
private ImageButton openSource;
public AboutUsUI(Context context, MainActivity activity) { public AboutUsUI(Context context, MainActivity activity) {
super(context, activity); super(context, activity);
} }
@@ -41,23 +69,77 @@ public void onCreate() {
tungs = activity.findViewById(R.id.tungs_link); tungs = activity.findViewById(R.id.tungs_link);
mio = activity.findViewById(R.id.mio_link); mio = activity.findViewById(R.id.mio_link);
community = activity.findViewById(R.id.community_developer_link);
cosine = activity.findViewById(R.id.cosine_link); cosine = activity.findViewById(R.id.cosine_link);
legacy = activity.findViewById(R.id.legacy_link);
saltfish = activity.findViewById(R.id.saltfish_link); saltfish = activity.findViewById(R.id.saltfish_link);
hmcl = activity.findViewById(R.id.hmcl_link); hmcl = activity.findViewById(R.id.hmcl_link);
bangbang93 = activity.findViewById(R.id.bangbang93_link); bangbang93 = activity.findViewById(R.id.bangbang93_link);
mcbbs = activity.findViewById(R.id.mcbbs_link); mcbbs = activity.findViewById(R.id.mcbbs_link);
mcmod = activity.findViewById(R.id.mcmod_link); mcmod = activity.findViewById(R.id.mcmod_link);
discord = activity.findViewById(R.id.discord_link);
qqChannel = activity.findViewById(R.id.qq_channel_link);
qq = activity.findViewById(R.id.qq_link);
libHmcl = activity.findViewById(R.id.lib_hmcl_link);
libBoat = activity.findViewById(R.id.lib_boat_link);
libPojav = activity.findViewById(R.id.lib_pojav_link);
libHin2n = activity.findViewById(R.id.lib_hin2n_link);
libGson = activity.findViewById(R.id.lib_gson_link);
libTheme = activity.findViewById(R.id.lib_theme_link);
libOkhttp = activity.findViewById(R.id.lib_okhttp_link);
libNano = activity.findViewById(R.id.lib_nano_link);
libCrash = activity.findViewById(R.id.lib_crash_link);
libCommonC = activity.findViewById(R.id.lib_commonc_link);
libCommonL = activity.findViewById(R.id.lib_commonl_link);
libOpenNBT = activity.findViewById(R.id.lib_opennbt_link);
libColor = activity.findViewById(R.id.lib_color_link);
libDevice = activity.findViewById(R.id.lib_device_link);
libJsoup = activity.findViewById(R.id.lib_jsoup_link);
libPool = activity.findViewById(R.id.lib_pool_link);
copyright = activity.findViewById(R.id.copyright_link);
eula = activity.findViewById(R.id.eula_link);
openSource = activity.findViewById(R.id.open_source_link);
hmclpe.setOnClickListener(this); hmclpe.setOnClickListener(this);
tungs.setOnClickListener(this); tungs.setOnClickListener(this);
mio.setOnClickListener(this); mio.setOnClickListener(this);
community.setOnClickListener(this);
cosine.setOnClickListener(this); cosine.setOnClickListener(this);
legacy.setOnClickListener(this);
saltfish.setOnClickListener(this); saltfish.setOnClickListener(this);
hmcl.setOnClickListener(this); hmcl.setOnClickListener(this);
bangbang93.setOnClickListener(this); bangbang93.setOnClickListener(this);
mcbbs.setOnClickListener(this); mcbbs.setOnClickListener(this);
mcmod.setOnClickListener(this); mcmod.setOnClickListener(this);
discord.setOnClickListener(this);
qqChannel.setOnClickListener(this);
qq.setOnClickListener(this);
libHmcl.setOnClickListener(this);
libBoat.setOnClickListener(this);
libPojav.setOnClickListener(this);
libHin2n.setOnClickListener(this);
libGson.setOnClickListener(this);
libTheme.setOnClickListener(this);
libOkhttp.setOnClickListener(this);
libNano.setOnClickListener(this);
libCrash.setOnClickListener(this);
libCommonC.setOnClickListener(this);
libCommonL.setOnClickListener(this);
libOpenNBT.setOnClickListener(this);
libColor.setOnClickListener(this);
libDevice.setOnClickListener(this);
libJsoup.setOnClickListener(this);
libPool.setOnClickListener(this);
copyright.setOnClickListener(this);
eula.setOnClickListener(this);
openSource.setOnClickListener(this);
} }
@SuppressLint("UseCompatLoadingForDrawables") @SuppressLint("UseCompatLoadingForDrawables")
@@ -94,9 +176,16 @@ public void onClick(View view) {
uri = Uri.parse("https://space.bilibili.com/35801833"); uri = Uri.parse("https://space.bilibili.com/35801833");
} }
if (view == community) {
ContributorListDialog dialog = new ContributorListDialog(context);
dialog.show();
}
if (view == cosine) { if (view == cosine) {
uri = Uri.parse("https://github.com/CosineMath"); uri = Uri.parse("https://github.com/CosineMath");
} }
if (view == legacy) {
uri = Uri.parse("https://github.com/LegacyGamerHD");
}
if (view == saltfish) { if (view == saltfish) {
uri = Uri.parse("https://github.com/TSaltedfishKing"); uri = Uri.parse("https://github.com/TSaltedfishKing");
} }
@@ -113,7 +202,79 @@ public void onClick(View view) {
uri = Uri.parse("https://www.mcmod.cn/"); uri = Uri.parse("https://www.mcmod.cn/");
} }
Intent intent = new Intent(Intent.ACTION_VIEW, uri); if (view == discord) {
context.startActivity(intent); uri = Uri.parse("https://discord.gg/zeMNy8Wdgd");
}
if (view == qqChannel) {
uri = Uri.parse("https://qun.qq.com/qqweb/qunpro/share?_wv=3&_wwv=128&appChannel=share&inviteCode=1izjNP&businessType=9&from=246610&biz=ka");
}
if (view == qq) {
FeedbackUI.joinQQGroup(context, "7rX0cr37hu_jNPaGIlqAEf4Ndv1BG-WU");
}
if (view == libHmcl) {
uri = Uri.parse("https://github.com/huanghongxun/HMCL");
}
if (view == libBoat) {
uri = Uri.parse("https://github.com/AOF-Dev/Boat");
}
if (view == libPojav) {
uri = Uri.parse("https://github.com/PojavLauncherTeam/PojavLauncher");
}
if (view == libHin2n) {
uri = Uri.parse("https://github.com/switch-iot/hin2n");
}
if (view == libGson) {
uri = Uri.parse("https://github.com/google/gson");
}
if (view == libTheme) {
uri = Uri.parse("https://github.com/naman14/app-theme-engine");
}
if (view == libOkhttp) {
uri = Uri.parse("https://github.com/square/okhttp");
}
if (view == libNano) {
uri = Uri.parse("https://github.com/NanoHttpd/nanohttpd");
}
if (view == libCrash) {
uri = Uri.parse("https://github.com/Ereza/CustomActivityOnCrash");
}
if (view == libCommonC) {
uri = Uri.parse("https://github.com/apache/commons-compress");
}
if (view == libCommonL) {
uri = Uri.parse("https://github.com/apache/commons-lang");
}
if (view == libOpenNBT) {
uri = Uri.parse("https://github.com/GeyserMC/OpenNBT");
}
if (view == libColor) {
uri = Uri.parse("https://github.com/jaredrummler/ColorPicker");
}
if (view == libDevice) {
uri = Uri.parse("https://github.com/jaredrummler/AndroidDeviceNames");
}
if (view == libJsoup) {
uri = Uri.parse("https://github.com/jhy/jsoup");
}
if (view == libPool) {
uri = Uri.parse("https://github.com/jenkinsci/constant-pool-scanner");
}
if (view == copyright) {
uri = Uri.parse("https://tungstend.github.io/pages/about.html");
}
if (view == eula) {
uri = Uri.parse("https://tungstend.github.io/pages/eula.html");
}
if (view == openSource) {
uri = Uri.parse("https://github.com/Tungstend/HMCL-PE-CN");
}
if (uri != null) {
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
context.startActivity(intent);
}
} }
} }
29 changes: 29 additions & 0 deletions29
...c/main/java/com/tungsten/hmclpe/launcher/uis/universal/setting/right/help/FeedbackUI.java
@@ -56,13 +56,42 @@ public void onStop() {
} }
} }
/****************
*
* 发起添加群流程。群号:HMCL-PE(715191324) 的 key 为: 7rX0cr37hu_jNPaGIlqAEf4Ndv1BG-WU
* 调用 joinQQGroup(7rX0cr37hu_jNPaGIlqAEf4Ndv1BG-WU) 即可发起手Q客户端申请加群 HMCL-PE(715191324)
*
* @param key 由官网生成的key
* @return 返回true表示呼起手Q成功,返回false表示呼起失败
******************/
public static boolean joinQQGroup(Context context, String key) {
Intent intent = new Intent();
intent.setData(Uri.parse("mqqopensdkapi://bizAgent/qm/qr?url=http%3A%2F%2Fqm.qq.com%2Fcgi-bin%2Fqm%2Fqr%3Ffrom%3Dapp%26p%3Dandroid%26jump_from%3Dwebapi%26k%3D" + key));
// 此Flag可根据具体产品需要自定义,如设置,则在加群界面按返回,返回手Q主界面,不设置,按返回会返回到呼起产品界面 //intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
try {
context.startActivity(intent);
return true;
} catch (Exception e) {
// 未安装手Q或安装的版本不支持
return false;
}
}
@Override @Override
public void onClick(View v) { public void onClick(View v) {
if (v == joinDiscord) { if (v == joinDiscord) {
Uri uri = Uri.parse("https://discord.gg/zeMNy8Wdgd"); Uri uri = Uri.parse("https://discord.gg/zeMNy8Wdgd");
Intent intent = new Intent(Intent.ACTION_VIEW, uri); Intent intent = new Intent(Intent.ACTION_VIEW, uri);
context.startActivity(intent); context.startActivity(intent);
} }
if (v == joinQQChannel) {
Uri uri = Uri.parse("https://qun.qq.com/qqweb/qunpro/share?_wv=3&_wwv=128&appChannel=share&inviteCode=1izjNP&businessType=9&from=246610&biz=ka");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
context.startActivity(intent);
}
if (v == joinQQ){
joinQQGroup(context, "7rX0cr37hu_jNPaGIlqAEf4Ndv1BG-WU");
}
if (v == jumpToGit){ if (v == jumpToGit){
Uri uri = Uri.parse("https://github.com/Tungstend/HMCL-PE/issues"); Uri uri = Uri.parse("https://github.com/Tungstend/HMCL-PE/issues");
Intent intent = new Intent(Intent.ACTION_VIEW, uri); Intent intent = new Intent(Intent.ACTION_VIEW, uri);
9 changes: 0 additions & 9 deletions9
HMCLPE/src/main/java/com/tungsten/hmclpe/utils/DigestUtils.java
@@ -10,9 +10,6 @@
import static java.nio.charset.StandardCharsets.UTF_8; import static java.nio.charset.StandardCharsets.UTF_8;
import android.content.Context; import android.content.Context;
import android.util.Log;
import com.github.gzuliyujiang.oaid.DeviceIdentifier;
/** /**
* *
@@ -104,11 +101,5 @@ public static String byteToHex(byte b)
} }
return hexString.toUpperCase(); return hexString.toUpperCase();
} }
public static String getDeviceCode(Context context) {
return DigestUtils.encryptToMD5(DeviceIdentifier.getOAID(context)
+ DeviceIdentifier.getAndroidID(context)
+ DeviceIdentifier.getWidevineID()
+ DeviceIdentifier.getPseudoID());
}
} }
Binary file addedBIN +4.88 KB
HMCLPE/src/main/res/drawable/ic_discord.png
Binary file addedBIN +421 KB
HMCLPE/src/main/res/drawable/ic_legacy.png
Binary file addedBIN +2.01 KB
HMCLPE/src/main/res/drawable/ic_qq.png
58 changes: 58 additions & 0 deletions58
HMCLPE/src/main/res/layout/dialog_contributor_list.xml
@@ -0,0 +1,58 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:padding="15dp"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/dialog_contributor_list_title"
android:textStyle="bold"
android:textSize="14sp"
android:textColor="@color/colorPureBlack"/>
<ScrollView
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginTop="15dp">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textSize="@dimen/text_size_middle"
android:textColor="@color/colorPureBlack"
android:text="@string/contributor_heo_bino"/>
<TextView
android:layout_marginTop="15dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textSize="@dimen/text_size_middle"
android:textColor="@color/colorPureBlack"
android:text="@string/contributor_stefma"/>
<TextView
android:layout_marginTop="15dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textSize="@dimen/text_size_middle"
android:textColor="@color/colorPureBlack"
android:text="@string/contributor_matheus"/>
</LinearLayout>
</ScrollView>
</LinearLayout>
1,355 changes: 1,345 additions & 10 deletions1,355
HMCLPE/src/main/res/layout/ui_setting_about.xml
Large diffs are not rendered by default.
88 changes: 88 additions & 0 deletions88
HMCLPE/src/main/res/layout/ui_setting_feedback.xml
@@ -23,6 +23,13 @@
android:orientation="horizontal" android:orientation="horizontal"
android:background="@drawable/launcher_view_light_gray"> android:background="@drawable/launcher_view_light_gray">
<ImageView
android:layout_marginEnd="15dp"
android:layout_width="30dp"
android:layout_height="30dp"
android:background="@drawable/ic_discord"
android:layout_gravity="center"/>
<TextView <TextView
android:singleLine="true" android:singleLine="true"
android:layout_width="wrap_content" android:layout_width="wrap_content"
@@ -46,6 +53,80 @@
</LinearLayout> </LinearLayout>
<LinearLayout
android:padding="15dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="@drawable/launcher_view_light_gray">
<ImageView
android:layout_marginEnd="15dp"
android:layout_width="30dp"
android:layout_height="30dp"
android:background="@drawable/ic_qq"
android:layout_gravity="center"/>
<TextView
android:singleLine="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/feedback_ui_join_qq_channel"
android:textSize="@dimen/text_size_middle"
android:textColor="@color/colorPureBlack"/>
<View
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="1"/>
<ImageButton
android:layout_width="24dp"
android:layout_height="24dp"
android:id="@+id/join_qq_channel"
android:background="@drawable/ic_baseline_jump_black"
android:layout_gravity="center"/>
</LinearLayout>
<LinearLayout
android:layout_marginTop="10dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="@drawable/launcher_view_light_gray">
<ImageView
android:layout_marginEnd="15dp"
android:layout_width="30dp"
android:layout_height="30dp"
android:background="@drawable/ic_qq"
android:layout_gravity="center"/>
<TextView
android:singleLine="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/feedback_ui_join_qq"
android:textSize="@dimen/text_size_middle"
android:textColor="@color/colorPureBlack"/>
<View
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="1"/>
<ImageButton
android:layout_width="24dp"
android:layout_height="24dp"
android:id="@+id/join_qq_group"
android:background="@drawable/ic_baseline_jump_black"
android:layout_gravity="center"/>
</LinearLayout>
<LinearLayout <LinearLayout
android:padding="15dp" android:padding="15dp"
android:layout_marginTop="10dp" android:layout_marginTop="10dp"
@@ -54,6 +135,13 @@
android:orientation="horizontal" android:orientation="horizontal"
android:background="@drawable/launcher_view_light_gray"> android:background="@drawable/launcher_view_light_gray">
<ImageView
android:layout_marginEnd="15dp"
android:layout_width="30dp"
android:layout_height="30dp"
android:background="@drawable/ic_github"
android:layout_gravity="center"/>
<TextView <TextView
android:singleLine="true" android:singleLine="true"
android:layout_width="wrap_content" android:layout_width="wrap_content"
19 changes: 19 additions & 0 deletions19
HMCLPE/src/main/res/values-en/strings.xml
@@ -816,8 +816,22 @@
<string name="dialog_create_rocker_style_name_exist">The name already exists</string> <string name="dialog_create_rocker_style_name_exist">The name already exists</string>
<string name="dialog_create_rocker_style_positive">Create</string> <string name="dialog_create_rocker_style_positive">Create</string>
<string name="dialog_create_rocker_style_negative">Cancel</string> <string name="dialog_create_rocker_style_negative">Cancel</string>
<string name="ui_about_tungsten_sub">\@念小六 on Bilibili</string>
<string name="ui_about_shirosakimio_sub">\@ShirosakiMio on Bilibili</string>
<string name="dialog_contributor_list_title">Contributor list</string>
<string name="ui_about_thank">Thanks to</string> <string name="ui_about_thank">Thanks to</string>
<string name="ui_about_community">Community</string>
<string name="ui_about_community_qq_community">QQ Channel</string>
<string name="ui_about_community_qq">QQ Group</string>
<string name="ui_about_community_discord_join">Join our Discord community!</string>
<string name="ui_about_community_qq_community_join">Join our QQ channel!</string>
<string name="ui_about_community_qq_join">Join our QQ group!</string>
<string name="ui_about_lib">Third-party Libraries</string>
<string name="ui_about_legal">Legal Acknowledgement</string>
<string name="ui_about_community_developer">Community developers</string>
<string name="ui_about_community_developer_sub">For providing language translations and some other bug fix.</string>
<string name="ui_about_cosine_sub">For providing a lot of technical support.</string> <string name="ui_about_cosine_sub">For providing a lot of technical support.</string>
<string name="ui_about_legacy_sub">For improving compatibility and testing.</string>
<string name="ui_about_tsaltedfishking_sub">For providing HMCL-PE official website template.</string> <string name="ui_about_tsaltedfishking_sub">For providing HMCL-PE official website template.</string>
<string name="ui_about_hmcl_main">HMCL development team and all contributors</string> <string name="ui_about_hmcl_main">HMCL development team and all contributors</string>
<string name="ui_about_hmcl_sub">This project draws heavily on HMCL.</string> <string name="ui_about_hmcl_sub">This project draws heavily on HMCL.</string>
@@ -828,6 +842,11 @@
<string name="ui_about_mcmod_sub">For providing Chinese translations and wiki for various mods.</string> <string name="ui_about_mcmod_sub">For providing Chinese translations and wiki for various mods.</string>
<string name="ui_about_github_main">All contributors who participated in this project through Issues, sponsorship, etc.</string> <string name="ui_about_github_main">All contributors who participated in this project through Issues, sponsorship, etc.</string>
<string name="ui_about_github_sub">Thank you for your suggestions, bug feedback and sponsorship.</string> <string name="ui_about_github_sub">Thank you for your suggestions, bug feedback and sponsorship.</string>
<string name="ui_about_copy_right">Copyright</string>
<string name="ui_about_copy_right_statement">Copyright © 2022 Tungsten</string>
<string name="ui_about_eula">EULA</string>
<string name="ui_about_eula_statement">Click on this link for full text.</string>
<string name="ui_about_open_source">Open Source</string>
<string name="dialog_child_visibility_title">Visbility of child layout</string> <string name="dialog_child_visibility_title">Visbility of child layout</string>
<string name="dialog_child_visibility_positive">OK</string> <string name="dialog_child_visibility_positive">OK</string>
<string name="dialog_select_keycode_keyboard">Keyboard</string> <string name="dialog_select_keycode_keyboard">Keyboard</string>
19 changes: 19 additions & 0 deletions19
HMCLPE/src/main/res/values-zh-rTW/strings.xml
@@ -927,8 +927,22 @@
<string name="dialog_delete_button_title">提示</string> <string name="dialog_delete_button_title">提示</string>
<string name="dialog_delete_button_content">確定要刪除該按鍵嗎?</string> <string name="dialog_delete_button_content">確定要刪除該按鍵嗎?</string>
<string name="dialog_delete_button_positive">刪除</string> <string name="dialog_delete_button_positive">刪除</string>
<string name="ui_about_tungsten_sub">Bilibili ID:@念小六</string>
<string name="ui_about_shirosakimio_sub">Bilibili ID:@ShirosakiMio</string>
<string name="dialog_contributor_list_title">貢獻者列表</string>
<string name="ui_about_thank">鳴謝</string> <string name="ui_about_thank">鳴謝</string>
<string name="ui_about_community">社區</string>
<string name="ui_about_community_qq_community">QQ 頻道</string>
<string name="ui_about_community_qq">QQ 群</string>
<string name="ui_about_community_discord_join">歡迎加入 Discord 討論區,加入後請遵守討論區規定</string>
<string name="ui_about_community_qq_community_join">歡迎加入 QQ 頻道,加入後請遵守討論區規定</string>
<string name="ui_about_community_qq_join">歡迎加入 QQ 群,加入後請遵守討論區規定</string>
<string name="ui_about_lib">依賴</string>
<string name="ui_about_legal">法律聲明</string>
<string name="ui_about_community_developer">社區開發者</string>
<string name="ui_about_community_developer_sub">提供語言翻譯及 Bug 修復</string>
<string name="ui_about_cosine_sub">提供大量技術支持</string> <string name="ui_about_cosine_sub">提供大量技術支持</string>
<string name="ui_about_legacy_sub">提升兼容性以及測試</string>
<string name="ui_about_tsaltedfishking_sub">提供 HMCL-PE 官網模板</string> <string name="ui_about_tsaltedfishking_sub">提供 HMCL-PE 官網模板</string>
<string name="ui_about_hmcl_main">HMCL 開發團隊及所有貢獻者</string> <string name="ui_about_hmcl_main">HMCL 開發團隊及所有貢獻者</string>
<string name="ui_about_hmcl_sub">本項目大量借鑒 HMCL</string> <string name="ui_about_hmcl_sub">本項目大量借鑒 HMCL</string>
@@ -939,6 +953,11 @@
<string name="ui_about_mcmod_sub">提供 Mod 中文名映射表與 Mod 百科</string> <string name="ui_about_mcmod_sub">提供 Mod 中文名映射表與 Mod 百科</string>
<string name="ui_about_github_main">所有通過 Issues、讚助等方式參與本項目的貢獻者</string> <string name="ui_about_github_main">所有通過 Issues、讚助等方式參與本項目的貢獻者</string>
<string name="ui_about_github_sub">感謝各位的建議、bug 反饋及讚助</string> <string name="ui_about_github_sub">感謝各位的建議、bug 反饋及讚助</string>
<string name="ui_about_copy_right">版權</string>
<string name="ui_about_copy_right_statement">版權所有 © 2022 Tungsten</string>
<string name="ui_about_eula">用戶協議</string>
<string name="ui_about_eula_statement">點擊鏈接以查看全文</string>
<string name="ui_about_open_source">開源</string>
<string name="feedback_ui_join_discord">加入官方 Discord</string> <string name="feedback_ui_join_discord">加入官方 Discord</string>
</resources> </resources>
25 changes: 25 additions & 0 deletions25
HMCLPE/src/main/res/values-zh/strings.xml
@@ -768,6 +768,9 @@
<string name="download_setting_ui_download_alert">提示</string> <string name="download_setting_ui_download_alert">提示</string>
<string name="download_setting_ui_download_alert_text">并发数过大可能导致系统卡顿。你的下载速度会受到宽带运营商、服务器等方面的影响,调大下载并发数不一定能大幅提升总下载速度。</string> <string name="download_setting_ui_download_alert_text">并发数过大可能导致系统卡顿。你的下载速度会受到宽带运营商、服务器等方面的影响,调大下载并发数不一定能大幅提升总下载速度。</string>
<string name="feedback_ui_join_discord">加入官方 Discord</string>
<string name="feedback_ui_join_qq_channel">加入官方 QQ 频道</string>
<string name="feedback_ui_join_qq">加入官方 QQ 群(不推荐)</string>
<string name="feedback_ui_github_issues">前往 Github 反馈</string> <string name="feedback_ui_github_issues">前往 Github 反馈</string>
<string name="donate_ui_text">Hello Minecraft! Launcher Pocket Edition 是一个免费、自由、开放源代码的 Minecraft 启动器。您的赞助将帮助 Hello Minecraft! Launcher Pocket Edition 获得更好的发展,还可以获得 HMCL-PE 的开发进展。点击此处查阅更多详细信息。</string> <string name="donate_ui_text">Hello Minecraft! Launcher Pocket Edition 是一个免费、自由、开放源代码的 Minecraft 启动器。您的赞助将帮助 Hello Minecraft! Launcher Pocket Edition 获得更好的发展,还可以获得 HMCL-PE 的开发进展。点击此处查阅更多详细信息。</string>
@@ -970,6 +973,7 @@
<string name="dialog_create_community_name">房间名称</string> <string name="dialog_create_community_name">房间名称</string>
<string name="dialog_create_community_port">端口号</string> <string name="dialog_create_community_port">端口号</string>
<string name="dialog_create_community_getting">检测中…</string> <string name="dialog_create_community_getting">检测中…</string>
<string name="dialog_create_community_error">无法检测游戏端口号,你需启动游戏并在游戏内打开 对局域网开放 选项方能启动联机!</string>
<string name="dialog_create_community_positive">确定</string> <string name="dialog_create_community_positive">确定</string>
<string name="dialog_create_community_negative">取消</string> <string name="dialog_create_community_negative">取消</string>
@@ -1049,9 +1053,19 @@
<string name="drawer_custom_menu_add_view">添加</string> <string name="drawer_custom_menu_add_view">添加</string>
<string name="drawer_custom_menu_warn">你需要先创建或选择一个子布局</string> <string name="drawer_custom_menu_warn">你需要先创建或选择一个子布局</string>
<string name="dialog_contributor_list_title">贡献者列表</string>
<string name="ui_about_about">关于</string> <string name="ui_about_about">关于</string>
<string name="ui_about_tungsten_sub">B 站 ID:@念小六</string>
<string name="ui_about_shirosakimio_sub">B 站 ID:@ShirosakiMio</string>
<string name="ui_about_thank">鸣谢</string> <string name="ui_about_thank">鸣谢</string>
<string name="ui_about_community">社区</string>
<string name="ui_about_lib">依赖</string>
<string name="ui_about_legal">法律声明</string>
<string name="ui_about_community_developer">社区开发者</string>
<string name="ui_about_community_developer_sub">提供语言翻译及 Bug 修复</string>
<string name="ui_about_cosine_sub">提供大量技术支持</string> <string name="ui_about_cosine_sub">提供大量技术支持</string>
<string name="ui_about_legacy_sub">提升兼容性以及测试</string>
<string name="ui_about_tsaltedfishking_sub">提供 HMCL-PE 官网模板</string> <string name="ui_about_tsaltedfishking_sub">提供 HMCL-PE 官网模板</string>
<string name="ui_about_hmcl_main">HMCL 开发团队及所有贡献者</string> <string name="ui_about_hmcl_main">HMCL 开发团队及所有贡献者</string>
<string name="ui_about_hmcl_sub">本项目大量借鉴 HMCL</string> <string name="ui_about_hmcl_sub">本项目大量借鉴 HMCL</string>
@@ -1062,6 +1076,17 @@
<string name="ui_about_mcmod_sub">提供 Mod 中文名映射表与 Mod 百科</string> <string name="ui_about_mcmod_sub">提供 Mod 中文名映射表与 Mod 百科</string>
<string name="ui_about_github_main">所有通过 Issues、赞助等方式参与本项目的贡献者</string> <string name="ui_about_github_main">所有通过 Issues、赞助等方式参与本项目的贡献者</string>
<string name="ui_about_github_sub">感谢各位的建议、bug 反馈及赞助</string> <string name="ui_about_github_sub">感谢各位的建议、bug 反馈及赞助</string>
<string name="ui_about_copy_right">版权</string>
<string name="ui_about_copy_right_statement">版权所有 © 2022 Tungsten</string>
<string name="ui_about_eula">用户协议</string>
<string name="ui_about_eula_statement">点击链接以查看全文</string>
<string name="ui_about_open_source">开源</string>
<string name="ui_about_community_qq_community">QQ 频道</string>
<string name="ui_about_community_qq">QQ 群</string>
<string name="ui_about_community_discord_join">欢迎加入 Discord 讨论区,加入后请遵守讨论区规定</string>
<string name="ui_about_community_qq_community_join">欢迎加入 QQ 频道,加入后请遵守讨论区规定</string>
<string name="ui_about_community_qq_join">欢迎加入 QQ 群,加入后请遵守讨论区规定</string>
<string name="dialog_create_community_error">无法检测游戏端口号,你需启动游戏并在游戏内打开 对局域网开放 选项方能启动联机!</string> <string name="dialog_create_community_error">无法检测游戏端口号,你需启动游戏并在游戏内打开 对局域网开放 选项方能启动联机!</string>
<string name="feedback_ui_join_discord">加入官方 Discord</string> <string name="feedback_ui_join_discord">加入官方 Discord</string>
</resources> </resources>
77 changes: 75 additions & 2 deletions77
HMCLPE/src/main/res/values/strings.xml
@@ -36,12 +36,66 @@
<string name="ui_about_hmclpe_main" translatable="false">Hello Minecraft! Launcher : Pocket Edition</string> <string name="ui_about_hmclpe_main" translatable="false">Hello Minecraft! Launcher : Pocket Edition</string>
<string name="ui_about_hmclpe_sub" translatable="false">1.0.0</string> <string name="ui_about_hmclpe_sub" translatable="false">1.0.0</string>
<string name="ui_about_tungsten_main" translatable="false">Tungsten</string> <string name="ui_about_tungsten_main" translatable="false">Tungsten</string>
<string name="ui_about_tungsten_sub" translatable="false">B 站 ID:@念小六</string>
<string name="ui_about_shirosakimio_main" translatable="false">ShirosakiMio</string> <string name="ui_about_shirosakimio_main" translatable="false">ShirosakiMio</string>
<string name="ui_about_shirosakimio_sub" translatable="false">B 站 ID:@ShirosakiMio</string>
<string name="ui_about_cosine_main" translatable="false">CosineMath</string> <string name="ui_about_cosine_main" translatable="false">CosineMath</string>
<string name="ui_about_legacy_main" translatable="false">LegacyGamerHD</string>
<string name="ui_about_tsaltedfishking_main" translatable="false">TSaltedfishKing</string> <string name="ui_about_tsaltedfishking_main" translatable="false">TSaltedfishKing</string>
<string name="ui_about_bangbang93_main" translatable="false">bangbang93</string> <string name="ui_about_bangbang93_main" translatable="false">bangbang93</string>
<string name="ui_about_community_discord" translatable="false">Discord</string>
<string name="ui_about_open_source_statement" translatable="false">GPL v3 (https://github.com/Tungstend/HMCL-PE-CN)</string>
<string name="ui_about_libs_hmcl" translatable="false">HMCL</string>
<string name="ui_about_libs_hmcl_sec" translatable="false">Copyright (c) 2022 huangyuhui.</string>
<string name="ui_about_libs_hmcl_thi" translatable="false">Licensed under the GPL 3.</string>
<string name="ui_about_libs_boat" translatable="false">Boat</string>
<string name="ui_about_libs_boat_sec" translatable="false">Copyright (c) 2021 AOF-Dev.</string>
<string name="ui_about_libs_boat_thi" translatable="false">Licensed under the GPL 2.</string>
<string name="ui_about_libs_pojav" translatable="false">PojavLauncher</string>
<string name="ui_about_libs_pojav_sec" translatable="false">Copyright (c) 2022 PojavLauncherTeam.</string>
<string name="ui_about_libs_pojav_thi" translatable="false">Licensed under the GPL 3.</string>
<string name="ui_about_libs_hin2n" translatable="false">Hin2n</string>
<string name="ui_about_libs_hin2n_sec" translatable="false">Copyright (c) 2022 switch-iot.</string>
<string name="ui_about_libs_hin2n_thi" translatable="false">Licensed under the GPL 3.</string>
<string name="ui_about_libs_gson" translatable="false">Gson</string>
<string name="ui_about_libs_gson_sec" translatable="false">Copyright 2008 Google Inc.</string>
<string name="ui_about_libs_gson_thi" translatable="false">Licensed under the Apache 2.0 License.</string>
<string name="ui_about_libs_theme" translatable="false">app-theme-engine</string>
<string name="ui_about_libs_theme_sec" translatable="false">Copyright (c) 2016 naman14.</string>
<string name="ui_about_libs_theme_thi" translatable="false">Licensed under the Apache 2.0 License.</string>
<string name="ui_about_libs_okhttp" translatable="false">okhttp</string>
<string name="ui_about_libs_okhttp_sec" translatable="false">Copyright (c) 2022 square.</string>
<string name="ui_about_libs_okhttp_thi" translatable="false">Licensed under the Apache 2.0 License.</string>
<string name="ui_about_libs_nano" translatable="false">nanohttpd</string>
<string name="ui_about_libs_nano_sec" translatable="false">Copyright (c) 2016 NanoHttpd.</string>
<string name="ui_about_libs_nano_thi" translatable="false">Licensed under the BSD-3 Clause License.</string>
<string name="ui_about_libs_crash" translatable="false">CustomActivityOnCrash</string>
<string name="ui_about_libs_crash_sec" translatable="false">Copyright (c) 2022 Ereza.</string>
<string name="ui_about_libs_crash_thi" translatable="false">Licensed under the Apache 2.0 License.</string>
<string name="ui_about_libs_commonc" translatable="false">commons-compress</string>
<string name="ui_about_libs_commonc_sec" translatable="false">Copyright (c) 2022 apache.</string>
<string name="ui_about_libs_commomc_thi" translatable="false">Licensed under the Apache 2.0 License.</string>
<string name="ui_about_libs_commonl" translatable="false">commons-lang3</string>
<string name="ui_about_libs_commonl_sec" translatable="false">Copyright (c) 2022 apache.</string>
<string name="ui_about_libs_commonl_thi" translatable="false">Licensed under the Apache 2.0 License.</string>
<string name="ui_about_libs_opennbt" translatable="false">OpenNBT</string>
<string name="ui_about_libs_opennbt_sec" translatable="false">Copyright (c) 2013-2021 Steveice10.</string>
<string name="ui_about_libs_opennbt_thi" translatable="false">Licensed under the MIT License.</string>
<string name="ui_about_libs_color" translatable="false">ColorPicker</string>
<string name="ui_about_libs_color_sec" translatable="false">Copyright (c) 2020 jaredrummler.</string>
<string name="ui_about_libs_color_thi" translatable="false">Licensed under the Apache 2.0 License.</string>
<string name="ui_about_libs_device" translatable="false">AndroidDeviceName</string>
<string name="ui_about_libs_device_sec" translatable="false">Copyright (c) 2021 jaredrummler.</string>
<string name="ui_about_libs_device_thi" translatable="false">Licensed under the Apache 2.0 License.</string>
<string name="ui_about_libs_jsoup" translatable="false">jsoup</string>
<string name="ui_about_libs_jsoup_sec" translatable="false">Copyright (c) 2022 jhy.</string>
<string name="ui_about_libs_jsoup_thi" translatable="false">Licensed under the MIT License.</string>
<string name="ui_about_libs_pool" translatable="false">Constant Pool Scanner</string>
<string name="ui_about_libs_pool_sec" translatable="false">Copyright 1997-2010 Oracle and/or its affiliates.</string>
<string name="ui_about_libs_pool_thi" translatable="false">Licensed under the GPL 2 or the CDDL.</string>
<string name="contributor_heo_bino" translatable="false">Heo_Bino</string>
<string name="contributor_stefma" translatable="false">Stefma</string>
<string name="contributor_matheus" translatable="false">MatheusTGP</string>
<string name="storage_permissions_remind">Please grant read and write permissions to the launcher, otherwise it may not operate normally</string> <string name="storage_permissions_remind">Please grant read and write permissions to the launcher, otherwise it may not operate normally</string>
<string name="dialog_unknown_error_title">Warning</string> <string name="dialog_unknown_error_title">Warning</string>
@@ -863,8 +917,22 @@
<string name="dialog_create_rocker_style_name_exist">The name already exists</string> <string name="dialog_create_rocker_style_name_exist">The name already exists</string>
<string name="dialog_create_rocker_style_positive">Create</string> <string name="dialog_create_rocker_style_positive">Create</string>
<string name="dialog_create_rocker_style_negative">Cancel</string> <string name="dialog_create_rocker_style_negative">Cancel</string>
<string name="ui_about_tungsten_sub">\@念小六 on Bilibili</string>
<string name="ui_about_shirosakimio_sub">\@ShirosakiMio on Bilibili</string>
<string name="dialog_contributor_list_title">Contributor list</string>
<string name="ui_about_thank">Thanks to</string> <string name="ui_about_thank">Thanks to</string>
<string name="ui_about_community">Community</string>
<string name="ui_about_community_qq_community">QQ Channel</string>
<string name="ui_about_community_qq">QQ Group</string>
<string name="ui_about_community_discord_join">Join our Discord community!</string>
<string name="ui_about_community_qq_community_join">Join our QQ channel!</string>
<string name="ui_about_community_qq_join">Join our QQ group!</string>
<string name="ui_about_lib">Third-party Libraries</string>
<string name="ui_about_legal">Legal Acknowledgement</string>
<string name="ui_about_community_developer">Community developers</string>
<string name="ui_about_community_developer_sub">For providing language translations and some other bug fix.</string>
<string name="ui_about_cosine_sub">For providing a lot of technical support.</string> <string name="ui_about_cosine_sub">For providing a lot of technical support.</string>
<string name="ui_about_legacy_sub">For improving compatibility and testing.</string>
<string name="ui_about_tsaltedfishking_sub">For providing HMCL-PE official website template.</string> <string name="ui_about_tsaltedfishking_sub">For providing HMCL-PE official website template.</string>
<string name="ui_about_hmcl_main">HMCL development team and all contributors</string> <string name="ui_about_hmcl_main">HMCL development team and all contributors</string>
<string name="ui_about_hmcl_sub">This project draws heavily on HMCL.</string> <string name="ui_about_hmcl_sub">This project draws heavily on HMCL.</string>
@@ -875,6 +943,11 @@
<string name="ui_about_mcmod_sub">For providing Chinese translations and wiki for various mods.</string> <string name="ui_about_mcmod_sub">For providing Chinese translations and wiki for various mods.</string>
<string name="ui_about_github_main">All contributors who participated in this project through Issues, sponsorship, etc.</string> <string name="ui_about_github_main">All contributors who participated in this project through Issues, sponsorship, etc.</string>
<string name="ui_about_github_sub">Thank you for your suggestions, bug feedback and sponsorship.</string> <string name="ui_about_github_sub">Thank you for your suggestions, bug feedback and sponsorship.</string>
<string name="ui_about_copy_right">Copyright</string>
<string name="ui_about_copy_right_statement">Copyright © 2022 Tungsten</string>
<string name="ui_about_eula">EULA</string>
<string name="ui_about_eula_statement">Click on this link for full text.</string>
<string name="ui_about_open_source">Open Source</string>
<string name="dialog_child_visibility_title">Visbility of child layout</string> <string name="dialog_child_visibility_title">Visbility of child layout</string>
<string name="dialog_child_visibility_positive">OK</string> <string name="dialog_child_visibility_positive">OK</string>
<string name="dialog_select_keycode_keyboard">Keyboard</string> <string name="dialog_select_keycode_keyboard">Keyboard</string>
2 changes: 1 addition & 1 deletion2
Hin2n/build.gradle
@@ -39,7 +39,7 @@ android {
dependencies { dependencies {
implementation 'org.greenrobot:eventbus:latest.integration' implementation 'org.greenrobot:eventbus:latest.integration'
implementation 'org.greenrobot:greendao:3.2.0' implementation 'org.greenrobot:greendao:3.2.0'
implementation 'androidx.appcompat:appcompat:1.5.0' implementation 'androidx.appcompat:appcompat:1.5.1'
implementation 'com.google.android.material:material:1.6.1' implementation 'com.google.android.material:material:1.6.1'
testImplementation 'junit:junit:4.13.2' testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.ext:junit:1.1.3'
4 changes: 2 additions & 2 deletions4
PojavLauncher/build.gradle
@@ -33,8 +33,8 @@ android {
dependencies { dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar']) implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'commons-codec:commons-codec:1.15' implementation 'commons-codec:commons-codec:1.15'
implementation 'com.google.code.gson:gson:2.8.9' implementation 'com.google.code.gson:gson:2.9.0'
implementation 'androidx.appcompat:appcompat:1.5.0' implementation 'androidx.appcompat:appcompat:1.5.1'
implementation 'com.google.android.material:material:1.6.1' implementation 'com.google.android.material:material:1.6.1'
testImplementation 'junit:junit:4.13.2' testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.ext:junit:1.1.3'
2 changes: 1 addition & 1 deletion2
ZipTools/build.gradle
@@ -27,7 +27,7 @@ android {
dependencies { dependencies {
implementation 'androidx.appcompat:appcompat:1.5.0' implementation 'androidx.appcompat:appcompat:1.5.1'
implementation 'com.google.android.material:material:1.6.1' implementation 'com.google.android.material:material:1.6.1'
testImplementation 'junit:junit:4.13.2' testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.ext:junit:1.1.3'(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) { /Code for Android Nougat (version 7) and above
- name: Upload a Build Artifact
uses: actions/[email protected]
with:
# Artifact name
name: # optional, default is artifact
# A file, directory or wildcard pattern that describes what to upload
path:
# The desired behavior if no files are found using the provided path.
Available Options:
warn: Output a warning but do not fail the action
error: Fail the action with an error message
ignore: Do not output any warnings or errors, the action does not fail
if-no-files-found: # optional, default is warn
# Duration after which artifact will expire in days. 0 means using default retention.
Minimum 1 day. Maximum 90 days unless changed from the repository settings page.
retention-days: # optional
- name: Setup Node.js environment
uses: actions/[email protected]
with:
# Set always-auth in npmrc.
always-auth: # optional, default is false
# Version Spec of the version to use. Examples: 12.x, 10.15.1, >=10.15.0.
node-version: # optional
# File containing the version Spec of the version to use. Examples: .nvmrc, .node-version, .tool-versions.
node-version-file: # optional
# Target architecture for Node to use. Examples: x86, x64. Will use system architecture by default.
architecture: # optional
# Set this option if you want the action to check for the latest available version that satisfies the version spec.
check-latest: # optional
# Optional registry to set up for auth. Will set the registry in a project level .npmrc and .yarnrc file, and set up auth to read in from env.NODE_AUTH_TOKEN.
registry-url: # optional
# Optional scope for authenticating against scoped registries. Will fall back to the repository owner when using the GitHub Packages registry (https://npm.pkg.github.com/).
scope: # optional
# Used to pull node distributions from node-versions. Since there's a default, this is typically not supplied by the user. When running this action on github.com, the default value is sufficient. When running on GHES, you can pass a personal access token for github.com if you are experiencing rate limiting.
token: # optional, default is ${{ github.server_url == 'https://github.com' && github.token || '' }}
# Used to specify a package manager for caching in the default directory. Supported values: npm, yarn, pnpm.
cache: # optional
# Used to specify the path to a dependency file: package-lock.json, yarn.lock, etc. Supports wildcards or a list of file names for caching multiple dependencies.
cache-dependency-path: # optional
- name: Setup Java JDK
uses: actions/[email protected]
with:
# The Java version to set up. Takes a whole or semver Java version. See examples of supported syntax in README file
java-version: # optional
# The path to the `.java-version` file. See examples of supported syntax in README file
java-version-file: # optional
# Java distribution. See the list of supported distributions in README file
distribution:
# The package type (jdk, jre, jdk+fx, jre+fx)
java-package: # optional, default is jdk
# The architecture of the package (defaults to the action runner's architecture)
architecture: # optional
# Path to where the compressed JDK is located
jdkFile: # optional
# Set this option if you want the action to check for the latest available version that satisfies the version spec
check-latest: # optional
# ID of the distributionManagement repository in the pom.xml file. Default is `github`
server-id: # optional, default is github
# Environment variable name for the username for authentication to the Apache Maven repository. Default is $GITHUB_ACTOR
server-username: # optional, default is GITHUB_ACTOR
# Environment variable name for password or token for authentication to the Apache Maven repository. Default is $GITHUB_TOKEN
server-password: # optional, default is GITHUB_TOKEN
# Path to where the settings.xml file will be written. Default is ~/.m2.
settings-path: # optional
# Overwrite the settings.xml file if it exists. Default is "true".
overwrite-settings: # optional, default is true
# GPG private key to import. Default is empty string.
gpg-private-key: # optional
# Environment variable name for the GPG private key passphrase. Default is $GPG_PASSPHRASE.
gpg-passphrase: # optional
# Name of the build platform to cache dependencies. It can be "maven", "gradle" or "sbt".
cache: # optional
# Workaround to pass job status to post job step. This variable is not intended for manual setting
job-status: # optional, default is ${{ job.status }}
# The token used to authenticate when fetching version manifests hosted on github.com, such as for the Microsoft Build of OpenJDK. When running this action on github.com, the default value is sufficient. When running on GHES, you can pass a personal access token for github.com if you are experiencing rate limiting.
token: # optional, default is ${{ github.server_url == 'https://github.com' && github.token || '' }}
# Name of Maven Toolchain ID if the default name of "${distribution}_${java-version}" is not wanted. See examples of supported syntax in Advanced Usage file
mvn-toolchain-id: # optional
# Name of Maven Toolchain Vendor if the default name of "${distribution}" is not wanted. See examples of supported syntax in Advanced Usage file
mvn-toolchain-vendor: # optional
- name: Download a Build Artifact
uses: actions/[email protected]
with:
# Artifact name
name: # optional
# Destination path
path: # optional
- name: Cache
uses: actions/[email protected]
with:
# A list of files, directories, and wildcard patterns to cache and restore
path:
# An explicit key for restoring and saving the cache
key:
# An ordered list of keys to use for restoring stale cache if no cache hit occurred for key. Note `cache-hit` returns false in this case.
restore-keys: # optional
# The chunk size used to split up large files during upload, in bytes
upload-chunk-size: # optional
# An optional boolean when enabled, allows windows runners to save or restore caches that can be restored or saved respectively on other platforms
enableCrossOsArchive: # optional, default is false
# Fail the workflow if cache entry is not found
fail-on-cache-miss: # optional, default is false
# Check if a cache entry exists for the given input(s) (key, restore-keys) without downloading the cache
lookup-only: # optional, default is false
- name: Upload a Build Artifact
uses: actions/[email protected]
with:
# Artifact name
name: # optional, default is artifact
# A file, directory or wildcard pattern that describes what to upload
path:
# The desired behavior if no files are found using the provided path.
Available Options:
warn: Output a warning but do not fail the action
error: Fail the action with an error message
ignore: Do not output any warnings or errors, the action does not fail
if-no-files-found: # optional, default is warn
# Duration after which artifact will expire in days. 0 means using default retention.
Minimum 1 day. Maximum 90 days unless changed from the repository settings page.
retention-days: # optiona
- name: Setup .NET Core SDK
uses: actions/[email protected]
with:
# Optional SDK version(s) to use. If not provided, will install global.json version when available. Examples: 2.2.104, 3.1, 3.1.x, 3.x, 6.0.2xx
dotnet-version: # optional
# Optional quality of the build. The possible values are: daily, signed, validated, preview, ga.
dotnet-quality: # optional
# Optional global.json location, if your global.json isn't located in the root of the repo.
global-json-file: # optional
# Optional package source for which to set up authentication. Will consult any existing NuGet.config in the root of the repo and provide a temporary NuGet.config using the NUGET_AUTH_TOKEN environment variable as a ClearTextPassword
source-url: # optional
# Optional OWNER for using packages from GitHub Package Registry organizations/users other than the current repository's owner. Only used if a GPR URL is also provided in source-url
owner: # optional
# Optional NuGet.config location, if your NuGet.config isn't located in the root of the repo.
config-file: # optional
# Optional input to enable caching of the NuGet global-packages folder
cache: # optional
# Used to specify the path to a dependency file: packages.lock.json. Supports wildcards or a list of file names for caching multiple dependencies.
cache-dependency-path: # optional
- name: First interaction
uses: actions/[email protected]
with:
# Token for the repository. Can be passed in using {{ secrets.GITHUB_TOKEN }}
repo-token:
# Comment to post on an individual's first issue
issue-message: # optional
# Comment to post on an individual's first pull request
pr-message: # optional
- name: Close Stale Issues
uses: actions/[email protected]
with:
# Token for the repository. Can be passed in using `{{ secrets.GITHUB_TOKEN }}`.
repo-token: # optional, default is ${{ github.token }}
# The message to post on the issue when tagging it. If none provided, will not mark issues stale.
stale-issue-message: # optional
# The message to post on the pull request when tagging it. If none provided, will not mark pull requests stale.
stale-pr-message: # optional
# The message to post on the issue when closing it. If none provided, will not comment when closing an issue.
close-issue-message: # optional
# The message to post on the pull request when closing it. If none provided, will not comment when closing a pull requests.
close-pr-message: # optional
# The number of days old an issue or a pull request can be before marking it stale. Set to -1 to never mark issues or pull requests as stale automatically.
days-before-stale: # optional, default is 60
# The number of days old an issue can be before marking it stale. Set to -1 to never mark issues as stale automatically. Override "days-before-stale" option regarding only the issues.
days-before-issue-stale: # optional
# The number of days old a pull request can be before marking it stale. Set to -1 to never mark pull requests as stale automatically. Override "days-before-stale" option regarding only the pull requests.
days-before-pr-stale: # optional
# The number of days to wait to close an issue or a pull request after it being marked stale. Set to -1 to never close stale issues or pull requests.
days-before-close: # optional, default is 7
# The number of days to wait to close an issue after it being marked stale. Set to -1 to never close stale issues. Override "days-before-close" option regarding only the issues.
days-before-issue-close: # optional
# The number of days to wait to close a pull request after it being marked stale. Set to -1 to never close stale pull requests. Override "days-before-close" option regarding only the pull requests.
days-before-pr-close: # optional
# The label to apply when an issue is stale.
stale-issue-label: # optional, default is Stale
# The label to apply when an issue is closed.
close-issue-label: # optional
# The labels that mean an issue is exempt from being marked stale. Separate multiple labels with commas (eg. "label1,label2").
exempt-issue-labels: # optional, default is
# The label to apply when a pull request is stale.
stale-pr-label: # optional, default is Stale
# The label to apply when a pull request is closed.
close-pr-label: # optional
# The labels that mean a pull request is exempt from being marked as stale. Separate multiple labels with commas (eg. "label1,label2").
exempt-pr-labels: # optional, default is
# The milestones that mean an issue or a pull request is exempt from being marked as stale. Separate multiple milestones with commas (eg. "milestone1,milestone2").
exempt-milestones: # optional, default is
# The milestones that mean an issue is exempt from being marked as stale. Separate multiple milestones with commas (eg. "milestone1,milestone2"). Override "exempt-milestones" option regarding only the issues.
exempt-issue-milestones: # optional, default is
# The milestones that mean a pull request is exempt from being marked as stale. Separate multiple milestones with commas (eg. "milestone1,milestone2"). Override "exempt-milestones" option regarding only the pull requests.
exempt-pr-milestones: # optional, default is
# Exempt all issues and pull requests with milestones from being marked as stale. Default to false.
exempt-all-milestones: # optional, default is false
# Exempt all issues with milestones from being marked as stale. Override "exempt-all-milestones" option regarding only the issues.
exempt-all-issue-milestones: # optional, default is
# Exempt all pull requests with milestones from being marked as stale. Override "exempt-all-milestones" option regarding only the pull requests.
exempt-all-pr-milestones: # optional, default is
# Only issues or pull requests with all of these labels are checked if stale. Defaults to `` (disabled) and can be a comma-separated list of labels.
only-labels: # optional, default is
# Only issues or pull requests with at least one of these labels are checked if stale. Defaults to `` (disabled) and can be a comma-separated list of labels.
any-of-labels: # optional, default is
# Only issues with at least one of these labels are checked if stale. Defaults to `` (disabled) and can be a comma-separated list of labels. Override "any-of-labels" option regarding only the issues.
any-of-issue-labels: # optional, default is
# Only pull requests with at least one of these labels are checked if stale. Defaults to `` (disabled) and can be a comma-separated list of labels. Override "any-of-labels" option regarding only the pull requests.
any-of-pr-labels: # optional, default is
# Only issues with all of these labels are checked if stale. Defaults to `[]` (disabled) and can be a comma-separated list of labels. Override "only-labels" option regarding only the issues.
only-issue-labels: # optional, default is
# Only pull requests with all of these labels are checked if stale. Defaults to `[]` (disabled) and can be a comma-separated list of labels. Override "only-labels" option regarding only the pull requests.
only-pr-labels: # optional, default is
# The maximum number of operations per run, used to control rate limiting (GitHub API CRUD related).
operations-per-run: # optional, default is 30
# Remove stale labels from issues and pull requests when they are updated or commented on.
remove-stale-when-updated: # optional, default is true
# Remove stale labels from issues when they are updated or commented on. Override "remove-stale-when-updated" option regarding only the issues.
remove-issue-stale-when-updated: # optional, default is
# Remove stale labels from pull requests when they are updated or commented on. Override "remove-stale-when-updated" option regarding only the pull requests.
remove-pr-stale-when-updated: # optional, default is
# Run the processor in debug mode without actually performing any operations on live issues.
debug-only: # optional, default is false
# The order to get issues or pull requests. Defaults to false, which is descending.
ascending: # optional, default is false
# Delete the git branch after closing a stale pull request.
delete-branch: # optional, default is false
# The date used to skip the stale action on issue/pull request created before it (ISO 8601 or RFC 2822).
start-date: # optional, default is
# The assignees which exempt an issue or a pull request from being marked as stale. Separate multiple assignees with commas (eg. "user1,user2").
exempt-assignees: # optional, default is
# The assignees which exempt an issue from being marked as stale. Separate multiple assignees with commas (eg. "user1,user2"). Override "exempt-assignees" option regarding only the issues.
exempt-issue-assignees: # optional, default is
# The assignees which exempt a pull request from being marked as stale. Separate multiple assignees with commas (eg. "user1,user2"). Override "exempt-assignees" option regarding only the pull requests.
exempt-pr-assignees: # optional, default is
# Exempt all issues and pull requests with assignees from being marked as stale. Default to false.
exempt-all-assignees: # optional, default is false
# Exempt all issues with assignees from being marked as stale. Override "exempt-all-assignees" option regarding only the issues.
exempt-all-issue-assignees: # optional, default is
# Exempt all pull requests with assignees from being marked as stale. Override "exempt-all-assignees" option regarding only the pull requests.
exempt-all-pr-assignees: # optional, default is
# Exempt draft pull requests from being marked as stale. Default to false.
exempt-draft-pr: # optional, default is false
# Display some statistics at the end regarding the stale workflow (only when the logs are enabled).
enable-statistics: # optional, default is true
# A comma delimited list of labels to add when a stale issue or pull request receives activity and has the stale-issue-label or stale-pr-label removed from it.
labels-to-add-when-unstale: # optional, default is
# A comma delimited list of labels to remove when a stale issue or pull request receives activity and has the stale-issue-label or stale-pr-label removed from it.
labels-to-remove-when-unstale: # optional, default is
# Any update (update/comment) can reset the stale idle time on the issues and pull requests.
ignore-updates: # optional, default is false
# Any update (update/comment) can reset the stale idle time on the issues. Override "ignore-updates" option regarding only the issues.
ignore-issue-updates: # optional, default is
# Any update (update/comment) can reset the stale idle time on the pull requests. Override "ignore-updates" option regarding only the pull requests.
ignore-pr-updates: # optional, default is