NativeScript / NativeScript/nativescript-cli

Plugin's include.gradle is not properly respected when building aar

Đang mở
#3,563 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

bug os: android
Ngôn ngữ chính
JavaScript
Star
1.1k
Fork
204
Merge trung bình
1 ngày 9 giờ
Pull request đã merge (30 ngày)
8

Mô tả

Tell us about the problem

Currently {N} CLI detects if a plugin has any Android resources/java files/etc. and tries to build an android archive (.aar) for said plugin. During building of this .aar file CLI takes into account the plugin's include.gradle file, if it exists, however the logic for this is incomplete. Instead of only taking into account certain tags (like dependencies or repositories), it seems more appropriate that the whole include.gradle be included in the process of building the plugin's .aar file.

In other words instead of any additional parsing CLI should only include a
apply from: <path-to-plugin-include.gradle-file>

section in the plugin's build.gradle.

Which platform(s) does your issue occur on?

Android

Please tell us how to recreate the issue in as much detail as possible.
  1. tns create myApp
  2. cd myApp
  3. tns plugin add nativescript-mapbox
  4. edit node_modules/nativescript-mapbox/platforms/android/include.gradle so that the contents become:
android {
    productFlavors {
        "mapbox" {
            dimension "mapbox"
        }
    }
}

repositories {
    mavenCentral()
}

def coreLibrary = 'com.mapbox.mapboxsdk:mapbox-android-sdk:5.3.1@aar'
def serviceLibrary = 'com.mapbox.mapboxsdk:mapbox-android-services:2.2.9@aar'
def pluginsString = 'com.mapbox.mapboxsdk:mapbox-android-plugin-locationlayer:0.3.0'

// see https://www.mapbox.com/android-sdk/
dependencies {
    // core library
    compile ("$coreLibrary"){
        transitive=true
    }

    // service library
    compile ("$serviceLibrary"){
        transitive=true
    }

    // plugins
    compile "$pluginsString"
}
  1. Try to execute tns build android

CLI fails to build the .aar file in this case, because the dependencies section is copied, however it is in its essence incomplete.

This is only a dummy example to illustrate the flaw in the CLI logic. The content of the include.gradle may contain more complex logic, which needs to be taken into account.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Hướng nghiên cứu

Đọc lib/services/android-plugin-build-service.ts quanh các dòng 232-239, sau đó tái hiện vấn đề với ví dụ include.gradle của nativescript-mapbox và tns build android. Theo dõi cách include.gradle được đưa vào quá trình build plugin; hoàn thành khi toàn bộ tệp được áp dụng trong quá trình xây dựng .aar thay vì chỉ sao chép các phần được chọn.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
android, groovy, javascript
Lĩnh vực
build-system, cli, mobile-dev
Loại issue
Lỗi
Độ khó
3/5
Thời gian dự kiến
1-2 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Đặc tả rõ ràng
Mức phù hợp với người mới
48/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.