Expo:无法更改 Android 独立应用程序图标和名称

Expo: Can't change Android Standalone App Icon and Name

我正在尝试更改我的 expo 托管应用程序的图标和名称。我更改了资产中的文件以包含我的图像。它们位于 assets/images。文件的名称是正确的,如果我按住 Ctrl 并单击它们,我会找到正确的文件。我还将“名称”更改为新名称。我的 app.json 看起来像这样:

{
  "expo": {
    "userInterfaceStyle": "automatic",
    "name": "GroupStatus",
    "slug": "GroupStatus",
    "version": "2.0.0",
    "orientation": "portrait",
    "icon": "./assets/images/my-icon.png",
    "splash": {
      "image": "./assets/images/splash.png",
      "resizeMode": "contain",
      "backgroundColor": "#ffffff"
    },
    "updates": {
      "fallbackToCacheTimeout": 0
    },
    "assetBundlePatterns": ["**/*"],
    "ios": {
      "supportsTablet": true,
      "usesAppleSignIn": true,
      "requireFullScreen": true,
      "userInterfaceStyle": "light",
      "buildNumber": "2.0.0"
    },
    "android": {
      "package": "com.myName.groupstatus",
      "googleServicesFile": "./google-services.json",
      "versionCode": 3,
      "adaptiveIcon": {
        "foregroundImage": "./assets/images/my-adaptive-icon.png",
        "backgroundColor": "#FFFFFF"
      },
      "icon": "./assets/images/my-icon.png",
      "userInterfaceStyle": "dark"
    },
    "web": {
      "favicon": "./assets/images/favicon.png"
    },
    "scheme": "groupstatus"
  }
}

我还有一个app.config.ts文件:

import "dotenv/config";

export default {
  extra: {
    apiKey: process.env.API_KEY,
    authDomain: process.env.AUTH_DOMAIN,
    projectId: process.env.PROJECT_ID,
    storageBucket: process.env.STORAGE_BUCKET,
    messagingSenderId: process.env.MESSAGING_SENDER_ID,
    appId: process.env.APP_ID,
    measurementId: process.env.MEASURING_ID,
    databaseUrl: process.env.DATABASE_URL,
  },
  facebookScheme: "12345",
  slug: "GroupStatus",
  title: "GroupStatus",
  android: {
    package: "com.myName.groupstatus",
    versionCode: 3,
  },
};

当我将应用构建为 apk/aab 时,我得到了旧名称和默认图标。

我正在使用 Expo SDK 42.0.0

我找到了解决办法。如果在 app.json 旁边使用 app.config.js,则必须告诉 app.config.js 文件包含 app.json.

中的值
export default ({ config }: ConfigConte) => {
  const apiKey = process.env.API_KEY!;
  const authDomain = process.env.AUTH_DOMAIN!;
  const projectId = process.env.PROJECT_ID!;
  const storageBucket = process.env.STORAGE_BUCKET!;
  const messagingSenderId = process.env.MESSAGING_SENDER_ID!;
  const appId = process.env.APP_ID!;
  const measurementId = process.env.MEASURING_ID!;
  const databaseUrl = process.env.DATABASE_URL!;

  return {
    ...config,    // <= this includes all the values from app.json
    extra: {
      apiKey,
      authDomain,
      projectId,
      storageBucket,
      messagingSenderId,
      appId,
      measurementId,
      databaseUrl,
    },
  };
};

如果不包含配置,将不会应用 app.json 中设置的所有值。 有关此的更多信息,请阅读 docs: