我有一个问题,因为大尺寸而没有。在应用程序中的图像,我的应用程序停止在模拟器上安装。它给出了一个错误报告“No Space Left”。 .apk文件的大小约为60MB。现在,我想问一下以下问题:
在这种情况下可以做些什么,以便安装它并且不会出现此错误?
Android市场是否允许安装此大小的应用程序?
提前致谢
答案 0 :(得分:3)
现在Android市场的限制是50MB。 您可以做的是在服务器上输出一些资源并按需下载它们。您可以向用户提示应用程序将下载大量数据,以便用户可以使用wifi来执行此操作。
答案 1 :(得分:1)
目前Android市场的限制是50 MB。所以你可以用一些图像压缩压缩图像,如果你使用过视频或音频,那么你也可以压缩,这样你就可以达到50 MB。许多压缩工具都可用。
答案 2 :(得分:1)
在谷歌IO的视频中,24点10分,6月份公布了市场上的大量优惠:
http://www.google.com/events/io/2011/sessions/android-market-for-developers.html
答案 3 :(得分:0)
Google Play目前要求您的APK文件不超过50MB。对于大多数应用程序而言,这为所有应用程序的代码和资产提供了充足的空间。但是,某些应用程序需要更多空间来存储高保真图形,媒体文件或其他大型资产。以前,如果您的应用程序超过50MB,则必须在用户打开应用程序时自己托管并下载其他资源。托管和提供额外的文件可能成本很高,而且用户体验往往不太理想。为了让您更轻松地完成此过程,让用户感到更愉快,Google Play允许您附加两个大型扩展文件,以补充您的APK。
以下是在Android中设置扩展文件所需的步骤:
首先,打开Android SDK Manager,展开Extras并下载:
在AndroidManifest.xml中声明以下权限
<!-- Required to access Google Play Licensing -->
<uses-permission android:name="com.android.vending.CHECK_LICENSE" />
<!-- Required to download files from Google Play -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- Required to keep CPU alive while downloading files (NOT to keep screen awake) -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!-- Required to poll the state of the network connection
and respond to changes -->
<uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- Required to check whether Wi-Fi is enabled -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<!-- Required to read and write the expansion files on shared storage -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
整合图书馆
<sdk>/extras/google/play_apk_expansion/downloader_library/src
复制到您的项目中。<sdk>/extras/google/play_licensing/library/src
复制到您的项目中。<sdk>/extras/google/google_market_apk_expansion/zip_file/
复制到您的项目中。现在,创建一个名为expansion的新包,并在包中创建DownloaderService.java
。
// DownloaderService.java
public class DownloaderService extends com.google.android.vending.expansion.downloader.impl.DownloaderService {
public static final String BASE64_PUBLIC_KEY = "<<YOUR PUBLIC KEY HERE>>"; // TODO Add public key
private static final byte[] SALT = new byte[]{1, 4, -1, -1, 14, 42, -79, -21, 13, 2, -8, -11, 62, 1, -10, -101, -19, 41, -12, 18}; // TODO Replace with random numbers of your choice
@Override
public String getPublicKey() {
return BASE64_PUBLIC_KEY;
}
@Override
public byte[] getSALT() {
return SALT;
}
@Override
public String getAlarmReceiverClassName() {
return DownloaderServiceBroadcastReceiver.class.getName();
}
}
创建DownloaderServiceBroadcastReceiver.java
扩展BoradcastReceiver
,如果需要下载文件,将启动下载服务。
// DownloaderServiceBroadcastReceiver.java
public class DownloaderServiceBroadcastReceiver extends android.content.BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
try {
DownloaderClientMarshaller.startDownloadServiceIfRequired(context, intent, DownloaderService.class);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
}
}
如果扩展文件不可用,请从您的活动开始下载
Intent launchIntent = MainActivity.this.getIntent();
Intent intentToLaunchThisActivityFromNotification = new Intent(MainActivity.this, MainActivity.this.getClass());
intentToLaunchThisActivityFromNotification.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
intentToLaunchThisActivityFromNotification.setAction(launchIntent.getAction());
if (launchIntent.getCategories() != null) {
for (String category : launchIntent.getCategories()) {
intentToLaunchThisActivityFromNotification.addCategory(category);
}
}
// Build PendingIntent used to open this activity from notification
PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, 0, intentToLaunchThisActivityFromNotification, PendingIntent.FLAG_UPDATE_CURRENT);
// Request to start the download
int startResult = DownloaderClientMarshaller.startDownloadServiceIfRequired(this, pendingIntent, DownloaderService.class);
有关完整的详细信息和代码,请查看How to Set Up Android App to Support Expansion Files。