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.现在我们来写代码。
为什么要继承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>
好,那我们现在就开始加入广告,我们以有米的广告为例。首先,到有米官网注册一个开发者的帐号,创建一个应用来获取开发者密钥和应用密钥。下载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>
相关文章推荐
- 【iOS-cocos2d-X 游戏开发之十三】详细讲解在Xcode中利用预编译并通过Jni调用Android的Java层代码(cocos2dx里访问调用Android函数)!
- 【iOS-cocos2d-X 游戏开发之十三】详细讲解在Xcode中利用预编译并通过Jni调用Android的Java层代码(cocos2dx里访问调用Android函数)!
- 详细讲解Android修改键盘文字的方法
- android 指纹识别调用实现方法及示例代码
- [转]Android通过NDK调用JNI,使用opencv做本地c++代码开发配置方法
- Unity3D 调用Android原生方法
- 基于Unity3D的Android游戏添加google广告的方法——使用AdMob
- 调用百度奇艺高清模式视频方法,去广告完整代码
- WebView加载html代码,js脚本中调用android对象的方法...
- [android] 代码注册广播接收者&利用广播调用服务的方法
- Android调用JNI方法 及 代码
- 如何:在Android应用中加入广告方法步骤!
- Android软件广告屏蔽方法及代码
- Android - Android调用JNI方法 及 代码
- Unity3D调用Android Java代码
- 宋体方法Unity3d通过苹果和google两种方法加入广告
- 如何在Unity3d中调用android的方法
- android的HAL第一种调用hal方法中的JNI代码的实现:
- 关于 android 中 postDelayed方法的讲解,作用:延时调用。
- Android程序设计:多线程同步数据的三种方法的调用代码