我是Android开发的初学者。我刚刚发布了一个应用程序,但发现了一些故障,所以我想通过创建一个与发布的应用程序具有相同包名的新Android项目来纠正这些故障。但是一旦我完成了更新应用程序,这个应用程序没有在手机上运行(调试)。说“不幸的是,这个App已经停止了。”此外我还试图加入adMob。
请帮助我,因为我必须尽快发布。
一旦应用程序崩溃,这是Logcat:
08-11 18:14:31.063: E/dalvikvm(15877): Could not find class 'com.google.ads.AdView', referenced from method com.gamerspitch.easybluetooth.BlueActivity.initAdView
08-11 18:14:31.254: E/AndroidRuntime(15877): FATAL EXCEPTION: main
08-11 18:14:31.254: E/AndroidRuntime(15877): java.lang.NoClassDefFoundError: com.google.ads.AdView
08-11 18:14:31.254: E/AndroidRuntime(15877): at com.gamerspitch.easybluetooth.BlueActivity.initAdView(BlueActivity.java:107)
08-11 18:14:31.254: E/AndroidRuntime(15877): at com.gamerspitch.easybluetooth.BlueActivity.onCreate(BlueActivity.java:40)
08-11 18:14:31.254: E/AndroidRuntime(15877): at android.app.Activity.performCreate(Activity.java:5133)
08-11 18:14:31.254: E/AndroidRuntime(15877): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
08-11 18:14:31.254: E/AndroidRuntime(15877): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
08-11 18:14:31.254: E/AndroidRuntime(15877): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
08-11 18:14:31.254: E/AndroidRuntime(15877): at android.app.ActivityThread.access$600(ActivityThread.java:141)
08-11 18:14:31.254: E/AndroidRuntime(15877): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
08-11 18:14:31.254: E/AndroidRuntime(15877): at android.os.Handler.dispatchMessage(Handler.java:99)
08-11 18:14:31.254: E/AndroidRuntime(15877): at android.os.Looper.loop(Looper.java:137)
08-11 18:14:31.254: E/AndroidRuntime(15877): at android.app.ActivityThread.main(ActivityThread.java:5103)
08-11 18:14:31.254: E/AndroidRuntime(15877): at java.lang.reflect.Method.invokeNative(Native Method)
08-11 18:14:31.254: E/AndroidRuntime(15877): at java.lang.reflect.Method.invoke(Method.java:525)
08-11 18:14:31.254: E/AndroidRuntime(15877): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
08-11 18:14:31.254: E/AndroidRuntime(15877): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
08-11 18:14:31.254: E/AndroidRuntime(15877): at dalvik.system.NativeStart.main(Native Method)
这是我的admob展示位置的XML。我只是跟着this link添加了admob。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/easyb"
tools:context=".BlueActivity" >
<LinearLayout
android:id="@+id/adviewPlaceholder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:orientation="vertical" >
</LinearLayout>
//Other elements
我把它放在我的清单文件&gt;
中<activity android:name="com.google.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" >
</activity>
这在我的Activity onCreate方法&gt;
中private AdView ad;
@Override
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_blue);
initAdView();
//Other elements
protected void initAdView() {
ad = new AdView(this, AdSize.SMART_BANNER, "a15204b9eb97566");
LinearLayout ll = (LinearLayout)findViewById(R.id.adviewPlaceholder);
ll.addView(ad);
ad.loadAd(new AdRequest());
}
protected void destroyAdView() {
if(ad != null) ad.destroy();
}
@Override
protected void onDestroy() {
// destroy the ad when the activity is destroyed
destroyAdView();
super.onDestroy();
}
先谢谢
答案 0 :(得分:2)
根据错误消息中的这一行:
08-11 02:28:56.973:E / AndroidRuntime(27461): java.lang.RuntimeException:无法启动活动 ComponentInfo {com.gamerspitch.easybluetooth / com.gamerspitch.easybluetooth.BlueActivity}: android.view.InflateException:二进制XML文件行#9:错误 充气类com.google.ads.AdView
您的AdView存在导致应用崩溃的问题。
您能否发布您的.xml布局文件以及活动。
<强>更新强>
为了使这一点更加明确。我从未在.xml中定义AdView。我只是在我的布局.xml文件中创建一个没有子项的布局,并通过代码我添加了AdView。它看起来像这样:
private AdView ad;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.yourlayout);
initAdView();
// other code...
}
protected void initAdView() {
ad = new AdView(this, AdSize.SMART_BANNER, "MY_AD_UNIT_ID");
LinearLayout ll = (LinearLayout) findViewById(R.id.adviewPlaceholder);
ll.addView(ad);
ad.loadAd(new AdRequest());
}
protected void destroyAdView() {
if(ad != null) ad.destroy();
}
@Override
protected void onDestroy() {
// destroy the ad when the activity is destroyed
destroyAdView();
super.onDestroy();
}
Layout yourlayout.xml文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent >
<!-- lots of other layout stuff here -->
<!-- make the adview be on the bottom of the screen -->
<LinearLayout
android:id="@+id/adviewPlaceholder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:orientation="vertical" >
</LinearLayout>
</RelativeLayout>
答案 1 :(得分:2)
看起来您的adView导致了崩溃。你是如何实现它的?您是否已包含清单中所需的所有权限?
ClassNotFound异常表示您的admob库未连接到XML。有一些事情可以导致这种情况,但最有可能是它没有在清单中声明:
<application android:icon="@drawable/icon" android:label="@string/app_name"
android:debuggable="true">
<activity android:label="@string/app_name" android:name="yourActivity">
.....
</activity>
<activity android:name="com.google.ads.AdActivity" <----- this line
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
</application>
或者它没有在XML文件的顶部声明:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads" <----- this line
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<com.google.ads.AdView android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
ads:adUnitId="MY_AD_UNIT_ID"
ads:adSize="BANNER"
ads:testDevices="TEST_EMULATOR, TEST_DEVICE_ID"
ads:loadAdOnCreate="true"/>
</LinearLayout>
答案 2 :(得分:0)
您的代码或XML AFAICT没有任何问题。该错误清楚地表明:
Could not find class 'com.google.ads.AdView'
您部署的应用似乎不包含Admob库。你需要找出原因。检查您的构建工具/环境。