FC2ブログ
07 «1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.» 09

ハルシオンシステムの気ままBlog

株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

 

【ハルシオンブログ】最近頑張って64対応したのに、ポケットガールがGooglePlayからけされたんですけど? 

こんにちは。坂内です。

ポケットガールがGooglePlayから消されました。

え?


こんなメールを朝いただきまして、震えております。




え?なんて?




ちゃんとエビデンスまで用意してくださってました。

あぁ Adの表記がないというのですね。

いきなりくるよねー 今まで数年なんもなかったのに、くるよねー
あ、最近64対応のためにアプデしたから見られたんですね。

某アドフリさんの動画ネイティブを使う方は注意してください。
アドフリくんに確認したところ、SDKでそのような表記を追加するのは無理らしく、自分でちゃんと書いてね。
っていう対応でした。


ってことで、こんな感じで「AD」って文字をいれて、再審査投げてみました。





結果はいかに!?


これでも通らなかったら、動画ネイティブ外してやんよ!


Category: 開発日記(Unity)

tb 0 : cm 0   

【ハルシオンブログ】C#7だとoutパラメータの変数の書き方変えられるんですね 

こんにちは。
大坂です。

今週も適当にC#のお話。
なんかoutを使うときに変数宣言して書くのが嫌いだったんですが、C#7から違う書き方ができるんですね。
もともとこんな感じだったやつ。
    Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if(Physics.Raycast(ray, out hit, 10.0f))
{
Debug.Log(hit.collider.gameObject.transform.position);
}

こうかけるようになってますね。
    Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if(Physics.Raycast(ray, out RaycastHit hit, 10.0f))
{
Debug.Log(hit.collider.gameObject.transform.position);
}

先にoutで使用する変数の宣言をしないといけなかったのがoutのところに型を指定できるようになってますね。
大した差ではないですけど、こっちのほうが好みです。

ではでは今週もこれでノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【ハルシオンブログ】夏のビルド大作戦終了のおしらせ。結局Unity2019で最終ビルドしたよ。 

おはようございます!坂内です!

本日はずっとハマっていたビルドの続報。

先週のこの記事。
【ハルシオンブログ】3週間かかったビルドがようやく終盤になりましたのでご報告します。Admob+アドフリくん+NCMBのビルドについて。

から、さらにいじってみた。

現状でのビルド環境

<環境>
Unity2019.1.8f1
- NCMB.4.0.0
- TapjoyUnityPlugin_v12.3.1
- GoogleMobileAds-v3.18.0
- adfurikunSDK_Unity_moviereward_3_0_1
- Social-Connector v0.5.0

先週のビルドで、新たにSocial-Connectorが動かないという問題が発生。
また、先週の時点ではTapjoyが微妙に動かない、どうしようといったことがあったが、今回解消。

また、Unity2018以前でTextMeshProを使っていると、Unity2019にしたときにこんなエラーが出ることがある。
/UnityProject/XXXXXXXX/Library/PackageCache/com.unity.textmeshpro@2.0.1/Scripts/Runtime/TMPro_Private.cs(1916,130): error CS1644: Feature `out variable declaration' cannot be used because it is not part of the C# 4.0 language specification


こんな時には、「\UnityProject\XXXXXXX\Library\PackageCache\com.unity.textmeshpro@2.0.1\」を丸ごと消すといいが、Unityを起動する度に同じエラーがでるのを何とかできないだろうか・・・・・

さて、今回のビルド。

Plugins/Androidと、Plugins/Android/libの中身は前回と同じ。

mainTemplate.gradleに変化あり。

【Plugins>Android>mainTemplate.gradle】
// GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN
buildscript {
repositories {
google()
jcenter()
}

dependencies {
classpath 'com.android.tools.build:gradle:3.4.0'
}
}

allprojects {
repositories {
google()
jcenter()
maven {url "https://imobile-maio.github.io/maven" }
maven {url "http://fan-adn.github.io/nendSDK-Android-lib/library" }
flatDir {
dirs 'libs'
}
}
}

// Android Resolver Repos Start
([rootProject] + (rootProject.subprojects as List)).each { project ->
project.repositories {
def unityProjectPath = "file:///" + file(rootProject.projectDir.path + "/../../").absolutePath
maven {
url "https://maven.google.com"
}
maven {
url "https://maven.google.com/" // Assets/GoogleMobileAds/Editor/GoogleMobileAdsDependencies.xml:7
}
mavenLocal()
jcenter()
mavenCentral()
}
}
// Android Resolver Repos End
apply plugin: 'com.android.application'

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
// Android Resolver Dependencies Start
implementation 'com.google.android.gms:play-services-ads:15.0.1' // Assets/GoogleMobileAds/Editor/GoogleMobileAdsDependencies.xml:7
// Android Resolver Dependencies End
implementation 'com.facebook.android:facebook-android-sdk:[4,5)'
implementation 'com.applovin:applovin-sdk:8.1.4' // Applovin
implementation 'net.nend.android:nend-sdk:5.1.0' // Nend
implementation 'com.maio:android-sdk:1.1.9@aar' // Maio
implementation 'com.unity3d.ads:unity-ads:2.3.0' // UnityAds
implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.3.31' // Kotlin
**DEPS**}

// Android Resolver Exclusions Start
android {
packagingOptions {
exclude ('/lib/armeabi/*' + '*')
exclude ('/lib/mips/*' + '*')
exclude ('/lib/mips64/*' + '*')
exclude ('/lib/x86/*' + '*')
exclude ('/lib/x86_64/*' + '*')
}
}
// Android Resolver Exclusions End
android {
compileSdkVersion **APIVERSION**
buildToolsVersion '**BUILDTOOLS**'

defaultConfig {
minSdkVersion **MINSDKVERSION**
targetSdkVersion **TARGETSDKVERSION**
applicationId '**APPLICATIONID**'
multiDexEnabled true
ndk {
abiFilters **ABIFILTERS**
}
versionCode **VERSIONCODE**
versionName '**VERSIONNAME**'
}

lintOptions {
abortOnError false
}

aaptOptions {
noCompress '.unity3d', '.ress', '.resource', '.obb'**STREAMING_ASSETS**
}

**SIGN**
buildTypes {
debug {
minifyEnabled **MINIFY_DEBUG**
useProguard **PROGUARD_DEBUG**
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'**USER_PROGUARD**
jniDebuggable true
}
release {
minifyEnabled **MINIFY_RELEASE**
useProguard **PROGUARD_RELEASE**
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'**USER_PROGUARD**
**SIGNCONFIG**
}
}
**PACKAGING_OPTIONS**
bundle {
language {
enableSplit = false
}
density {
enableSplit = false
}
abi {
enableSplit = true
}
}
}

allprojects {
configurations.all {
resolutionStrategy.force "com.google.android.gms:play-services-tasks:15.0.1"
}
}

**SOURCE_BUILD_SETUP**



あ、ちなみに前回書いていませんでしたが、proguard-userの中身はこんな感じ。
何が何だかわかりませんが、一応これで動いてます。

【Plugins/Android/proguard-user.txt】
-dontwarn com.google.vr.ndk.base.DaydreamApi
-keep class com.facebook.** {
*;
}
-keep class com.google.unity.** {
*;
}
-keep public class com.google.android.gms.ads.**{
public *;
}
-keep public class com.google.ads.**{
public *;
}
-keepattributes *Annotation*
-dontobfuscate

-keep class com.tsw.zipper {
public *;
}

-dontwarn android.support.v4.**
-dontwarn com.google.android.gms.**
-dontwarn com.google.firebase.**

-keep interface jp.maio.sdk.android.**
-keep class jp.maio.sdk.android.** {*;}
-dontwarn jp.maio.sdk.android.**

-keep interface com.applovin.sdk.**
-keep class com.applovin.** { *; }
-dontwarn com.applovin.**

-keep class net.nend.android.** { *; }
-dontwarn net.nend.android.**

-keep interface jp.tjkapp.adfurikunsdk.moviereward.**
-keep class jp.tjkapp.adfurikunsdk.moviereward.** {
public *;
}
-keep class com.glossomads.** { *; }
-dontwarn jp.tjkapp.adfurikunsdk.moviereward.**
-dontwarn android.webkit.**

-keep interface com.unity3d.player.**
-keep class com.unity3d.player.**
-dontwarn com.unity3d.player.**

-keep class com.tapjoy.** { *; }
-keep class com.moat.** { *; }
-keepattributes JavascriptInterface
-keep class * extends java.util.ListResourceBundle {
protected Object[][] getContents();
}
-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
public static final *** NULL;
}
-keepnames @com.google.android.gms.common.annotation.KeepName class *
-keepclassmembernames class * {
@com.google.android.gms.common.annotation.KeepName *;
}
-keepnames class * implements android.os.Parcelable {
public static final ** CREATOR;
}
-keep class com.google.android.gms.ads.identifier.** { *; }
-dontwarn com.tapjoy.**



これで、一通り全部が動いている感じです。
もちろんゲーム内課金も全部動いてますよ。

これで、ビルド大作戦の最終報告とさせて頂きます。

では!あでゅ~ノシ

Category: 開発日記(Unity)

tb 0 : cm 0   

【ハルシオンブログ】int配列をfloatの配列に変換したかったとき 

こんにちは。
大坂です。

タイトル通り配列の型変換について、普通にCast使ってできるかと思ったらできなかったので・・・。
これだとできない。
float[] testFloatArray = testIntArray.Cast<float>().ToArray<float>();
これもできない。
float[] testFloatArray = (float[])testIntArray.Cast<float>();
こんな感じでやるとできます。
int[] testIntArray = { 1, 2, 3 };
float[] testFloatArray = new float[testIntArray.Length];
testIntArray.CopyTo(testFloatArray, 0);

とまぁこんな感じで同じ長さの配列作ってCopyToを使えばいいって話でした。

すごく短いですが今日はこれでノシ

Category: Androidアプリ紹介

tb 0 : cm 1   

【ハルシオンブログ】3週間かかったビルドがようやく終盤になりましたのでご報告します。Admob+アドフリくん+NCMBのビルドについて。 

おはようございます。坂内っす。

ようやく3週間の長い戦いだったビルド戦、だいたい乗り切った感じです。

だいたい最終報告をさせて頂きます。

<環境>
Unity2017.4.30f1
- NCMB.4.0.0
- TapjoyUnityPlugin_v12.3.1
- GoogleMobileAds-v3.18.0
- adfurikunSDK_Unity_moviereward_3_0_1

この環境でのGradleビルドが全然できんかったのですよ。

やっとこさ、まともに動くところまでもってきました!
ただまだ、Tapjoyのウォールが出ないとか色々ありますが・・・・
これでとりあえず、以下の動作が確認できました。

・Admobがでる。バナー+インステ
・アドフリくんがでる。動画ネイティブ+動画リワード
・NCMBがつかえる。


最終的なPluginフォルダの中身はこちら。
【Plugins>Android】



※play-services-measurement-base-15.0.0 こいつだけバージョンが違くて気持ち悪いが、こいつ入れないと動画やバナータップ後にアプリに戻ると落ちるんだよね。

【Plugins>Android>lib】


【Plugins>Android>mainTemplate.gradle】

// GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN
buildscript {
repositories {
google()
jcenter()
}

dependencies {
classpath 'com.android.tools.build:gradle:3.2.0'
}
}

allprojects {
repositories {
google()
jcenter()
maven {url "https://imobile-maio.github.io/maven" }
maven {url "http://fan-adn.github.io/nendSDK-Android-lib/library" }
flatDir {
dirs 'libs'
}
}
}

// Android Resolver Repos Start
([rootProject] + (rootProject.subprojects as List)).each { project ->
project.repositories {
def unityProjectPath = "file:///" + file(rootProject.projectDir.path + "/../../").absolutePath
maven {
url "https://maven.google.com/" // Assets/GoogleMobileAds/Editor/GoogleMobileAdsDependencies.xml:7
}
mavenLocal()
jcenter()
mavenCentral()
}
}
// Android Resolver Repos End
apply plugin: 'com.android.application'

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:multidex:1.0.1'
// Android Resolver Dependencies Start
implementation 'com.google.android.gms:play-services-ads:15.0.1' // Assets/GoogleMobileAds/Editor/GoogleMobileAdsDependencies.xml:7
// Android Resolver Dependencies End
implementation 'com.facebook.android:facebook-android-sdk:[4,5)'
implementation 'com.applovin:applovin-sdk:8.1.4' // Applovin
implementation 'net.nend.android:nend-sdk:5.1.0' // Nend
implementation 'com.maio:android-sdk:1.1.9@aar' // Maio
implementation 'com.unity3d.ads:unity-ads:2.3.0' // UnityAds
implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.3.31' // Kotlin
**DEPS**}

// Android Resolver Exclusions Start
android {
packagingOptions {
exclude ('/lib/armeabi/*' + '*')
exclude ('/lib/mips/*' + '*')
exclude ('/lib/mips64/*' + '*')
exclude ('/lib/x86/*' + '*')
exclude ('/lib/x86_64/*' + '*')
}
}
// Android Resolver Exclusions End
android {
compileSdkVersion **APIVERSION**
buildToolsVersion '**BUILDTOOLS**'

defaultConfig {
minSdkVersion **MINSDKVERSION**
targetSdkVersion **TARGETSDKVERSION**
applicationId '**APPLICATIONID**'
ndk {
abiFilters **ABIFILTERS**
}
versionCode **VERSIONCODE**
versionName '**VERSIONNAME**'
}

lintOptions {
abortOnError false
}

aaptOptions {
noCompress '.unity3d', '.ress', '.resource', '.obb'**STREAMING_ASSETS**
}

**SIGN**
buildTypes {
debug {
minifyEnabled **MINIFY_DEBUG**
useProguard **PROGUARD_DEBUG**
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'**USER_PROGUARD**
jniDebuggable true
}
release {
minifyEnabled **MINIFY_RELEASE**
useProguard **PROGUARD_RELEASE**
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-unity.txt'**USER_PROGUARD**
**SIGNCONFIG**
}
}
**PACKAGING_OPTIONS**
bundle {
language {
enableSplit = false
}
density {
enableSplit = false
}
abi {
enableSplit = true
}
}
}

configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.android.support') {
if (!requested.name.startsWith("multidex")) {
details.useVersion '26.0.1'
}
}
}
}

**SOURCE_BUILD_SETUP**



【手順】①~④は順不同でもいいんじゃないかな?
①ニフクラ Import
②アドフリくん Import
③Admob Import
④タップジョイ Import

⑤いらないaar,jarを消す
⑥com.google.android.gmsのバージョンを合わせるために、「Assets>GoogleMobileAds>Editor>GoogleMobileAdsDependencies.xml」をいじる
<pre class="prettyprint"><code>
<dependencies>
<androidPackages>
<androidPackage spec="com.google.android.gms:play-services-ads:15.0.1">
<repositories>
<repository>https://maven.google.com/</repository>
</repositories>
</androidPackage>
</androidPackages>

<iosPods>
<iosPod name="Google-Mobile-Ads-SDK" version="~> 7.42.1">
<sources>
<source>https://github.com/CocoaPods/Specs</source>
</sources>
</iosPod>
</iosPods>
</dependencies>




⑦Resolverしてみる。


一応この時点でビルドは通るようになった。
今まで使ってたアドフリくんが古かったため、最新の3系ではそのままでは動画が出ないという問題があったが、コードいじって動くように。

あとは、本当にTapjoyのオファーウォールをどうするか。

動かないならいっそのこと消してしまおうか・・・・

いやー ほんと長い戦いだった・・・・ポケガ1,2の64ビット対応しようとして、Gradle初めて触ったのが行けなかったか・・・凄い時間がかかってしまった。

今後また各SDKのバージョンが変わると動かなくなりそうな予感しかしませんが、今のところこれで動いています。
64bit対応や、NCMBが古いと今後動かなくなる等で、最新のSDKにしてGradleビルドでハマった方がいたら参考になれば幸いです。

お手伝いしてくれた、アドフリくんに感謝m(_ _)m

では、あでゅ~ノシ

Category: 開発日記(Unity)

tb 0 : cm 0