2014-03-27 52 views
3

我开发了一个android应用程序,它不在playstore中,因为它只是供内部使用。 所以我做了一个下载页面,用户可以下载apk。 问题是,下载后,用户无法安装apk。直接下载并安装一个android apk

只要用户使用例如“Astro Filemanager”就可以。 但我发现从亚马逊应用商店apk的下载页面: https://www.amazon.de/gp/mas/get/android/ref=mas_rw_ldg 如果我下载了apk,我可以直接安装它,只需点击下载通知。

所以我试图找出我的apk和亚马逊apk之间的区别是什么。 所以我用“aapt duumb badging {pathToAPK}”来检查2个文件。

亚马逊文件:

package: name='com.amazon.venezia' versionCode='638000510' versionName='release-8.0005.557.1C_638000510' 
sdkVersion:'8' 
targetSdkVersion:'17' 
uses-permission:'android.permission.GET_TASKS' 
uses-permission:'android.permission.READ_LOGS' 
uses-permission:'android.permission.INTERACT_ACROSS_USERS_FULL' 
uses-permission:'com.amazon.mas.client.GLOBAL_BROADCAST' 
uses-permission:'android.permission.INSTALL_PACKAGES' 
uses-permission:'android.permission.DELETE_PACKAGES' 
uses-permission:'com.android.amazon.dcp.ota.permission.INSTALL_PACKAGES' 
uses-permission:'com.amazon.mas.client.install.CONTENT_PROVIDER_WRITE' 
uses-permission:'com.amazon.mas.client.install.INSTALL' 
uses-permission:'com.amazon.mas.client.install.KICKOFF_INSTALL' 
uses-permission:'com.amazon.mas.client.install.RECEIVE_INSTALL_STATE' 
uses-permission:'android.permission.INTERNET' 
uses-permission:'android.permission.WRITE_EXTERNAL_STORAGE' 
uses-permission:'android.permission.ACCESS_NETWORK_STATE' 
uses-permission:'android.permission.WAKE_LOCK' 
uses-permission:'com.amazon.inapp.purchasing.Permission.NOTIFY' 
uses-permission:'com.amazon.device.iap.physical.Permission.NOTIFY' 
uses-permission:'com.amazon.mas.client.authentication.permission.DEREGISTRATION_BROADCAST_PERMISSION' 
uses-permission:'com.amazon.mas.client.CONTENT_PROVIDER_READ' 
uses-permission:'com.amazon.mas.client.malware.blockedapp.BLOCKED_APP_PROVIDER_WRITE' 
application-label:'Appstore' 
application-label-ja:'Apps' 
application-label-de:'App-Shop' 
application-label-zh:'亚马逊应用商店' 
application-label-en:'Appstore' 
application-label-fr:'App-Shop' 
application-label-es:'Tienda Apps' 
application-label-it:'App-Shop' 
application-label-pt:'Appstore' 
application-label-fr_CA:'Appstore' 
application-icon-120:'res/drawable-ldpi/icon.png' 
application-icon-160:'res/drawable-mdpi/icon.png' 
application-icon-240:'res/drawable-hdpi/icon.png' 
application-icon-320:'res/drawable-xhdpi/icon.png' 
application-icon-480:'res/drawable-xhdpi/icon.png' 
application: label='Appstore' icon='res/drawable-mdpi/icon.png' 
launchable-activity: name='com.amazon.venezia.Venezia' label='' icon='' 
uses-library-not-required:'com.amazon.webview' 
uses-library-not-required:'com.amazon.dcp.contracts' 
uses-library-not-required:'com.amazon.dcp.contracts.framework' 
uses-library-not-required:'com.amazon.client.metrics.api' 
uses-permission:'com.amazon.dcp.metrics.permission.METRICS_PERMISSION' 
uses-permission:'com.amazon.dcp.config.permission.DYN_CONFIG_VALUES_UPDATED' 
uses-permission:'com.amazon.dcp.settings.permission.READ_SETTINGS' 
uses-permission:'android.permission.GET_ACCOUNTS' 
uses-permission:'android.permission.USE_CREDENTIALS' 
uses-permission:'android.permission.MANAGE_ACCOUNTS' 
uses-permission:'android.permission.AUTHENTICATE_ACCOUNTS' 
uses-permission:'com.amazon.identity.auth.device.perm.AUTH_SDK' 
uses-permission:'com.amazon.identity.permission.GENERIC_IPC' 
uses-permission:'com.amazon.dcp.sso.permission.USE_DEVICE_CREDENTIALS' 
uses-permission:'com.amazon.dcp.sso.permission.EXPIRE_ACCESS_TOKEN' 
uses-permission:'com.amazon.dcp.sso.permission.account.changed' 
uses-permission:'com.amazon.dcp.sso.permission.MANAGE_COR_PFM' 
uses-permission:'com.amazon.dcp.sso.permission.CUSTOMER_ATTRIBUTE_SERVICE' 
uses-permission:'com.amazon.identity.permission.CAN_CALL_MAP_INFORMATION_PROVIDER' 
uses-permission:'amazon.permission.COLLECT_METRICS' 
uses-permission:'android.permission.ACCESS_WIFI_STATE' 
uses-permission:'android.permission.READ_EXTERNAL_STORAGE' 
uses-implied-permission:'android.permission.READ_EXTERNAL_STORAGE','requested WRITE_EXTERNAL_STORAGE' 
uses-feature:'android.hardware.wifi' 
uses-implied-feature:'android.hardware.wifi','requested android.permission.ACCESS_WIFI_STATE, android.permission.CHANGE_WIFI_STATE, or android.permission.CHANGE_WIFI_MULTICAST_STATE permission' 
uses-feature:'android.hardware.touchscreen' 
uses-implied-feature:'android.hardware.touchscreen','assumed you require a touch screen unless explicitly made optional' 
uses-feature:'android.hardware.screen.portrait' 
uses-implied-feature:'android.hardware.screen.portrait','one or more activities have specified a portrait orientation' 
main 
other-activities 
other-receivers 
other-services 
supports-screens: 'small' 'normal' 'large' 'xlarge' 
supports-any-density: 'true' 
locales: '--_--' 'ja' 'de' 'zh' 'en' 'fr' 'es' 'it' 'pt' 'fr_CA' 
densities: '120' '160' '240' '320' '480' 
native-code: 'armeabi' 

我的文件:

package: name='mypackage' versionCode='41' versionName='5.1' 
sdkVersion:'8' 
targetSdkVersion:'17' 
uses-permission:'android.permission.INTERNET' 
uses-permission:'android.permission.READ_PHONE_STATE' 
uses-permission:'android.permission.ACCESS_NETWORK_STATE' 
uses-permission:'android.permission.GET_ACCOUNTS' 
uses-permission:'android.permission.READ_CONTACTS' 
uses-permission:'android.permission.ACCESS_FINE_LOCATION' 
uses-permission:'com.google.android.c2dm.permission.RECEIVE' 
uses-permission:'mypackage.permission.C2D_MESSAGE' 
application-label:'Just for fun' 
application-label-da:'Just for fun' 
application-label-nb:'Just for fun' 
application-label-de:'Just for fun' 
application-label-he:'Just for fun' 
application-label-se:'Just for fun' 
application-label-fi:'Just for fun' 
application-label-en:'Just for fun' 
application-label-fr:'Just for fun' 
application-label-es:'Just for fun' 
application-label-it:'Just for fun' 
application-label-pt:'Just for fun' 
application-label-iw:'Just for fun' 
application-icon-120:'res/drawable-ldpi/icon_android.png' 
application-icon-160:'res/drawable/icon_android.png' 
application-icon-240:'res/drawable/icon_android.png' 
application-icon-320:'res/drawable/icon_android.png' 
application: label='Just for fun' icon='res/drawable/icon_android.png' 
launchable-activity: name='mypackage.MainActivity' label='Just for fun' icon='' 
uses-feature:'android.hardware.location' 
uses-implied-feature:'android.hardware.location','requested a location access permission' 
uses-feature:'android.hardware.location.gps' 
uses-implied-feature:'android.hardware.location.gps','requested android.permission.ACCESS_FINE_LOCATION permission' 
uses-feature:'android.hardware.touchscreen' 
uses-implied-feature:'android.hardware.touchscreen','assumed you require a touch screen unless explicitly made optional' 
uses-feature:'android.hardware.screen.portrait' 
uses-implied-feature:'android.hardware.screen.portrait','one or more activities have specified a portrait orientation' 
main 
other-activities 
other-receivers 
supports-screens: 'small' 'normal' 'large' 'xlarge' 
supports-any-density: 'true' 
locales: '--_--' 'da' 'nb' 'de' 'he' 'se' 'fi' 'en' 'fr' 'es' 'it' 'pt' 'iw' 
densities: '120' '160' '240' '320' 

但我不知道是差别。我的文件用我们的密钥签名。

+0

当你点击你的APK时,你有没有收到任何屏幕消息?如果您尝试在设备连接时安装应用程序,LogCat会显示什么内容? – scottt

+0

屏幕上的消息是:“无法打开文件”。 – Marc

+0

在LogCat中看到: 3-27 10:15:49.135:WARN/DownloadManager(13817):无法启动Intent {act = android.intent.action.VIEW dat = content:// downloads/all_downloads/543 typ = application/force-download flg = 0x10000003}:android.content.ActivityNotFoundException:未发现处理Intent的活动{act = android.intent.action.VIEW dat = content:// downloads/all_downloads/543 typ = application/force-下载flg = 0x10000003} – Marc

回答

0

您可能会尝试自行处理应用程序的下载,安装和更新。 Google Play商店允许只有特定人群(由Google+圈子或Google群组定义)的用户可以使用应用的Alpha版和测试版(没有制作版本)。您仍然必须签署应用程序并满足内容的一些基本要求(例如正确的图标和图形),但您可以保持分发关闭。您仍然可以享受Play商店的优势(自动更新,可信安装来源等),但对于不属于测试版组的任何人来说,它都是完全不可见的。

受信任的安装源还将有助于避免必须让用户手动启用非市场来源才能下载和安装,这可能是用户的设备不允许安装应用程序的原因。

+0

这是一个好主意,以处理测试用户组的情况。 – Marc

+0

只是我学会了设置它。一旦你将.apk和组建立起来,每个成员将需要访问 https://play.google.com/apps/testing/com.yourapp.package.name并同意成为测试人员,然后他们可以通过https://play.google.com/store/apps/details?id=com.yourapp.package.name下载它(通过Play商店),一旦他们接受了测试者位。如果您只是搜索商店,即使您处于Alpha或Beta版组中,该应用仍然不可见。只有生产级别的应用程序才会显示。 – GaidinBDJ

0

好的。我想我修好了。问题是下载的MIME类型。 我将其从强制下载更改为应用程序/ vnd.android.package-archive 现在它工作。