2012-12-20 29 views
20

Tôi hiện đang làm việc trên một dự án Android và tìm hiểu cách sử dụng git. Tôi đang bị chặn vì một vấn đề với git: Tôi có chìa khóa api Google Maps của tôi khai báo trong tập tin android-manifest của tôi:Chỉnh sửa AndroidManifest khi biên soạn để xóa khóa API

<meta-data 
    android:name="com.google.android.maps.v2.API_KEY" 
    android:value="HEREISMYKEY"/> 

Bây giờ, tôi muốn đẩy mã của tôi trong github, nhưng tôi có thể 't đẩy AndroidManifest của tôi, bởi vì nó chứa khóa api của tôi (được cho là vẫn giữ bí mật).

Tôi muốn biết liệu có cách nào sửa đổi nó trước mỗi lần đẩy hoặc có thể sửa đổi nó mỗi lần tôi biên dịch đơn đăng ký của mình không?

Cảm ơn sự giúp đỡ của bạn!

Trả lời

31

Tạo tệp * .xml mới trong res/values ​​(gọi nó là api-keys.xml hoặc nội dung tương tự).

Thay đổi biểu hiện của bạn để trỏ đến chuỗi này:

<meta-data 
    android:name="com.google.android.maps.v2.API_KEY" 
    android:value="@string/GoogleMapsKey"/> 

Khi bạn lần đầu tiên đẩy thay đổi của bạn đối với công chúng, đặt trong một chìa khóa giả.

Sau đó, chỉnh sửa tệp bằng khóa API thực của bạn.

Sau đó, thêm tệp vào tệp .gitignore của bạn để tệp không bị đẩy lại.

+3

Bạn cũng nên bỏ qua tệp api-keys.xml của mình trước khi tạo tệp gitignore. Nếu không, bạn vẫn sẽ đẩy các thay đổi. [link] (https://help.github.com/articles/ignoring-files) – piratemurray

+0

Chỉ là một FYI nhỏ, vì một số lý do, IntelliJIdea không muốn api-keys.xml vì vậy hãy sử dụng api_keys.xml để thay thế. – Rupert

+0

Đây là một câu trả lời tuyệt vời. Đối với một số lý do tôi nghĩ rằng tất cả các file xml tài nguyên chuỗi cần thiết để được đặt tên theo giá trị của quy ước. Bây giờ tôi đã học được rằng tôi có thể làm điều tương tự trên Android như tôi làm cho các dự án khác của mình! –

1

Vâng, những gì bạn có thể làm là đặt tệp AndroidManifest.XML vào tệp .gitignore của bạn và cách đó nó sẽ không bị đẩy lên với phần còn lại của mã của bạn .. Sau đó, chỉ cần đẩy lên tệp readme hoặc gì đó có một nguồn AndroidManifest.xml tổng quát mà bất kỳ ai cũng phải sao chép và dán vào một tệp AndroidManifest.xml để xây dựng ứng dụng của bạn. Bằng cách đó bạn có thể thực hiện các thay đổi trong ứng dụng của mình, xây dựng nó khi cần thiết và sau đó không phải đối phó với việc tổng quát nó trên mọi bản dựng và đẩy vào kiểm soát nguồn.

0

Cách tôi đã tiếp cận các vấn đề tương tự trong quá khứ là bằng cách sử dụng các nhánh cụ thể trong git repo của tôi để đẩy mạnh.

Giả sử bạn có chi nhánh chính tại địa phương với các khóa của bạn trong tệp kê khai. Khi bạn đã sẵn sàng để chuyển sang github (hoặc bất cứ nơi nào khác), bạn có thể tạo một nhánh "release" mới không có lịch sử. Bạn có thể xem thêm một chút về điều đó tại đây: How to push new branch without historygit branch --orphan release. Một khi bạn làm điều đó loại bỏ tất cả các thông tin cá nhân, cam kết tất cả các tập tin và chỉ đẩy chi nhánh đó để github git push origin release.

Vấn đề với điều này là bạn sẽ không có lịch sử cam kết, có thể ai đó khác có thể tìm ra thứ gì đó tốt hơn.

Các vấn đề liên quan