开发环境
Window7
Unity3D 3.4.1
MB525defy Android 2.2.1
学习:
Eclipse错误的解决方案应用
错误解决方案
(1)Java错误
解决办法有两个:首先是项目 - >清除,然后勾上自动构建,可以解决一类常见的问题。其次是窗口 - >首选项 - >Java - >构建路径中的项目 - >应用,可以解决一些意想不到的问题。
(2)错误产生最终的归档错误
这样的错误,是因为证书到期造成的,一般证书的有效期为一年或一年以上,所有新的Android项目将是一个没有理由的错误,该解决方案是窗口 - >首选项 - > Android - >生成默认的调试密钥库的目录,复制内部地址到两个文件夹打开删除调试。密钥库和ddms.cfg,重新启动Eclipse可以解决。
AdMob应用
首先,Eclipse Android项目导入项目出现AdMob(导入>现有项目导入到工作区),将得到一个错误。
然后选择修改引用到项目文件右键- >属性- > Java构建路径内库, admob-sdk-android.jar,和classes.jar文件重新编辑库里面,对订单和出口检查。
注:网上的AdMob-sdk-android.jar包的AdMob SDK自己的一些方法,但不是最新的版本,下载学生的最新版本要注意的Android系统版本,最好超过3.2,否则,广告栏会显示一段时间的Error. classes.jar Unity,你可以知道出现的位置不再是引入了搜索。
如果不出意外,这应该是完全没有错误,错误见上文和Eclipse错误的说明。下面我们来看一下代码
AdMob.java
<!-- Admob -->
<meta-data android:name="com.google.android.gms.version" android:value="7327000" />
<activity android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" android:theme="@android :style/Theme.Translucent"/>
<!-- Amazon Mobile Ads -->
<activity android:name="com.amazon.device.ads.AdActivity"
android:configChanges="keyboardHidden|orientation|screenSize"/>
<!-- InMobi -->
<activity android:name="com.inmobi.androidsdk.IMBrowserActivity"
android:configChanges="keyboardHidden|orientation|keyboard|smallestScreenSize|screenSize"
android:theme="@android :style/Theme.Translucent.NoTitleBar"
android:hardwareAccelerated="true" />
<!-- Millennial Media -->
<activity android:name="com.millennialmedia.android.MMActivity"
android:theme="@android :style/Theme.Translucent.NoTitleBar"
android:configChanges="keyboardHidden|orientation|keyboard|screenSize" ></activity>
<!-- Keymob -->
<activity android:name="com.keymob.sdk.core.KeymobActivity" android:theme="@android :style/Theme.Dialog"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />
<!-- baidu -->
<activity android:name="com.baidu.mobads.AppActivity" android:configChanges="keyboard|keyboardHidden|orientation"/>
<!-- adcolony -->
<activity android:name="com.jirbo.adcolony.AdColonyOverlay" android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@android :style/Theme.Translucent.NoTitleBar.Fullscreen" />
<activity android:name="com.jirbo.adcolony.AdColonyFullscreen" android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" />
<activity android:name="com.jirbo.adcolony.AdColonyBrowser" android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" />
AndroidMainifest.xml
<meta-data android:name="com.google.android.gms.version" android:value="8115000" />
<activity android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" android:theme="@android:style/Theme.Translucent"/>
<!-- Amazon Mobile Ads -->
<activity android:name="com.amazon.device.ads.AdActivity"
android:configChanges="keyboardHidden|orientation|screenSize"/>
<!-- InMobi -->
<activity android:name="com.inmobi.androidsdk.IMBrowserActivity"
android:configChanges="keyboardHidden|orientation|keyboard|smallestScreenSize|screenSize"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:hardwareAccelerated="true" />
<!-- Millennial Media -->
<activity android:name="com.millennialmedia.android.MMActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="keyboardHidden|orientation|keyboard|screenSize" ></activity>
<!-- Keymob -->
<activity android:name="com.keymob.sdk.core.KeymobActivity" android:theme="@android:style/Theme.Dialog"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />
这是一个典型的Android项目的代码,有几件事情需要注意,如果你想在自己的应用中使用,根据参考结构的出现创建新的项目,这两个文件的出现自定义名称变出即可。Android:价值在AdMob ID填写申请。出现简化代码到最低限度,所以没有使用资源,如果你想在需要的自定义图标去修改AndroidManifest实现。在一个Android博客上Feather有提到这个命令可以防止睡眠。必须用同一个Unity包,当Eclipse项目运行肯定是一个错误。
当上述没有问题把AdMob.java jar,选择AdMob单击鼠标右键 - >导出 - > Java - > JAR文件 - >下一页
选择你的JAR文件的路径和名称,直接完成这个jar包,它仅包括已编译AdMob.class非常小,很干净。然后打开出现的Unity项目AdMob的测试(文件 - >打开项目),双击UnityAdMob,你只能看到一个摄像头。以上只有一个脚本Ad.cs.
Ad.cs
class AdEventListener implements IAdEventListener {
@Override
public void onLoadedSuccess(int arg0, Object arg1,
PlatformAdapter arg2) {
Log.d(TAG, arg2+" onLoadedSuccess for type "+arg0 +" withdata "+arg1);
if(arg0==AdTypes.INTERSTITIAL){
((IInterstitialPlatform)arg2).showInterstitial();//广告加载成功的时候就
}
}
@Override
public void onLoadedFail(int arg0, Object arg1, PlatformAdapter arg2) {
Log.d(TAG, arg2+" onLoadedFail for type "+arg0 +" withdata "+arg1);
}
@Override
public void onAdOpened(int arg0, Object arg1, PlatformAdapter arg2) {
Log.d(TAG, arg2+" onAdOpened for type "+arg0 +" withdata "+arg1);
}
@Override
public void onAdClosed(int arg0, Object arg1, PlatformAdapter arg2) {
Log.d(TAG, arg2+" onAdClosed for type "+arg0 +" withdata "+arg1);
}
@Override
public void onAdClicked(int arg0, Object arg1, PlatformAdapter arg2) {
Log.d(TAG, arg2+" onAdClicked for type "+arg0 +" withdata "+arg1);
}
@Override
public void onOtherEvent(String eventName, int adtype, Object data,
PlatformAdapter adapter) {
Log.d(TAG, adapter+" onLoadedSuccess for type"+adtype +" withEvent "+eventName);
}
}
看起来很简单,而且确实不难,首先建立插件 - > Android -> bin | libs这个文件集,在Eclipse项目AndroidManifest.xml中放置Android目录,UnityAdMob.jar包就可以了,这种重写的AdMob SDK的库注:捆绑标识符设置为相同的名称和Eclipse项目包,即使没有Ad.cs程序运行也运行一个广告,这个C#类的广告交换,以及里面的两款Android JNI.FindClass(“XXX”)进行修改。
操作结果:这应该是能够满足大部分的显示位置的麻烦修改显示的广告。