7

Tôi đang cố gắng phát hành ứng dụng của mình nhưng gặp sự cố với bản đồ google. Ứng dụng có chứa hoạt động (MapActivity) hiển thị bản đồ. Khi chạy trong chế độ gỡ lỗi, bản đồ hoạt động tốt. Tôi đã ký ứng dụng của mình ở chế độ phát hành và nhận được SHA1. Tôi đã tạo một khóa android mới trên bảng điều khiển của Google theo yêu cầu (SHA1; packageName). Có khóa APIBản đồ của Google không hiển thị trên Android ở chế độ phát hành

Trong ứng dụng của tôi, tôi đã tham chiếu bản sao của google-play-services-lib theo yêu cầu. Tôi đang sử dụng ADT.

map.xml

<?xml version="1.0" encoding="utf-8"?> 
<fragment xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/map" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:name="com.google.android.gms.maps.SupportMapFragment" /> 

MapActivity.java

public class MapActivity extends FragmentActivity { 

private GoogleMap map; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.map); 

    map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)) 
         .getMap(); 
    } 

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.rentalcar" 
android:versionCode="1" 
android:versionName="1.0" > 



<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="16" /> 
<uses-permission android:name="android.permission.INTERNET"></uses-permission> 

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

<uses-feature 
android:glEsVersion="0x00020000" 
android:required="true"/> 

<permission 
     android:name="com.example.rentalcar.permission.MAPS_RECEIVE" 
     android:protectionLevel="signature"/> 
    <uses-permission android:name="com.example.rentalcar.permission.MAPS_RECEIVE"/> 


<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" 
    > 

    <activity 
     android:name="com.example.rentalcar.MainActivity" 
     android:label="@string/app_name" 
     android:screenOrientation="portrait" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity>  

    <activity 
     android:name="com.example.rentalcar.MapActivity" 
     android:label="@string/title_activity_map" 
     android:screenOrientation="portrait" > 
    </activity> 

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

</application> 

</manifest> 

Điều duy nhất kỳ lạ là khi tôi sử dụng keytool để có được SHA1 tôi nhận được " Tên thuật toán chữ ký: SHA256withRSA, đây có phải là vấn đề không? Nếu có, làm thế nào tôi có thể thay đổi?

using keytool to get the certificate fingerprints

Tôi bị kẹt ở đây! Cảm ơn bạn đã giúp đỡ!

+0

điều này có thể giúp http://stackoverflow.com/questions/13696620/google-maps-android-api-v2-authorization-failure – Waqas

+0

Thử tạo lại khóa phát hành của bạn: http://chocotech.blogspot.com/2012 /10/get-debug-key-and-release-key-for.html – svlzx

+0

https://stackoverflow.com/a/46418176/2898708 –

Trả lời

10

trong V2 bản đồ API, CHỈ điều mà thay đổi giữa các phiên bản phát hành và một phiên bản debug là Key mà bạn đăng ký tại đây https://code.google.com/apis/console/

Nếu debug đang làm việc và phát hành cuối cùng không phải là, đó là chỉ thay đổi cần thiết.

Vì vậy, tôi khuyên bạn nên kiểm tra kỹ mã băm của kho khóa phát hành của bạn và đảm bảo rằng nó được nhập đúng trên Bảng điều khiển API của Google.

+1

có thể là thuật toán chữ ký phải là SHA1withRSA thay vì SHA256withRSA không? – user1851212

+0

Chỉ cần thêm một khía cạnh vào câu trả lời rất hữu ích này. Bạn có thể tạo khóa API cho cả hai cùng một lúc, gỡ lỗi và nhả khóa. Làm như vậy bạn không phải gặp rắc rối với những thay đổi đối với tệp kê khai hoặc cấu hình gradle hoặc như vậy. Chỉ cần sử dụng một khóa api hoạt động với tất cả các khóa ứng dụng của bạn. –

0

Chỉ dữ liệu rõ ràng (Cài đặt-> Ứng dụng chọn ứng dụng Xóa dữ liệu-> gỡ cài đặt) và thử. điều này làm việc cho tôi. Đảm bảo rằng tên gói giống với tên gói trong bảng điều khiển dành cho nhà phát triển của google. nếu bạn được tạo mã SHA1 từ kho khóa tùy chỉnh, sử dụng cùng một chế độ phát hành. hoặc tạo apk bằng cách ký với cùng một kho khóa đó.

0

1- Tạo tệp apk bằng cách sử dụng "Sử dụng thuật sĩ xuất" trong tệp "Tệp kê khai Android" của dự án của bạn.

2- Sau khi chèn khóa và trước khi kết thúc, MD5 và SHA1 phím được hiển thị như là này cho pic-

3 Tạo API Key mới cho dự án Android cho SHA1 mới được lấy tại điểm 2.

4- Sử dụng khóa API đó trong tệp kê khai như được hiển thị bên dưới

5- Làm sạch dự án của bạn và tạo tệp APK lại.

6- Bạn có thể xem bản đồ google ngay trong apk đó.

10

nếu bạn đã cố gắng @Budius câu trả lời và vẫn phải đối mặt với lỗi này, nó có thể được gây ra bởi các tình huống sau đây:

Khi bạn thêm MapFragment của bạn, Android Studio tạo 2 file google_maps_api.xml: một bên trong thư mục src/debug/res/values ​​và bên trong src/release/res/values.

Nhưng vì một số lý do, chỉ có tệp thư mục gỡ lỗi được hiển thị trên Android Studio. Vì vậy, khi bạn thay đổi giá trị APIkey, nó chỉ được thực hiện tại tệp thư mục gỡ lỗi.

Vì vậy, chỉ cần sao chép tệp google_maps_api.xml để giải phóng thư mục và đảm bảo rằng cả hai đều có cùng APIKey.

điều này làm việc cho tôi sau tất cả các lần thử khác.

+1

Cảm ơn bạn! sửa vấn đề của tôi – user3722523

+0

cảm ơn ... tôi đã làm việc 48 giờ để giải quyết vấn đề này. không có giải pháp. –