我正在尝试运行亚马逊提供的示例项目,旨在说明亚马逊的移动广告API,但它产生了一个错误。这是logcat的内容:
11-18 02:34:49.470: W/dalvikvm(938): threadid=1: thread exiting with uncaught exception (group=0x409c01f8)
11-18 02:34:49.501: E/AndroidRuntime(938): FATAL EXCEPTION: main
11-18 02:34:49.501: E/AndroidRuntime(938): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.amazon.sample.simplead/com.amazon.sample.simplead.SimpleAdActivity}: java.lang.ClassNotFoundException: com.amazon.sample.simplead.SimpleAdActivity
11-18 02:34:49.501: E/AndroidRuntime(938): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1923)
11-18 02:34:49.501: E/AndroidRuntime(938): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2024)
11-18 02:34:49.501: E/AndroidRuntime(938): at android.app.ActivityThread.access$600(ActivityThread.java:126)
11-18 02:34:49.501: E/AndroidRuntime(938): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1159)
11-18 02:34:49.501: E/AndroidRuntime(938): at android.os.Handler.dispatchMessage(Handler.java:99)
11-18 02:34:49.501: E/AndroidRuntime(938): at android.os.Looper.loop(Looper.java:137)
11-18 02:34:49.501: E/AndroidRuntime(938): at android.app.ActivityThread.main(ActivityThread.java:4479)
11-18 02:34:49.501: E/AndroidRuntime(938): at java.lang.reflect.Method.invokeNative(Native Method)
11-18 02:34:49.501: E/AndroidRuntime(938): at java.lang.reflect.Method.invoke(Method.java:511)
11-18 02:34:49.501: E/AndroidRuntime(938): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
11-18 02:34:49.501: E/AndroidRuntime(938): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
11-18 02:34:49.501: E/AndroidRuntime(938): at dalvik.system.NativeStart.main(Native Method)
11-18 02:34:49.501: E/AndroidRuntime(938): Caused by: java.lang.ClassNotFoundException: com.amazon.sample.simplead.SimpleAdActivity
11-18 02:34:49.501: E/AndroidRuntime(938): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
11-18 02:34:49.501: E/AndroidRuntime(938): at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
11-18 02:34:49.501: E/AndroidRuntime(938): at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
11-18 02:34:49.501: E/AndroidRuntime(938): at android.app.Instrumentation.newActivity(Instrumentation.java:1023)
11-18 02:34:49.501: E/AndroidRuntime(938): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1914)
11-18 02:34:49.501: E/AndroidRuntime(938): ... 11 more
11-18 02:39:49.690: I/Process(938): Sending signal. PID: 938 SIG: 9
这是android清单文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.amazon.sample.simplead"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="4" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".SimpleAdActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.amazon.device.ads.MraidBrowser" android:configChanges="keyboardHidden|orientation"/>
<activity android:name="com.amazon.device.ads.VideoActionHandler" android:configChanges="keyboardHidden|orientation"/>
</application>
我尝试更改说明的行:
android:name=".SimpleAdActivity"
到
android:name="com.amazon.sample.simplead.SimpleAdActivity"
仍然得到同样的错误。
编辑:这是类代码
/**
* Copyright 2012 Amazon.com, Inc. or its affiliates. All Rights Reserved.
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at http://aws.amazon.com/apache2.0/
* or in the "license" file accompanying this file.
* This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.amazon.sample.simplead;
import com.amazon.device.ads.*;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
/**
* This is a simple app for testing ad loading capabilities of the Amazon Mobile Ads SDK.
* This app demonstrates ad loading, expanding and collapsing along with device rotation.
*/
public class SimpleAdActivity extends Activity implements AdListener
{
private AdLayout adView; // The ad view used to load and display the ad.
private static final String APP_ID = "sample-app-v1_pub-2"; // Sample App Key. Replace this variable with your App Key
private static final String LOG_TAG = "SimpleAdSample"; // Tag used to prefix all log messages
/**
* When the activity starts, load an ad and set up the button click event to load another ad when it's clicked.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// For debugging purposes enable logging, but disable for production builds
AdRegistration.enableLogging(this, true);
// For debugging purposes flag all ad requests as tests, but set to false for production builds
AdRegistration.enableTesting(this, true);
adView = (AdLayout)findViewById(R.id.ad_view);
adView.setListener(this);
try {
AdRegistration.setAppKey(getApplicationContext(), APP_ID);
} catch (Exception e) {
Log.e(LOG_TAG, "Exception thrown: " + e.toString());
return;
}
// Assign an onclick handler to the button that will load our ad.
Button button = (Button) findViewById(R.id.load_ad_button);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
LoadAd();
}
});
// Calling load ad in the Activity's onCreate method allows a new ad to be loaded
// when the application starts and also when the device is rotated.
LoadAd();
}
/**
* Load a new ad.
*/
public void LoadAd() {
// Load the ad with the appropriate ad targeting options.
AdTargetingOptions adOptions = new AdTargetingOptions();
adView.loadAd(adOptions);
}
/**
* This event is called after a rich media ads has collapsed from an expanded state.
*/
@Override
public void onAdCollapsed(AdLayout view) {
Log.d(LOG_TAG, "Ad collapsed.");
}
/**
* This event is called if an ad fails to load.
*/
@Override
public void onAdFailedToLoad(AdLayout view, AdError error) {
Log.w(LOG_TAG, "Ad failed to load. Code: " + error.getResponseCode() + ", Message: " + error.getResponseMessage());
}
/**
* This event is called once an ad loads successfully.
*/
@Override
public void onAdLoaded(AdLayout view, AdProperties adProperties) {
Log.d(LOG_TAG, adProperties.getAdType().toString() + " Ad loaded successfully.");
}
/**
* This event is called after a rich media ad expands.
*/
@Override
public void onAdExpanded(AdLayout view) {
Log.d(LOG_TAG, "Ad expanded.");
}
}
答案 0 :(得分:3)
将amazon-ads-x.y.z.jar添加为Java Build Path -> Order and Export
下的导出库。
答案 1 :(得分:0)
您的清单标记需要package =“com.amazon.sample.simplead”
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.amazon.sample.simplead">
<uses-sdk android:minSdkVersion="4" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".SimpleAdActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.amazon.device.ads.MraidBrowser" android:configChanges="keyboardHidden|orientation"/>
<activity android:name="com.amazon.device.ads.VideoActionHandler" android:configChanges="keyboardHidden|orientation"/>
</application>
</manifest>
编辑:我假设您正在使用Eclipse。展开 src
文件夹,应该有一个名为com.amazon.sample.simplead
的包文件夹,旁边通常带有棕色图标。如果展开该包文件夹,您应该看到一堆包括SimpleAdActivity
的类。那是吗?