簡體   English   中英

如何從 Android Studio 為 Flutter 構建簽名的 apk

[英]How to build signed apk from Android Studio for Flutter

有沒有辦法在 Android Studio 中構建一個用於顫振的 apk?

我看過這個指南: https ://flutter.dev/docs/deployment/android
但是這里flutter console是用來構建apk的。

您可以使用 IDE 和命令行構建 Apk/AppBundle。

  • 通過 IDE 構建 APK/AppBundle:

    步驟1

    在 Android Studio 的標簽欄中,點擊Tools然后Flutter然后Open Android module in Android Studio

    在此處輸入圖像描述

    第2步

    在新窗口中打開項目:

    在此處輸入圖像描述

    第三步

    打開項目后,點擊Build然后Generate Signed Bundle / APK ...

    在此處輸入圖像描述


  • 通過命令構建 APK/AppBundle:

    步驟1:

    修改您的build.gradle(app)文件並在其中包含您的關鍵信息:

     android { compileSdkVersion 31 signingConfigs { release { storeFile file("<path-to-keys.jks>") storePassword "********" keyAlias "<key-alias>" keyPassword "********" } } buildTypes { release { signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } }

    第2步:

    構建 AppBundle:

     flutter build appbundle --target-platform android-arm,android-arm64,android-x64 --obfuscate --split-debug-info=/<directory>

    構建 APK:

     flutter build apk --target-platform android-arm,android-arm64,android-x64 --split-per-abi --obfuscate --split-debug-info=/<directory>

要使用 Android Studio 3.5.1 版為 Flutter 創建/生成簽名 APK,請執行以下步驟 -

步驟1 :

轉到您的項目,然后選擇工具 -> Flutter -> 在 Android Studio 中打開以進行編輯,如下所示

在此處輸入圖像描述

然后選擇新窗口選項,如下所示

在此處輸入圖像描述

第 2 步

等待一段時間,直到項目同步。 在那之后
從菜單欄中轉到Build -> GenerateSigned Bundle/APK...選項,如下所示

在此處輸入圖像描述

第 3 步:

根據需要選擇Android App Bundle 或 APK選項。 (Android App Bundle 是最好的解決方案)並單擊Next按鈕。

在此處輸入圖像描述

第4步 :

選擇Create new..選項以生成新的簽名密鑰(當您首次發布應用程序時)

在此處輸入圖像描述

第 5 步:

填寫所有選項如下

在此處輸入圖像描述

筆記 -

密鑰存儲路徑-

您的密鑰存儲文件(即.jks文件)存儲的路徑(如上圖所示)。 [最佳方式選擇項目目錄中的路徑。]

密鑰庫密碼-

輸入密碼,例如123456

密鑰別名-

輸入密鑰別名(.jks 文件的名稱),例如密鑰

密鑰密碼-

輸入密鑰密碼(選擇與密鑰存儲密碼不同的密碼)例如key123456

有效期(年) - 保持原樣或根據您的要求進行更改。

證書-

填寫證書信息(並非所有字段都是必填項)

然后單擊確定,您將看到以下屏幕...

第 6 步-

在此處輸入圖像描述

第 7 步-

單擊下一步按鈕,您將看到以下屏幕...

在此處輸入圖像描述

選擇選項

構建變體 - 發布

簽名版本分別為V1 和 V2 ,如上圖所示,然后單擊完成按鈕。

第 8 步-

等待一段時間,直到 Gradle Build Running 過程完成,如下所示...

在此處輸入圖像描述

最后你會得到Generate Signed APK : (APKs) generated successfully 從中單擊Locate選項以獲取您的Generate Signed APK Key的位置。 如下圖所示。

在此處輸入圖像描述

至此,您為 Flutter 項目成功生成了 Signed APK。

重要的:

請不要丟失密鑰及其所有信息,即密鑰存儲路徑、密鑰存儲密碼、密鑰別名和密鑰密碼(最好將其寫入筆記本或制作文本文件並在生成時存儲在驅動器上。)。 如果沒有這個,您將無法更新您的應用程序,因為新版本需要使用相同的密鑰進行簽名。

我希望你能得到詳細的信息。

除了使用 Android Studios UI,您還可以輕松地使用命令提示符。 這種方式對我來說更容易,因為我在使用 ui 創建簽名 apk 時遇到了很多問題。

在創建簽名的 APK 之前,您必須准備好您的項目。

1. 將 Flutter 自動化依賴項添加到您的pubspec.yaml

dependencies:  
    flutter:  
        sdk: flutter  
    flutter_automation: ^1.1.4    

目前 ^1.1.4 是最新的依賴項,這最終會改變。

2.獲取新的依賴

在項目目錄中的命令提示符下運行flutter packages get

3.設置簽名

運行flutter pub pub run flutter_automation --android-sign在你的命令提示符下。然后你會被要求輸入

  • 一個關鍵別名,
  • 您的證書信息(CN=First and Last Name (??), OU=Organizational Unit, O=Organization, L=City or Locality, S=State or Province, C=Country Code (XX)
  • 一個密鑰密碼
  • 和密鑰庫密碼

4. 生成您簽名的 apk 或捆綁包

只需運行flutter build apk --split-per-abiflutter build appbundle即可為您的應用生成簽名的 apk/bundle。

對於可以幫助所有人的完整解決方案(包括那些在 sdk 中找不到“在 android studio 中打開以進行編輯”選項的解決方案),請按照以下步驟操作。

  1. 假設您有一個名為“YourProjectName”的項目...復制您的項目名稱,就像我在下面的圖片中審查的那樣,然后右鍵單擊android文件夾以創建一個新文件。新文件上的名稱必須是“你的項目名稱_android.iml” step1圖片

  2. 以步驟 1 中描述的格式創建文件后,您現在將完全看到“在 android studio 中打開以進行編輯”選項。 在此處輸入圖像描述

  3. 現在讓它在單擊上面步驟 2 中的選項后構建,然后單擊通常的選項“生成簽名的 apk” ,如下圖所示最后一步

根據DanyPata對於顫振,您必須設置簽名文件,然后運行顫振構建 APK。 運行flutter命令非常重要,這樣flutter中添加的所有更改/庫也會添加到Android項目中。

步驟1

轉到File - Project Structure並在Modules下選擇app 注意:它可能不會被稱為app - 它可能是您在創建項目時給它的任何名稱。 選擇Signing選項卡。

Android Studio 的項目結構窗口截圖

您需要創建一個證書,因此單擊藍色加號並填寫空白。 完成此過程后,您將轉到Build Types選項卡並確保您有兩個 - debugrelease ,如果您沒有release則再次按藍色加號並創建它。

對於發布版本,您將需要選擇您之前創建的Signing Config並將其余部分保留為默認值。

然后構建您的發布 APK 轉到頂部主欄上的Build ,然后Build Bundle(s) / APK(s)並選擇Build APK(s)

密切關注Event Log以查看其完成時間以及 APK 保存到的路徑。

第2步

更新gradle.build文件。 確保您的項目可見性設置為類似於Project的內容,以便您可以查看文件樹中的所有文件。

前往yourapp/src然后打開build.gradle

下, android添加:

buildTypes {
    release {
        minifyEnabled false
        signingConfig signingConfigs.theNameForCertificateYouCreated
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

重要提示:作為快速提醒和預防措施,請勿丟失它創建的密鑰。 如果沒有這個,您將無法更新您的應用程序,因為新版本需要使用相同的密鑰進行簽名。

每次運行應用程序時,它都會生成 apk。

您可以在項目文件中找到它:

yourProject\build\app\outputs\apk


不要使用 Android Studio 密鑰生成 GUI

不要使用 Android Studio 密鑰生成 GUI

不要使用 Android Studio 密鑰生成 GUI


只需在命令行運行以下命令:

在 Mac/Linux 上,使用以下命令:

  keytool -genkey -v -keystore ~/upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload

在 Windows 上,使用以下命令:

  keytool -genkey -v -keystore c:\Users\USER_NAME\upload-keystore.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias upload

有關后續步驟並在 Google Play 上發布,請查看:

我找到了一個永久的解決方案

只需直接從“應用程序直接”打開您現有的顫振應用程序,其中包含直接在 android studio 中的 Android Manifest 目錄等 android 文件。 這會將您的項目加載為一個 android 項目,我相信其余部分是不言自明的,您需要做什么。

添加此代碼並將其保存在您的應用程序和 android.iml

<?xml version="1.0" encoding="UTF-8"?>
    <module type="JAVA_MODULE" version="4">
      <component name="FacetManager">
        <facet type="android" name="Android">
          <configuration>
            <option name="ALLOW_USER_CONFIGURATION" value="false" />
            <option name="GEN_FOLDER_RELATIVE_PATH_APT" value="/gen" />
            <option name="GEN_FOLDER_RELATIVE_PATH_AIDL" value="/gen" />
            <option name="MANIFEST_FILE_RELATIVE_PATH" value="/app/src/main/AndroidManifest.xml" />
            <option name="RES_FOLDER_RELATIVE_PATH" value="/app/src/main/res" />
            <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/app/src/main/assets" />
            <option name="LIBS_FOLDER_RELATIVE_PATH" value="/app/src/main/libs" />
            <option name="PROGUARD_LOGS_FOLDER_RELATIVE_PATH" value="/app/src/main/proguard_logs" />
          </configuration>
        </facet>
      </component>
      <component name="NewModuleRootManager" inherit-compiler-output="true">
        <exclude-output />
        <content url="file://$MODULE_DIR$">
          <sourceFolder url="file://$MODULE_DIR$/app/src/main/java" isTestSource="false" />
          <sourceFolder url="file://$MODULE_DIR$/app/src/main/kotlin" isTestSource="false" />
          <sourceFolder url="file://$MODULE_DIR$/gen" isTestSource="false" generated="true" />
        </content>
        <orderEntry type="jdk" jdkName="Android API 29 Platform" jdkType="Android SDK" />
        <orderEntry type="sourceFolder" forTests="false" />
        <orderEntry type="library" name="Flutter for Android" level="project" />
        <orderEntry type="library" name="KotlinJavaRuntime" level="project" />
      </component>
    </module>

除了使用 Android Studios UI,您還可以輕松地使用命令提示符。

按照以下步驟使用命令行在 Flutter 中生成簽名的 apk。

  • 第一步:生成keystone文件

    在命令行運行以下命令:

    在 Mac/Linux 上,

     keytool -genkey -v -keystore ~/upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload

    在 Windows 上,

     keytool -genkey -v -keystore c:\Users\USER_NAME\upload-keystore.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias upload
  • 第 2 步:修改您的build.gradle(app)文件

    build.gradle(app)文件中包含您的關鍵信息:

     android { compileSdkVersion 31 signingConfigs { release { storeFile file("<path-to-keys.jks>") storePassword "********" keyAlias "<key-alias>" keyPassword "********" } } buildTypes { release { signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } }
  • 第 3 步:生成 apk

    使用命令行從flutter根目錄運行以下命令。

     flutter build apk --target-platform android-arm,android-arm64,android-x64 --split-per-abi --obfuscate --split-debug-info=/<directory>

    提供一個有效的目錄路徑作為split-debug-info

    構建將在build\app\outputs\flutter-apk文件夾下生成。

更多信息: https ://docs.flutter.dev/deployment/android

暫無
暫無

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

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