<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 構建類型 默認情況下,Android Plugin 會自動給項目構建 debug 和 release 版本。兩個版本的區別在于能否在安全設備上調試,以及 APK 如何簽名。 debug 版采用通用的 `name/password` 對來自動創建的密鑰證書進行簽名(為了防止在構建過程中出現認證請求)。release 版在構建過程中不進行簽名,需要稍后再進行簽名。 這些配置是通過 **BuildType** 對象來完成的。默認情況下,兩個實例都會被創建,分別是 **debug** 和 **release** Android plugin 允許像創建其他*構建類型*一樣定制這兩個實例。可以在 **buildTypes** 的 DSL 容器中完成: ~~~ android { buildTypes { debug { applicationIdSuffix ".debug" } jnidebug.initWith(buildTypes.debug) jnidebug { packageNameSuffix ".jnidebug" jnidebugBuild true } } } ~~~ 上面的代碼片段實現了以下功能: - 配置默認的 **debug** 構建類型: - 設置包名為`<app appliationId>`.debug,以便能夠在同一個設備上安裝 *debug* 和 *release* 版的 apk - 創建了名為 **jnidebug** 的新 *BuildType*,并且用 **debug** 構建類型的默認配置來初始化自身。 - 繼續配置 **jnidebug**,可以構建 JNI 組件,并添加了不一樣的包名后綴。 創建一個*新的構建類型*就是簡單的在 **buildTypes** 標簽下添加一個新的元素,并且通過調用 **initWith()** 或者直接使用閉包來配置它。 以下是一些可能使用到的屬性和默認值: | 屬性名 | debug 類型的默認值 | release 或其他類型默認值 | |-----|-----|-----| | **debuggable** | true | false | | **jniDebugBuild** | false | false | | **renderscriptDebugBuild** | false | false | | **renderscriptOptimLevel** | 3 | 3 | | **applicationIdSuffix** | null | null | | **versionNameSuffix** | null | null | | **signingConfig** | android.signingConfigs.debug | null | | **zipAlign** | false | true | | **runProguard** | false | false | | **proguardFile** | N/A (set only) | N/A (set only) | | **proguardFiles** | N/A (set only) | N/A (set only) | 除了以上屬性外,*Build Types* 還會受項目源碼和資源影響。 對于每一個 Build Type 都會自動創建一個匹配的 *sourceSet*。默認的路徑為: ~~~ src/<buildtypename>/ ~~~ 這意味著 *BuildType* 名稱不能是 *main* 或者 *androidTest*(因為這兩個是由 plugin 強制實現的),并且他們都必須是唯一的。 跟其他 sourceSet 設置一樣,Build Type 的 source set 路徑也可以重新定向: ~~~ android { sourceSets.jnidebug.setRoot('foo/jnidebug') } ~~~ 另外,每一個 *Build Type* 都會創建一個新的 `assemble<BuildTypeName>` 任務。 **assembleDebug** 和 **assembleRelease** 在上面已經提到過,這里要講的是它們從哪被創建。當 **debug** 和 **release** 構建類型被預創建的時候,它們的 tasks 就會自動創建。 上面提到的 *build.gradle* 代碼片段中也會實現 **assembleJnidebug** task,并且 **assemble** 會像依賴于 **assembleDebug** 和 **assembleRelease** 一樣依賴于 **assembleJnidebug**。 提示:你可以在終端下輸入 `gradle aJ` 去運行 **assembleJnidebug** task。 可能會使用到的情況: - debug 模式下才用到的權限 - 自定義的 debug 實現 - 為 debug 模式使用不同的資源(例如,當資源的值由綁定的證書決定) *BuildType* 的代碼和資源通過以下方式被使用: - manifest 將被混合進 app 的 manifest - 代碼只是換了一個資源文件夾 - 資源將疊加到 main 的資源中,并替換已存在的資源。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看