2012-07-26 74 views
1

在我的應用程序使用54 images.in以支持多屏幕,我創建文件夾,這樣如何減小應用程序的大小?

drawable-hdpi 
drawable-mdpi 
drawable-xdpi 
drawable-mdpi 

,並在每個folder.due的所有圖像粘貼到該應用程序的大小增加了很多。 ... 然後我嘗試喜歡這種方式... 只帶一個文件夾繪製保留所有54圖像,刪除所有drawabl-mdpi,drawable-hdpi,drawable-mdpi和drawable-xdpi文件夾。 在我的清單文件我mensioned爲

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

,但它給我的錯誤,這樣

07-25 15:04:25.928: ERROR/dalvikvm-heap(13963): 2764800-byte external allocation too large for this process. 
07-25 15:04:25.928: ERROR/GraphicsJNI(13963): VM won't let us allocate 2764800 bytes 
07-25 15:04:25.928: DEBUG/AndroidRuntime(13963): Shutting down VM 
07-25 15:04:25.928: WARN/dalvikvm(13963): threadid=1: thread exiting with uncaught exception (group=0x4001d7e0) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963): FATAL EXCEPTION: main 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.jacksonville.alenseventapp/com.jacksonville.alenseventapp.HomeActivity}: android.view.InflateException: Binary XML file line #1: Error inflating class <unknown> 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.os.Handler.dispatchMessage(Handler.java:99) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.os.Looper.loop(Looper.java:123) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at java.lang.reflect.Method.invokeNative(Native Method) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at java.lang.reflect.Method.invoke(Method.java:521) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at dalvik.system.NativeStart.main(Native Method) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963): Caused by: android.view.InflateException: Binary XML file line #1: Error inflating class <unknown> 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.view.LayoutInflater.createView(LayoutInflater.java:513) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:563) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.view.LayoutInflater.inflate(LayoutInflater.java:385) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.view.LayoutInflater.inflate(LayoutInflater.java:320) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.view.LayoutInflater.inflate(LayoutInflater.java:276) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:198) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.app.Activity.setContentView(Activity.java:1647) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at com.jacksonville.alenseventapp.HomeActivity.onCreate(HomeActivity.java:12) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  ... 11 more 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963): Caused by: java.lang.reflect.InvocationTargetException 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.widget.LinearLayout.<init>(LinearLayout.java:115) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at java.lang.reflect.Constructor.constructNative(Native Method) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at java.lang.reflect.Constructor.newInstance(Constructor.java:446) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.view.LayoutInflater.createView(LayoutInflater.java:500) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  ... 21 more 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963): Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.graphics.Bitmap.nativeCreate(Native Method) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.graphics.Bitmap.createBitmap(Bitmap.java:468) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.graphics.Bitmap.createBitmap(Bitmap.java:435) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:340) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.graphics.BitmapFactory.finishDecode(BitmapFactory.java:488) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:462) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:323) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:697) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.content.res.Resources.loadDrawable(Resources.java:1709) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.content.res.TypedArray.getDrawable(TypedArray.java:601) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.view.View.<init>(View.java:1885) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.view.View.<init>(View.java:1834) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  at android.view.ViewGroup.<init>(ViewGroup.java:285) 
07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  ... 25 more 

,如果任何機構知道這件事plz幫助我...

回答

3

,我們在您的應用程序由於本教程主要四大誤區

java.lang.RuntimeException: Unable to start activity 
    **ComponentInfo{com.jacksonville.alenseventapp/com. 
    jacksonville.alenseventapp.HomeActivity}: 

** android.view.InflateException: Binary XML file line #1: 
     Error inflating class <unknown> 
     07-25 15:04:25.967: ERROR/AndroidRuntime(13963):  
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
     and 07-25 15:04:25.967: ERROR/AndroidRuntime(13963): Caused by: 
     android.view.InflateException: Binary XML file line #1: 
     Error inflating class <unknown> 

這兩個錯誤提示,你指的是不存在 一個包,這可能是你跟着做這個代碼, 你用那個代碼的包名稱在你的應用程序中

和第三個錯誤

07-25 15:04:25.967: ERROR/AndroidRuntime(13963): Caused by: 
java.lang.reflect.InvocationTargetException 

看到這些問題,也有同樣的問題

How to remove this error ? java.lang.reflect.InvocationTargetException

InvocationTargetException on inflating an xml - android

,也看到這個

http://developer.android.com/reference/java/lang/reflect/InvocationTargetException.html

,它由b引起的內存eing低

Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget 

避免這一點,你可以用這個方法來顯示

// here path is from where you are picking the image 



Bitmap myBitmap = ShrinkBitmap(Path, 300, 300); 

MyImageView.setImageBitmap(myBitmap); 


private Bitmap ShrinkBitmap(String file, int width, int height) { 
     // TODO Auto-generated method stub 
     BitmapFactory.Options bmpFactoryOptions = new BitmapFactory.Options(); 
     bmpFactoryOptions.inJustDecodeBounds = true; 
     Bitmap bitmap = BitmapFactory.decodeFile(file, bmpFactoryOptions); 

     int heightRatio = (int)Math.ceil(bmpFactoryOptions.outHeight/(float)height); 
     int widthRatio = (int)Math.ceil(bmpFactoryOptions.outWidth/(float)width); 

     if (heightRatio > 1 || widthRatio > 1) 
     { 
     if (heightRatio > widthRatio) 
     { 
      bmpFactoryOptions.inSampleSize = heightRatio; 
     } else { 
      bmpFactoryOptions.inSampleSize = widthRatio; 
     } 
     } 

     bmpFactoryOptions.inJustDecodeBounds = false; 
     bitmap = BitmapFactory.decodeFile(file, bmpFactoryOptions); 
    return bitmap; 
    } 
+0

繪製,華電國際 繪製,MDPI 繪製-xdpi 繪製,MDPI,如果我按照這個方法,我DONOT得到任何錯誤,但問題是apk的大小是接近8MB – Venkat 2012-07-26 06:56:39

+0

「問題是apk大小接近8mb」有什麼問題int – 2012-07-26 06:59:37

+0

venkat應用程序可能需要一段時間才能安裝,但一旦安裝它的處理將罰款 – 2012-07-26 07:14:53