我的应用程序在 Android 4.4 上运行良好,但在 2.3 上崩溃。甚至没有开始
Posted
技术标签:
【中文标题】我的应用程序在 Android 4.4 上运行良好,但在 2.3 上崩溃。甚至没有开始【英文标题】:My Application is running fine on Android 4.4 but crashes on 2.3. Not even starting 【发布时间】:2014-03-16 20:00:34 【问题描述】:下面是源代码。 这个程序只是做记忆匹配游戏,在 android 4.4 中运行良好 包 com.example.myimagematchgamev10;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.drawable.Drawable;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.os.Build;
import android.widget.Button;
import android.widget.ImageButton;
import java.util.HashMap;
import java.util.Random;
class MyCustomImageButton extends ImageButton
protected int holdingImage;
public MyCustomImageButton(Context context)
super(context);
this.holdingImage = -1;
public MyCustomImageButton(Context context, AttributeSet attrs)
super(context, attrs);
this.holdingImage = -1;
public MyCustomImageButton(Context context, AttributeSet attrs, int defStyle)
super(context, attrs, defStyle);
this.holdingImage = -1;
//public class MainActivity extends ActionBarActivity
public class MainActivity extends Activity
Random myR = new Random ();
MyCustomImageButton[] myImageButtons;
int[] myImages=R.drawable.one,R.drawable.two,R.drawable.five,R.drawable.seven,R.drawable.eight,R.drawable.six,R.drawable.three,R.drawable.four;
int[] myImageButtonArray = R.id.imageButton0, R.id.imageButton1, R.id.imageButton2, R.id.imageButton3, R.id.imageButton4,
R.id.imageButton5, R.id.imageButton6, R.id.imageButton7, R.id.imageButton8, R.id.imageButton9,
R.id.imageButton10, R.id.imageButton11, R.id.imageButton12, R.id.imageButton13, R.id.imageButton14,
R.id.imageButton15;
// The following four lies for holding temp data while checking the match
int myFirstButtonImage = R.drawable.ic_launcher;
int mySecondButtonImage = R.drawable.ic_launcher;
ImageButton myFirstButton = null;
ImageButton mySecondButton = null;
// for message box
int myNoOfClick = 0;
int myNoOfCompletedCells = 0;
Button myNewgame;
AlertDialog.Builder alertDialog; // = new AlertDialog.Builder(MainActivity.this);
protected void initializeGrid()
for (int i=0; i < 16; ++i)
myImageButtons[i].setBackgroundResource(R.drawable.ic_launcher);
myImageButtons[i].setClickable(true);
myImageButtons[i].holdingImage = -1;
myNoOfClick = 0;
myNoOfCompletedCells = 0;
protected void createGrid()
myImageButtons = new MyCustomImageButton[16];
for (int i=0; i < 16; ++i)
myImageButtons[i] = (MyCustomImageButton) findViewById(myImageButtonArray[i]);
protected void loadImages()
int myNextInt;
for (int i=0; i < 8; ++i)
for(int j=0; j < 2; ++j)
myNextInt = myR.nextInt(16);
while (myImageButtons[myNextInt].holdingImage != -1)
myNextInt = myR.nextInt(16);
if(myImageButtons[myNextInt].holdingImage == -1)
myImageButtons[myNextInt].setBackgroundResource(R.drawable.ic_launcher);
myImageButtons[myNextInt].holdingImage = myImages[i];
//myGridValues[myNextInt] = i+1;
// myMap.put(myImageButtonArray[myNextInt],myImages[i]);
protected void showMessage()
alertDialog = new AlertDialog.Builder(MainActivity.this);
//alertDialog = new AlertDialog.Builder(MainActivity.this).create();
alertDialog.setTitle("Score");
alertDialog.setMessage("No. Of clicks are: " + myNoOfClick +" !");
alertDialog.setInverseBackgroundForced(true);
alertDialog.setCancelable(true);
alertDialog.setPositiveButton("OK", new DialogInterface.OnClickListener()
public void onClick(DialogInterface dialog,
int which)
dialog.dismiss();
);
alertDialog.show();
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
createGrid();
initializeGrid();
loadImages();;
myNewgame = (Button) findViewById(R.id.newGame);
myNewgame.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View view)
initializeGrid();
loadImages();
);
for(int i=0; i<myImageButtons.length; ++i)
final MyCustomImageButton myTempImageButton = myImageButtons[i];
//final int myIBId = myTempImageButton.getId();
myTempImageButton.setOnClickListener(new View.OnClickListener()
//@Override
public void onClick(View view)
++myNoOfClick;
myTempImageButton.setBackgroundResource(myTempImageButton.holdingImage);
if (myFirstButtonImage == R.drawable.ic_launcher)
if(mySecondButtonImage == R.drawable.ic_launcher)
myFirstButtonImage = myTempImageButton.holdingImage;
myFirstButton = myTempImageButton;
myTempImageButton.setClickable(false);
myNoOfCompletedCells += 2;
if (myNoOfCompletedCells >= 16)
showMessage();
else
myFirstButton.setClickable(true);
mySecondButton.setClickable(true);
myFirstButton.setBackgroundResource(R.drawable.ic_launcher);
mySecondButton.setBackgroundResource(R.drawable.ic_launcher);
myFirstButton = myTempImageButton;
myFirstButtonImage = myTempImageButton.holdingImage;
myTempImageButton.setClickable(false);
else
myTempImageButton.setClickable(false);
if (myFirstButtonImage == myTempImageButton.holdingImage) // For Success full Match
myFirstButton.setClickable(false);
myFirstButtonImage = R.drawable.ic_launcher;
mySecondButtonImage = R.drawable.ic_launcher;
else
mySecondButton = myTempImageButton;
mySecondButtonImage = myTempImageButton.holdingImage;
myFirstButtonImage = R.drawable.ic_launcher;
);
The above is the source file
我在清单 xml 中有以下内容
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myimagematchgamev10"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="7"
android:targetSdkVersion="10" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.myimagematchgamev10.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
以上是manifest xml
以下是我得到的日志
等待设备。 "C:\Program Files (x86)\Android\android-studio\sdk\tools\emulator.exe" -avd AVD_for_Nexus_S -netspeed full -netdelay none
连接的设备:emulator-5554 设备在线:emulator-5554 目标设备:AVD_for_Nexus_S [emulator-5554] 上传文件 本地路径:D:\Android\MyApplicationProject\MyImageMatchgameV1.0Project\MyImageMatchgameV1.0\build\apk\MyImageMatchgameV1.0-debug-unaligned.apk 远程路径:/data/local/tmp/com.example.myimagematchgamev10 安装 com.example.myimagematchgamev10 设备外壳命令:pm install -r "/data/local/tmp/com.example.myimagematchgamev10" 包:/data/local/tmp/com.example.myimagematchgamev10 成功
启动应用程序:com.example.myimagematchgamev10/com.example.myimagematchgamev10.MainActivity。 设备外壳命令:am start -n "com.example.myimagematchgamev10/com.example.myimagematchgamev10.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER 开始: Intent act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.example.myimagematchgamev10/.MainActivity
【问题讨论】:
简单。 LogcatNotFoundException。 @Enrichman 哈哈不错。 @Enrichman 也可能是 LogcatNotPostedException ;-) 巨魔,大声笑......重点是你应该发布 logcat targetSdkVersion="10" o_O 【参考方案1】:据我所知,没有日志,您使用的是在 Gingerbread 之后引入的 API。
只需阅读 LogCat,它应该会为您提供有关不起作用的确切功能的提示。
【讨论】:
您能告诉我在哪里查看日志吗?我对 Android 开发和编辑器完全陌生。我正在使用 Android 工作室。 启动应用程序:com.example.myimagematchgamev10/com.example.myimagematchgamev10.MainActivity。设备外壳命令:am start -n "com.example.myimagematchgamev10/com.example.myimagematchgamev10.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER 开始:Intent act=android.intent .action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.example.myimagematchgamev10/.MainActivity [1] 分段错误 am start -n "com...以上是关于我的应用程序在 Android 4.4 上运行良好,但在 2.3 上崩溃。甚至没有开始的主要内容,如果未能解决你的问题,请参考以下文章
我的带有 Facebook SDK v4.3 的 Android 应用程序可以在低于 4.4 Kitkat 的版本上运行吗?
Android 小部件在模拟器中运行良好,但在手机上它变成了 Google App 小部件
无法在 Android 4.4 KitKat 上快速关闭 ChunkedInputStream
在 Android 4.4+ 上运行时如何忽略 Cordova App 的字体大小设置更改?
Mockito + Dexmaker 测试在 Android < 4.4 上运行时崩溃
UnsatisfiedLinkError 在 Android 4.4 libDevil 中找不到符号“png_set_longjmp_fn”