NativeScript / NativeScript/nativescript-cli

CLI 8.2.x does not respect the targetSdk from AndroidManifest.xml

未關閉
#5,664 0 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視

還沒有人認領這個 Issue。

bug-pending-triage
主要語言
JavaScript
星號
1.1k
分支
204
平均合併
1 天 9 小時
30 天內合併 PR
8

描述

Issue Description

After we upgraded to {N} 8.2.2 we found that during build, the CLI sets the targetSdk to 31 instead of respecting the value in App_Resources/Android/src/main/AndroidManifest.xml which was in our case set to 30.

The merged, final manifest in the APK has targetSdk 31

This is read from platforms/android/gradle.properties, defined as NS_DEFAULT_COMPILE_SDK_VERSION=31, applied in the platforms/android/app/build.gradle file through

def computeTargetSdkVersion = { -> project.hasProperty("targetSdk") ? targetSdk : NS_DEFAULT_COMPILE_SDK_VERSION as int }

Workaround: specify targetSdk in the config/android/resources/gradle.properties, e.g.

targetSdk = 30
Reproduction

in App_Resources/Android/src/main/AndroidManifest.xml set

<uses-sdk
    android:minSdkVersion="26"
    android:targetSdkVersion="30"/>

run ns build android

check platforms/android/app/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt or check the generated APK and it's embedded AndroidManifest.

Relevant log output (if applicable)
from `platforms/android/app/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt` 


7    <uses-sdk
7-->/me/dev/test/platforms/android/app/src/main/AndroidManifest.xml:13:5-15:44
8        android:minSdkVersion="26"
8-->/me/dev/test/platforms/android/app/src/main/AndroidManifest.xml:14:13-39
9        android:targetSdkVersion="31" />
9-->/me/dev/test/platforms/android/app/src/main/AndroidManifest.xml:15:13-42
Environment

No response

Please accept these terms

貢獻指南

開啟貢獻指南

從這裡開始

  1. 先讀完整個 Issue,再讀專案的貢獻指南。
  2. 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
  3. Fork 儲存庫,在一個分支上完成修改。
  4. 送出 Pull Request,並在描述裡引用這個 Issue 編號。

研究方向

檢查 platforms/android/gradle.properties 和 platforms/android/app/build.gradle,重點關注 computeTargetSdkVersion。使用 App_Resources/Android/src/main/AndroidManifest.xml 和 ns build android 重現,然後檢查 manifest-merger-blame 報告或產生的 APK。完成的標準是,manifest 中的 targetSdkVersion 30 仍然是 30,而不是變成 31。

由索引模型根據 Issue 內容生成。

評估

技術堆疊
android, javascript
領域
build-system, cli, mobile-dev
Issue 類型
缺陷
難度
3/5
預估耗時
1-2 天
活躍度
停滯
描述清晰度
描述清楚
新手友好度
42/100

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。