Custom apk which created by bash file installation trouble: App not installed as package appears to be invalid

I created bash file which realized simple logic: minimum java code:

MAIN_ACTIVITY_CODE="
package $PACKAGE_NAME;
import android.app.Activity;
import android.os.Bundle;
public class $MAIN_ACTIVITY extends Activity {
    u/Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Тут можна додати ваш код
    }
}
"

Minimum sdk version: 21
Targe sdk ver: 30
Here is manifest

MANIFEST_CONTENT="
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="$PACKAGE_NAME">
    <uses-sdk android:minSdkVersion="$MIN_SDK_VERSION" android:targetSdkVersion="$TARGET_SDK_VERSION" />
    <application
        android:allowBackup="true"
        android:icon="$IC_LAUNCHER"
        android:label="$APP_NAME"
        android:roundIcon="$IC_LAUNCHER_ROUND"
        android:supportsRtl="true"
        android:theme="$THEME">
        <activity android:name=".$MAIN_ACTIVITY">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>
"

Also i created simple files which realised res files: colors.xml, themes.xml, icons:

THEME_CONTENT="
<resources>
    <style name="Theme.MyApp" parent="android:Theme.Material">
        <item name="android:colorPrimary">@android:color/holo_blue_bright</item>
        <item name="android:colorPrimaryDark">@android:color/holo_blue_dark</item>
        <item name="android:colorAccent">@android:color/holo_blue_light</item>
    </style>
</resources>
"
COLOR_CONTENT="<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="myapp_purple_200">#FFBB86FC</color>
    <color name="myapp_purple_500">#FF6200EE</color>
    <color name="myapp_purple_700">#FF3700B3</color>
    <color name="myapp_teal_200">#FF03DAC5</color>
    <color name="myapp_teal_700">#FF018786</color>
    <color name="myapp_black">#FF000000</color>
    <color name="myapp_white">#FFFFFFFF</color>
</resources>"
# Проста XML картинка для лого
IC_LAUNCHER_XML="<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="108dp"
    android:height="108dp"
    android:viewportWidth="108"
    android:viewportHeight="108">
    <path
        android:fillColor="#FF6200EE"
        android:pathData="M54,0c29.8,0 54,24.2 54,54s-24.2,54 -54,54S0,83.8 0,54 24.2,0 54,0z"/>
</vector>"
IC_LAUNCHER_ROUND_XML="<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="108dp"
    android:height="108dp"
    android:viewportWidth="108"
    android:viewportHeight="108">
    <path
        android:fillColor="#FF3700B3"
        android:pathData="M54,0c29.8,0 54,24.2 54,54s-24.2,54 -54,54S0,83.8 0,54 24.2,0 54,0z"/>
</vector>"

But after compiling i have an error: App not installed as package appears to be invalid.
Here’s full bash code for compiling and creating simple apk:

#!/data/data/com.termux/files/usr/bin/sh

# Додайте PATH
export PATH=$PATH:/data/data/com.termux/files/usr/bin

echo "=== Starting script ==="

pkg update -y
pkg upgrade -y

echo "=== Install required packages ==="
pkg install -y openjdk-17 dx ecj aapt2 termux-api wget

echo "=== Download lib++ file ==="
if [ -f "/storage/emulated/0/Documents/GenCoreLite/scripts/libc++_26b_aarch64.deb" ]; then
  echo "файл lib++26b_aarch64.deb присутній"
else
  chmod 777 /storage/emulated/0/Download/
  wget -P /storage/emulated/0/Documents/GenCoreLite/scripts https://packages-cf.termux.dev/apt/termux-main/pool/main/libc/libc%2B%2B/libc%2B%2B_26b_aarch64.deb
  dpkg -i /storage/emulated/0/Documents/GenCoreLite/scripts/libc++_26b_aarch64.deb
fi

echo "=== Update packages again ==="
pkg update -y
pkg upgrade -y

# Параметри
APP_NAME="MyApp"
PACKAGE_NAME="com.example.myapp"
MAIN_ACTIVITY="MainActivity"
SOURCE_DIR="/storage/emulated/0/Documents/GenCoreLite/scripts/src"
BUILD_DIR="/storage/emulated/0/Documents/GenCoreLite/scripts/build"
OUTPUT_DIR="/storage/emulated/0/Documents/GenCoreLite/scripts/output"
RES_DIR="/storage/emulated/0/Documents/GenCoreLite/scripts/res"
MANIFEST_FILE="/storage/emulated/0/Documents/GenCoreLite/scripts/AndroidManifest.xml"
MIN_SDK_VERSION="21" # Мінімальна версія SDK
TARGET_SDK_VERSION="30" # Цільова версія SDK
MAIN_ACTIVITY_CODE="
package $PACKAGE_NAME;

import android.app.Activity;
import android.os.Bundle;

public class $MAIN_ACTIVITY extends Activity {
    u/Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Тут можна додати ваш код
    }
}
"

echo "=== Parameters set ==="

IC_LAUNCHER="@mipmap/ic_launcher"
IC_LAUNCHER_ROUND="@mipmap/ic_launcher_round"
THEME="@style/Theme.MyApp"

MANIFEST_CONTENT="
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="$PACKAGE_NAME">
    <uses-sdk android:minSdkVersion="$MIN_SDK_VERSION" android:targetSdkVersion="$TARGET_SDK_VERSION" />
    <application
        android:allowBackup="true"
        android:icon="$IC_LAUNCHER"
        android:label="$APP_NAME"
        android:roundIcon="$IC_LAUNCHER_ROUND"
        android:supportsRtl="true"
        android:theme="$THEME">
        <activity android:name=".$MAIN_ACTIVITY">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>
"

THEME_CONTENT="
<resources>
    <style name="Theme.MyApp" parent="android:Theme.Material">
        <item name="android:colorPrimary">@android:color/holo_blue_bright</item>
        <item name="android:colorPrimaryDark">@android:color/holo_blue_dark</item>
        <item name="android:colorAccent">@android:color/holo_blue_light</item>
    </style>
</resources>
"

COLOR_CONTENT="<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="myapp_purple_200">#FFBB86FC</color>
    <color name="myapp_purple_500">#FF6200EE</color>
    <color name="myapp_purple_700">#FF3700B3</color>
    <color name="myapp_teal_200">#FF03DAC5</color>
    <color name="myapp_teal_700">#FF018786</color>
    <color name="myapp_black">#FF000000</color>
    <color name="myapp_white">#FFFFFFFF</color>
</resources>"

# Проста XML картинка для лого
IC_LAUNCHER_XML="<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="108dp"
    android:height="108dp"
    android:viewportWidth="108"
    android:viewportHeight="108">
    <path
        android:fillColor="#FF6200EE"
        android:pathData="M54,0c29.8,0 54,24.2 54,54s-24.2,54 -54,54S0,83.8 0,54 24.2,0 54,0z"/>
</vector>"

IC_LAUNCHER_ROUND_XML="<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="108dp"
    android:height="108dp"
    android:viewportWidth="108"
    android:viewportHeight="108">
    <path
        android:fillColor="#FF3700B3"
        android:pathData="M54,0c29.8,0 54,24.2 54,54s-24.2,54 -54,54S0,83.8 0,54 24.2,0 54,0z"/>
</vector>"

echo "=== Directories and files setup ==="

# Створення необхідних директорій
mkdir -p $SOURCE_DIR/$PACKAGE_NAME
chmod 777 $SOURCE_DIR/$PACKAGE_NAME

mkdir -p $BUILD_DIR
chmod 777 $BUILD_DIR

mkdir -p $OUTPUT_DIR
chmod 777 $OUTPUT_DIR

mkdir -p $RES_DIR/mipmap
chmod 777 $RES_DIR/mipmap

mkdir -p $RES_DIR/values
chmod 777 $RES_DIR/values

echo "=== Directories created ==="

# Створення основного Java файлу
echo "$MAIN_ACTIVITY_CODE" > $SOURCE_DIR/$PACKAGE_NAME/$MAIN_ACTIVITY.java

# Створення AndroidManifest.xml
echo "$MANIFEST_CONTENT" > $MANIFEST_FILE

# Створення файлів теми
echo "$THEME_CONTENT" > $RES_DIR/values/themes.xml
echo "$COLOR_CONTENT" > $RES_DIR/values/colors.xml

# Створення placeholder іконок
echo "$IC_LAUNCHER_XML" > $RES_DIR/mipmap/ic_launcher.xml
echo "$IC_LAUNCHER_ROUND_XML" > $RES_DIR/mipmap/ic_launcher_round.xml

echo "=== Files created ==="

# Перевірка наявності файлів
echo "=== Checking files ==="
ls -R $SOURCE_DIR
ls -R $RES_DIR
cat $MANIFEST_FILE

echo "=== Compiling java files ==="
ecj -d $BUILD_DIR $SOURCE_DIR/$PACKAGE_NAME/$MAIN_ACTIVITY.java
if [ $? -ne 0 ]; then
    echo "Compiling error (java files)"
    exit 1
fi

echo "=== Converting classes into DEX file ==="
dx --dex --output=$BUILD_DIR/classes.dex $BUILD_DIR
if [ $? -ne 0 ]; then
    echo "Помилка перетворення класів в DEX файл"
    exit 1
fi

echo "=== Creating .flat files ==="
aapt2 compile --dir $RES_DIR -o $BUILD_DIR/res.zip
if [ $? -ne 0 ];then
    echo "Помилка компіляції ресурсів"
    exit 1
fi
echo "=== linking res and creating apk files ==="
aapt2 link -o $OUTPUT_DIR/$APP_NAME-unsigned.apk -I $PREFIX/share/aapt/android.jar --manifest $MANIFEST_FILE -R $BUILD_DIR/res.zip --min-sdk-version $MIN_SDK_VERSION --target-sdk-version $TARGET_SDK_VERSION --auto-add-overlay
if [ $? -ne 0 ];then
    echo "Помилка створення APK файлу"
    exit 1
fi

echo "=== adding Dex in APK ==="
aapt add $OUTPUT_DIR/$APP_NAME-unsigned.apk $BUILD_DIR/classes.dex
if [ $? -ne 0 ];then
    echo "Помилка додавання DEX файлу в APK"
    exit 1
fi

# Перевірка, чи вже існує підписаний APK файл
SIGNED_APK="$OUTPUT_DIR/$APP_NAME.apk"
if [ -f $SIGNED_APK ]; then
    echo "Видалення старого підписаного APK файла"
    rm $SIGNED_APK
fi

# Підписання APK файлу
echo "=== Generating key for signing APK==="
keytool -genkey -v -keystore $OUTPUT_DIR/my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000 -storepass password -keypass password -dname "CN=MyName, OU=MyOrg, O=MyCompany, L=MyCity, S=MyState, C=MyCountry"
if [ $? -ne 0 ];then
    echo "Помилка генерації ключа для підписання APK"
    exit 1
fi

echo "=== Sign APK==="
apksigner sign --ks $OUTPUT_DIR/my-release-key.keystore --ks-key-alias my-key-alias --ks-pass pass:password --key-pass pass:password --out $SIGNED_APK $OUTPUT_DIR/$APP_NAME-unsigned.apk
if [ $? -ne 0 ];then
    echo "Помилка підписання APK файлу"
    exit 1
fi

# Очищення
rm -rf $BUILD_DIR
rm $OUTPUT_DIR/$APP_NAME-unsigned.apk

echo "APK створено та підписано: $SIGNED_APK"

echo "=== Cheking APK на помилки ==="
apksigner verify $SIGNED_APK
if [ $? -ne 0 ];then
    echo "APK файл має помилки"
    exit 1
fi

echo "=== APK файл успішно створено та перевірено ==="

How i can fix trouble App not installed as package appears to be invalid?

Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa Dịch vụ tổ chức sự kiện 5 sao Thông tin về chúng tôi Dịch vụ sinh nhật bé trai Dịch vụ sinh nhật bé gái Sự kiện trọn gói Các tiết mục giải trí Dịch vụ bổ trợ Tiệc cưới sang trọng Dịch vụ khai trương Tư vấn tổ chức sự kiện Hình ảnh sự kiện Cập nhật tin tức Liên hệ ngay Thuê chú hề chuyên nghiệp Tiệc tất niên cho công ty Trang trí tiệc cuối năm Tiệc tất niên độc đáo Sinh nhật bé Hải Đăng Sinh nhật đáng yêu bé Khánh Vân Sinh nhật sang trọng Bích Ngân Tiệc sinh nhật bé Thanh Trang Dịch vụ ông già Noel Xiếc thú vui nhộn Biểu diễn xiếc quay đĩa Dịch vụ tổ chức tiệc uy tín Khám phá dịch vụ của chúng tôi Tiệc sinh nhật cho bé trai Trang trí tiệc cho bé gái Gói sự kiện chuyên nghiệp Chương trình giải trí hấp dẫn Dịch vụ hỗ trợ sự kiện Trang trí tiệc cưới đẹp Khởi đầu thành công với khai trương Chuyên gia tư vấn sự kiện Xem ảnh các sự kiện đẹp Tin mới về sự kiện Kết nối với đội ngũ chuyên gia Chú hề vui nhộn cho tiệc sinh nhật Ý tưởng tiệc cuối năm Tất niên độc đáo Trang trí tiệc hiện đại Tổ chức sinh nhật cho Hải Đăng Sinh nhật độc quyền Khánh Vân Phong cách tiệc Bích Ngân Trang trí tiệc bé Thanh Trang Thuê dịch vụ ông già Noel chuyên nghiệp Xem xiếc khỉ đặc sắc Xiếc quay đĩa thú vị
Trang chủ Giới thiệu Sinh nhật bé trai Sinh nhật bé gái Tổ chức sự kiện Biểu diễn giải trí Dịch vụ khác Trang trí tiệc cưới Tổ chức khai trương Tư vấn dịch vụ Thư viện ảnh Tin tức - sự kiện Liên hệ Chú hề sinh nhật Trang trí YEAR END PARTY công ty Trang trí tất niên cuối năm Trang trí tất niên xu hướng mới nhất Trang trí sinh nhật bé trai Hải Đăng Trang trí sinh nhật bé Khánh Vân Trang trí sinh nhật Bích Ngân Trang trí sinh nhật bé Thanh Trang Thuê ông già Noel phát quà Biểu diễn xiếc khỉ Xiếc quay đĩa
Thiết kế website Thiết kế website Thiết kế website Cách kháng tài khoản quảng cáo Mua bán Fanpage Facebook Dịch vụ SEO Tổ chức sinh nhật