我用cocos2d-x v3开发了一个跨平台的应用程序,iOS版本运行得非常好,当我将它移植到android时,我有尺寸问题(apk> 50 MB),所以我决定使用Multiples apks,所以我制作了2个单独的apk,使用不同的版本代码:
第一次 apk支持小屏幕,普通屏幕和大屏幕:我认为此类别的屏幕大小为更低或等于,然后是960 * 640。
第二 apk支持xlarge屏幕:我认为此类别的屏幕尺寸为更大,然后是960 * 640。
请查看此image
第一个AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.mycompanyname.myappname" android:versionCode="1013002" android:versionName="1.0">
<uses-sdk android:minSdkVersion="10" />
<uses-feature android:glEsVersion="0x00020000" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="com.android.vending.BILLING" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<permission android:protectionLevel="signature" android:name="com.mycompanyname.myappname.permission.C2D_MESSAGE" />
<uses-permission android:name="com.mycompanyname.myappname.permission.C2D_MESSAGE" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<!-- Tell NativeActivity the name of our .so -->
<meta-data android:name="android.app.lib_name"
android:value="cocos2dcpp" />
<activity android:configChanges="orientation" android:label="@string/app_name" android:name="com.mycompanyname.myappname.AppActivity" android:screenOrientation="sensorPortait" android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name="com.parse.PushService" />
<receiver android:name="com.parse.ParseBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.USER_PRESENT" />
</intent-filter>
</receiver>
<receiver android:name="com.parse.GcmBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.mycompanyname.myappname" />
</intent-filter>
</receiver>
</application>
<supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:smallScreens="true" android:xlargeScreens="false" />
</manifest>
第二个AndroidManifest.xml
<?xml version='1.0' encoding='UTF-8'?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.mycompanyname.myappname" android:versionCode="1034001" android:versionName="1.0">
<uses-sdk android:minSdkVersion="10" />
<uses-feature android:glEsVersion="0x00020000" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="com.android.vending.BILLING" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<permission android:protectionLevel="signature" android:name="com.mycompanyname.myappname.permission.C2D_MESSAGE" />
<uses-permission android:name="com.mycompanyname.myappname.permission.C2D_MESSAGE" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<!-- Tell NativeActivity the name of our .so -->
<meta-data android:name="android.app.lib_name"
android:value="cocos2dcpp" />
<activity android:configChanges="orientation" android:label="@string/app_name" android:name="com.mycompanyname.myappname.AppActivity" android:screenOrientation="sensorPortait" android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name="com.parse.PushService" />
<receiver android:name="com.parse.ParseBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.USER_PRESENT" />
</intent-filter>
</receiver>
<receiver android:name="com.parse.GcmBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.mycompanyname.myappname" />
</intent-filter>
</receiver>
</application>
<supports-screens android:anyDensity="false" android:largeScreens="false" android:normalScreens="false" android:smallScreens="false" android:xlargeScreens="true" />
</manifest>
现在,当用户从谷歌播放下载应用程序时,无论Android手机的屏幕大小如何,他们都会得到第一个apk。 所以我的问题是:
你同意我的假设吗?2-为什么用户只获得第一个apk?
请帮助我,我的客户抱怨这个问题。 感谢您的时间和考虑。
答案 0 :(得分:0)
我不同意你的方法,你应该看看apk扩展(http://developer.android.com/google/play/expansion-files.html)或者从服务器下载dynmiclly。
话虽如此,我不知道是什么导致APK变得如此巨大(不要忘记APK是一个zip文件,你可以查看其内容)所以我的approches可能不适合
答案 1 :(得分:0)
集
<supports-screens android:anyDensity="false"
android:largeScreens="false"
android:normalScreens="true"
android:smallScreens="true"
android:xlargeScreens="false" />
第一次
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="false"
android:smallScreens="false"
android:xlargeScreens="true" />`
杨丹丹
仍然我不太确定
答案 2 :(得分:0)
您是否在创建版本代码时遵循此约定?