2013-05-25 40 views
5

Tôi đã phát triển và thử nghiệm ứng dụng của mình bằng các trình mô phỏng điện thoại và máy tính bảng khác nhau và 4 thiết bị thực: Samsung Galaxy Ace (GT-I8160P), Samsung Galaxy Tab 2 (GT-P5110 và GT-P3110) và Storex M977. Sau 5 tháng làm việc và kiểm tra, Ứng dụng hoạt động tốt trên tất cả các thiết bị này. Vì vậy, tôi đã tải nó lên Google Play. Nhưng Google Play cho biết rằng nó không tương thích với máy tính bảng của tôi. Tôi không thể cài đặt nó bằng cách sử dụng Google Play trên Galaxy Tab của tôi ...Ứng dụng không tương thích với thiết bị tôi sử dụng để phát triển?

Tôi không thể tìm ra vấn đề là gì. Tôi đã thêm phần màn hình hỗ trợ mà không thành công. Tôi hơi tuyệt vọng vì vậy tôi cũng đã thêm các tính năng sử dụng này với yêu cầu = "sai": GPS, MẠNG, ĐIỆN THOẠI, WIFI, VỊ TRÍ, TOUCHSCREEN ngay cả khi ứng dụng hoạt động tốt mà không có các tính năng sử dụng này. Cùng một kết quả. Tôi cũng đã xóa "TargetSdk". Google Play nói rằng ứng dụng của tôi tương thích với 2339 thiết bị bao gồm một số Tab Galaxy, nhưng không phải với các tab của tôi. Chỉ Galaxy Ace mới có thể cài đặt nó từ Google Play.

Đây là tệp kê khai của tôi (tôi vừa thay thế tên gói ban đầu của gói bằng fr.test.app vì lý do bảo mật). Tôi đang làm gì sai?

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="fr.test.app" 
android:versionCode="7" 
android:versionName="1.2" > 

<uses-sdk 
    android:minSdkVersion="8" 
    /> 

<supports-screens android:resizeable="true" 
       android:smallScreens="true" 
       android:normalScreens="true" 
       android:largeScreens="true" 
       android:xlargeScreens="true" 
       android:anyDensity="true"/> 


<uses-feature android:name="android.hardware.WIFI" android:required="false" /> 
<uses-feature android:name="android.hardware.GPS" android:required="false" /> 
<uses-feature android:name="android.hardware.TELEPHONY" android:required="false" /> 
<uses-feature android:name="android.hardware.camera.front" android:required="false" /> 
<uses-feature android:name="android.hardware.camera" android:required="false"/> 
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/> 
<uses-feature android:name="android.hardware.LOCATION" android:required="false" /> 
<uses-feature android:name="android.hardware.NETWORK" android:required="false" /> 
<uses-feature android:name="android.hardware.TOUCHSCREEN" android:required="false" /> 

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> 
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.SEND_SMS" /> 
<uses-permission android:name="android.permission.WRITE_SMS"/> 
<uses-permission android:name="android.permission.READ_SMS"/> 
<uses-permission android:name="android.permission.READ_CONTACTS"/> 
<uses-permission android:name="android.permission.VIBRATE" /> 
<uses-permission android:name="android.permission.CAMERA"/> 
<uses-permission android:name="android.permission.CAMERA.FRONT"/> 
<uses-permission android:name="android.permission.WAKE_LOCK"/> 

<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/> 
<uses-permission android:name="android.permission.GET_ACCOUNTS"/> 
<permission android:name="fr.test.app.permission.C2D_MESSAGE" 
    android:protectionLevel="signature" /> 
<uses-permission android:name="fr.test.app.permission.C2D_MESSAGE" /> 



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


    <receiver 
     android:name="com.google.android.gcm.GCMBroadcastReceiver" 
     android:permission="com.google.android.c2dm.permission.SEND" > 
     <intent-filter> 
      <!-- Receives the actual messages. --> 
      <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 
      <!-- Receives the registration id. --> 
      <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> 
      <category android:name="fr.test.app" /> 
     </intent-filter> 
    </receiver> 
    <service android:name=".GCMIntentService" />  

    <receiver 
     android:name=".OnBootReceiver" 
     android:enabled="true" 
     android:exported="false" android:label="OnBootReceiver"> 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      <action android:name="android.intent.action.MAIN" /> 
     </intent-filter> 
    </receiver> 
    <receiver 
     android:process=":remote" 
     android:name="fr.test.app.Alarm">   
    </receiver>   
    <receiver 
     android:process=":remote" 
     android:name="fr.test.app.CamAlarm">    
    </receiver>   
    <receiver android:name=".MyAdmin" android:permission="android.permission.BIND_DEVICE_ADMIN"> 
     <meta-data android:name="android.app.device_admin" android:resource="@layout/policies"> 
      <intent-filter> 
       <action android:name="android.app.action.DEVICE_ADMIN_ENABLED"> 
       </action> 

      </intent-filter> 
     </meta-data>   
    </receiver> 
    <service 
     android:name=".BbSvc" android:enabled="true" 
     android:exported="false" 
    />   

    <service 
     android:name=".WpsLoc" android:enabled="true" 
     android:exported="false" 
    /> 

    <service 
     android:name=".Cam" android:enabled="true" 
     android:exported="false" 
    /> 

    <service 
     android:name=".MniRec" android:enabled="true" 
     android:exported="false" 
    /> 

    <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" 
     android:configChanges="keyboardHidden|orientation"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name=".reminder" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <!-- 
      <category android:name="android.intent.category.LAUNCHER" /> 
      <category android:name="android.intent.category.DEFAULT" /> --> 
     </intent-filter> 
    </activity> 
    <provider android:name="fr.test.app.AndroidProvider" 
      android:authorities="fr.test.app.AndroidProvider" 
      android:exported="false"/> 
</application> 

+0

Tôi recommand bạn để thêm android thuộc tính: targetSdkVersion, vui lòng xem google doc: http://developer.android.com/guide/topics/manifest/uses-sdk-element.html – Jarvis

+0

Đã cố gắng điều này: "Để khắc phục sự cố, hãy đi vào chi tiết sản phẩm android-market-publish ==> của bạn. Trong tab tùy chọn xuất bản, bạn PHẢI XỬ LÝ bảo vệ nội dung. (để bảo vệ ứng dụng của bạn, bạn nên sử dụng hệ thống cấp phép) "? – sschrass

+1

Tôi không thấy bất cứ điều gì về bảo vệ bản sao. Có vẻ như Google Play đã tắt tính năng này. Tôi nghĩ rằng tôi đã khắc phục sự cố: Tôi đã sử dụng quyền VIBRATE. Trong trường hợp này, Tôi thêm nó một cách rõ ràng bằng cách sử dụng android: required = "false" Bây giờ, tôi chỉ thấy 56 thiết bị không tương thích, và không có mìn nào trong số đó. Tôi phải kiểm tra lại ứng dụng của mình trước khi xuất bản nhưng tôi nghĩ rằng vấn đề được giải quyết.Cảm ơn '' sử dụng-feature android: name = "android.hardware.rung "android: required =" false "/>' – user2244705

Trả lời

1

Để tham khảo trong tương lai cho bất cứ ai tình cờ khi này, Android có một hướng dẫn tuyệt vời về quyền và lọc. Điều này bao gồm một danh sách đầy đủ các tính năng phần cứng ngụ ý khi sử dụng các quyền nhất định. (Đó là ở phía dưới.)

http://developer.android.com/guide/topics/manifest/uses-feature-element.html

Đây là hoặc là một bổ sung mới vào tài liệu hoặc chỉ thực sự khó tìm. XD

0

Tôi cho rằng sự cố là cấp quyền rung. Bạn có chắc chắn thiết bị của mình có rung không?

1

<uses-feature> thuộc tính phân biệt chữ hoa chữ thường, bạn cần viết chúng bằng các chữ cái nhỏ. Bên cạnh đó với những gì bạn đã có, tôi sẽ thêm:

<uses-feature android:name="android.hardware.telephony.cdma" android:required="false"/> 
<uses-feature android:name="android.hardware.telephony.gsm" android:required="false"/> 
<uses-feature android:name="android.hardware.location.gps" android:required="false"/> 
<uses-feature android:name="android.hardware.location.network" android:required="false"/> 
0

Trong một số trường hợp Google Play sẽ cho bạn biết lý do tại sao các thiết bị không tương thích:

  1. Mở Google Play trên máy tính để bàn của bạn: https://play.google.com/store
  2. Điều hướng đến ứng dụng của bạn và nhấp vào nút Install
  3. Mở menu thả xuống và xem có bản tóm tắt bên dưới thiết bị không tương thích không:

screenshot