2017-05-26 13 views
32

thời gian gần đây tôi nhận thấy một tập tin mới được tạo ra tại <module>/release/output.json bởi Android Studio 3 Canary 1 mỗi lần là gì tôi chạy Build ->Generate Signed APK..., trong đó có nội dung mà hình như sau.các <module> /release/output.json tạo ra bởi Android Studio

Có ai cũng có thể xác nhận hành vi này không? Hoặc là do một số cấu hình cục bộ trên máy tính xách tay của tôi?

Và bất kỳ ai cũng có thể giải thích mục đích của tệp này không? Có an toàn để thêm vào .gitignore không?

[{ 
    "outputType": { 
    "type": "APK" 
    }, 
    "apkInfo": { 
    "type": "MAIN", 
    "splits": [], 
    "versionCode": 32 
    }, 
    "outputFile": { 
    "path": "/path/to/the/generated/release/filename.apk" 
    }, 
    "properties": { 
    "packageId": "com.example.android", 
    "split": "" 
    } 
}] 
+1

Cấu hình thông thường, bạn có thể sử dụng ví dụ: đặt trên máy chủ, kiểm tra từ phiên bản cũ hơn của ứng dụng nếu có cập nhật và thông báo cho người dùng hoặc hiển thị trên trang web hiện tại phiên bản v.v. –

Trả lời

7

Bạn không cần phải lo lắng về tệp output.json này. Android studio 3.0 chịu trách nhiệm cho tệp này.

Hãy để tôi giải thích điều này cho bạn. Đối với phiên bản cũ Những gì android studio đã làm là tạo ra một APK đã ký và đặt nó vào thư mục "đầu ra". Ngay cả Nếu bạn có nhiều kích thước hương vị cho gói ứng dụng của bạn thì tất cả chúng có thể được đặt tại cùng thư mục là thư mục đầu ra. Từ bản phát hành mới nhất của studio android 3.0 (canary và ổn định), họ đã tổ chức cấu trúc tệp này. Đối với mọi kích thước hương vị bất cứ khi nào bạn đã ký APK, nó sẽ có một thư mục riêng biệt với tệp output.json trong đó. Tệp này thực sự không có gì ngoài mô tả về APK nguồn. Nếu bạn có thể xem tệp bạn chia sẻ ở đây, hãy mô tả APK đã phát hành.

+0

thế nào để vô hiệu hóa thư mục này và tạo tập tin và có tất cả các APK hương vị được lưu vào thư mục đầu ra? – chitgoks

+0

Tôi vẫn không biết cách vô hiệu hóa output.json. nhưng mỗi gói ứng dụng có dấu có hương vị sẽ có thư mục riêng biệt với tên hương vị trên đó. Trong quá khứ tất cả các apks đã được tạo ra và được đặt trong thư mục đầu ra @chitgoks –

+1

có bạn là chính xác. tôi tìm thấy nó gây phiền nhiễu mặc dù tại sao họ không có một tùy chọn để có tất cả được đặt trong thư mục đầu ra. Tôi thích hành vi của nó trong chitgoks

2

ouput.json tệp là loại tệp siêu dữ liệu cho APK đã tạo của bạn. Tệp này được tạo do nhiều lý do khác nhau. Tôi đã tìm thấy một số trong số họ, mà có thể không liệt kê tất cả các trường hợp sử dụng, nhưng đây là danh sách:

  1. tạo khi Generate Signed APK được thực hiện
  2. tạo cho AndroidManifest.xml tập tin dưới

    {module}/build/intermediates/manifest/androidTest/debug/ouput.json 
    
  3. Đó là không phải là được tạo cho các bài kiểm tra Đơn vị, nhưng chỉ được tạo cho AndroidTests (phụ thuộc vào khung Android sẽ được thực hiện)

  4. Tệp output.json được tạo cho AndroidManifest.xml ở vị trí được chỉ định ở trên hơi khác so với số được tạo cho APK như bạn đã đề cập.
  5. Như bạn có thể thấy các thuộc tính được mô tả bởi output.json tệp rất giống với các thuộc tính mà chúng tôi thường chỉ định trong tệp build.gradle của chúng tôi, vì vậy nó phải được sử dụng & cần thiết cho quá trình xây dựng để hoạt động thành công (hoặc nó có thể được tạo ra dưới dạng kết quả xây dựng và trích xuất thành công các thuộc tính bắt buộc từ build.gradle).

Khi này, chúng ta có thể kết luận rằng nó chắc chắn phụ thuộc vào khuôn khổ Android được tạo & nó có liên quan được mô tả chi tiết/thông tin về apk hoặc Manifest tập tin.

  • Tôi đã cố gắng cá nhân đến Google & tìm một câu trả lời thích hợp để này ngay cả trên trang web của nhà phát triển Android, nhưng có vẻ như không có gì được ghi chép lại về tập tin này một cách chi tiết.

  • Tôi đã kiểm tra một số dự án trên GitHub & kiểm tra .gitignore tập tin cho cùng, tôi không thể tìm thấy bất kỳ của output.json tập tin tương tự như trong bất kỳ dự án lưu trữ trên GitHub. Vì vậy, nó nên là một thực hành tốt để loại trừ chúng trong cam kết của bạn.

  • Tóm lại, tệp này là tệp mô tả chứa siêu dữ liệu quan trọng về dự án. Nó phải ở đó vì một lý do. Tôi sẽ đề nghị bạn không để gây rối với nó như chúng ta không biết những gì nó có thể dẫn đến.

+0

Nghiên cứu tốt, nhưng tôi muốn thêm rằng sẽ an toàn khi xóa tệp nếu bạn không cần. – Stan

0

tôi thêm ../../ để đầu outputFileName, và các tập tin APK được đưa vào thư mục output

android{ 
    applicationVariants.all { variant -> 
     variant.outputs.all { output -> 
      output.outputFileName = "../../output_name.apk" 
     } 
    } 
} 
Các vấn đề liên quan