簡體   English   中英

反應原生自定義 buildType 不使用 Metro

[英]React native custom buildType not using metro

我需要為不同的 applicationId 構建相同的應用程序,以便我可以將它作為我公司某些客戶的私有應用程序發布到 Play Store / App Store。

我決定使用react-native-config ,因為它應該允許我輕松更改applicationId和一些env變量。

我創建了一些.env.${variant}文件,即在以下示例中為.env.customer1

我已將所需的buildTypes設置如下:

...
buildTypes {
   debug {
      ...
   }
   customer1 {
      initWith debug
      applicationIdSuffix "customer1"
   }
}

我強迫 react.gradle 在使用這些變體構建時不要捆綁

project.ext.react [
   bundleInCustomer1: false,
   devDisabledInCustomer1: false
]

然后我使用這個命令行在我的物理設備上運行

copy .env.customer .env && react-native run-android --variant=customer1 --appIdSuffix 'customer1'

結果是該應用程序在我的設備上構建並啟動,但我看到的是該應用程序的舊版本(可能是幾周前我使用 assembleRelease 構建的最后一個),metro 啟動但告訴我什么時候我試圖強制重新加載,否則什么都不告訴我

warn No apps connected. Sending "reload" ...

我試過沒有任何成功

gradlew clean
npm start --cache-reload
npm cache clean --forced
npm i

構建沒有任何變體的應用程序(因此使用默認調試)可以正常工作。

感謝這個答案,我成功地解決了我的問題。

我現在使用而不是使用buildTypes flavors

所以,

android {
    ...
    flavorDimensions "standard"
    defaultConfig {
        applicationId "com.stackoverflow"
    ...
    productFlavors {
        customer1 {
            applicationId "com.stackoverflow.customer1"
            dimension "standard"
        }
    }
}

並通過啟動

react-native run-android --variant=customer1Debug --appIdSuffix 'customer1'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM