您的位置:首页 > 移动开发 > Unity3D

Unity3d Android加入广告和调用Android代码的方法。详细讲解!

2013-05-26 12:44 405 查看
首先,庆祝一下,我开始自己写博客了哈哈。这是我的第一篇文章。最近在研究如何加入广告,终于成功了。在这里分享一下我的技术。哈哈。

好,那我们现在就开始加入广告,我们以有米的广告为例。首先,到有米官网注册一个开发者的帐号,创建一个应用来获取开发者密钥和应用密钥。下载sdk包,现在出了一个组合的包。

  1.  打开eclipse,创建一个android工程,这里要注意一下,创建向导中,应用的名称和包名一定要和你unity中的是一样的,不然打包后是没法运行的。在这里,我已一个名为ad的应用为例,他的包名为com.spinach.ad我们就应该这样做:


之后,点击下一步

2.这里按照这样设置,首先创建activity是肯定的。至于创建图标,这个是后来可以改的,但是我推荐在这里设置好,因为这样很方便。

注意:当我们完成后,你在unity中设置图标将是无效的。打包后应用的图标将会按照android项目中设置的图标来设置。原因很简单,unity会按照你导入的manifest来修改打包的应用的manifest,而不会在是自动生成一个manifest文件。后面的可以一直下一步,如果个人有其他需要,可以自己改。

3.导入包。我们需要导入两个包(根据你想实现的功能来定,我们以有米的sdk包为例,有米sdk为一个包)。还要导入一个unity的接口包,这个包叫classes,jar

在Mac中,他的目录是Unity.app/Content/PlaybackEngines/AndroidPlayer/bin

Windows中目录在editer文件夹中。

为什么导入这个包?

这个包是unity给android提供的接口,通过这个,我们可以实现android与unity的通信。

接下来,导入有米的sdk包。

导入包的方式:拖动包到eclipse的android项目中的libs文件夹中,然后右键,Bulid Path--Add to build path.

4.现在我们来写代码。

package com.spinach.ad;

import android.os.Bundle;
import android.view.ViewGroup.LayoutParams;
import android.widget.LinearLayout;
import android.app.Activity;
import net.youmi.android.AdManager;
import net.youmi.android.banner.AdSize;
import net.youmi.android.banner.AdView;
import net.youmi.android.spot.SpotManager;

import com.unity3d.player.UnityPlayerActivity;

public class MainActivity extends UnityPlayerActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AdManager.getInstance(this).init("*********","**********",false);
LinearLayout layout=new LinearLayout(this);
addContentView(layout, new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));
AdView adView = new AdView(this,AdSize.SIZE_320x50);
LayoutParams params = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
layout.addView(adView, params);
}
}
为什么?

为什么要继承UnityPlayerActivity类?

UnityPlayerActivity类就是unity提供的接口,我们要在这里使用。


至于代码的写法,我想会android开发的应该都能理解。在这里不多说了。

提示:不要忘记改写manifest。按照你需要的功能,例如我们现在用的是有米广告那就按照有米的文章在manifest中添加代码。



6.打包成jar文件。首先,Build一下android项目,在build前,先Clean一下,这两个选项都在eclipse的project选项卡中。现在,用finder(我的电脑)打开当前的项目。找到bin文件夹,找到classes。之后打开你能看见的文件夹。这些文件夹的名字就是你的包名。例如,这里的包名是com.spinach.ad,那么文件夹就是com>>spinach>>ad。

在Mac中,打开终端,cd到classes文件夹。注意,一定要cd到classes。执行打包命令。jar -cvf class.jar *
这句话,将当前文件夹下的所有class文件打包成jar。执行后,你会看见一个jar文件,叫class。解压一下这个,你会看见一个和包名相同的目录。如我的是com>>spinach>>ad。在jar(现在解压了,可以理解成rar,或者zip。但不要忘了,他依然是jar)的根目录中,(就是有你包名的第一段的文件夹名)还会有个meta-data。
确认jar中的文件顺序和你的包名一样时。进行下一步。

提示:如果包名不一样,则应用在运行时,会崩溃。当你发现包名和文件夹的顺序不一样时,请确认你在终端cd到的是classes文件夹。在windows中的打包方法,可以在网上搜一下。过几天我会补上。

7. 打开unity3d。在你的项目中,新建一个文件夹,叫Plugins,在Plugins中,新建一个叫Android的文件夹。(不要改文件夹名)

在Android文件夹中,新建一个叫bin的文件夹。把刚才打包的class.jar放进去。之后,把刚才那个android项目中的AndroidManifest,libs,res,proguard-project,project.properties.和其他你需要的东西。放进去。但是注意把libs中的classes.jar(unity3d的接口)删除,如果有这个的话,build的时候,会和unity的冲突。



8. OK,现在可以build了,一定注意unity中设置的包名和android项目中的一样。

过几天我再写如果调用android的函数,可以实现显示插播广告。

如果觉得这个文章对你有帮助,请你在你的手机上,下载我的应用(http://as.baidu.com/a/item?docid=3056842&pre=web_am_se)。帮我点几个广告。

。有米的广告只有在安装后在生效。

谢谢你的支持。

附上我的AndroidManifest。<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.spinach.bsg"
android:versionCode="1"
android:versionName="1.0.1" >

<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="8" />

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.spinach.bsg.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>
<activity
android:name="net.youmi.android.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation"
android:theme="@android:style/Theme.Light.NoTitleBar" >
</activity>
<service
android:name="net.youmi.android.AdService"
android:exported="false" >
</service>
<receiver
android:name="net.youmi.android.AdReceiver" >
<intent-filter>
<action android:name="android.intent.action.PACKAGE_ADDED" />
<data android:scheme="package" />
</intent-filter>
</receiver>
</application>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<!--以下两个为可选权限-->

<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
</manifest>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: