Androidアプリのよくあるイカしたアプリのダウンロードボタンの作成方法! と、流入元分析!

クレカの有効期限切れで、、サーバー落ちてましたw。。

SEOだいぶ下がったか、、泣

というわけで、泣く子も黙るわけでもない久々の更新

アプリDLボタンのバッジ作成ツール

ここからバッジをサクッと生成できるんす!

https://play.google.com/intl/ja/badges/

UTMソース や、UTMキャンペーン を指定して、

どのブログや、SNSから流入してDLしたなどがわかるようになってます。

レポートは、Google Play Consoleの下記画面から見れるようです。

UTMタグで獲得チャネルの分析

https://developers.google.com/analytics/devguides/collection/android/v4/campaigns#google-play-url-builder

GooglePlay向けのUTMタグ生成サイトが、404になっていて、
どこで、android用のUTMタグの正しい形式を確認すればとおもっていましたが、バッジ作成ツールで生成すればよかったんですね。
先程の、バッジツールで、UTMソースや、キャンペーンを指定するとタグが反映されるので、
そちらでわかります。


<a href='https://play.google.com/store/apps/details?id=[パッケージ名]&utm_source=[UTMソース]&utm_campaign=[UTMキャンペーン]&pcampaignid=MKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1'><img alt='Google Play で手に入れよう' src='https://play.google.com/intl/ja/badges/images/generic/ja_badge_web_generic.png'/></a>

この部分。


https://play.google.com/store/apps/details?id=[パッケージ名]&utm_source=[UTMソース]&utm_campaign=[UTMキャンペーン]

他にも便利なツールが色々

こちらはiOS/Androidのバッジも作れるすぐれもの!

http://mama-hack.com/app-reach/

関係ありそうなサイト一覧

UnityAndroidで、下記エラーがSDKやなにかを入れたタイミングでエラーを履くようになった。

確認環境
* Unity2017 2.0f1
* Gradleビルド

こんなエラーや、


Build failure com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexException: Multiple dex files define Landroid/support/annotation/AnimRes; See the Console for details.

こんなエラーや、


UnityEditor.BuildPlayerWindow+BuildMethodException: 3 errors at UnityEditor.BuildPlayerWindow+DefaultBuildMethods.BuildPlayer (BuildPlayerOptions options) [0x00207] in /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPlayerWindowBuildMethods.cs:172 at UnityEditor.BuildPlayerWindow.CallBuildMethods (Boolean askForBuildLocation, BuildOptions defaultBuildOptions) [0x00050] in /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPlayerWindowBuildMethods.cs:83 UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)

こんなエラーや、


CommandInvokationFailure: Gradle build failed. /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/bin/java -classpath "/Applications/Unity/PlaybackEngines/AndroidPlayer/Tools/gradle/lib/gradle-launcher-2.14.jar" org.gradle.launcher.GradleMain "assembleRelease" stderr[ FAILURE: Build failed with an exception.

なにか原因かわからないため、解決するためにやったこと。

  • Player Settings の Publishing Setting > Custom Gradle Templateにチェックをいれ、
    カスタムのgradleをいじれる、mainTemplateをさわって、また戻したり。

  • Unityを再起動したり

  • Android SDKのToolsのAPIバージョンをあげたり。
    https://answers.unity.com/questions/1435579/how-can-i-fix-this-error-unityeditorbuildplayerwin.html

  • https://issuetracker.unity3d.com/issues/android-project-with-iap-plugin-fails-to-build-with-gradle-release-mode-only-and-throws-java-dot-io-dot-ioexception

Unityのバージョンを疑ったり

で、何かのタイミングで、エラーがでなくなり、無事APKファイルが履かれました…!

Unity で、Android gradle buildで、Multidexに対応する方法

UnityでAndroidアプリを作る際に、Multidexサポートに対応しないといけない場合に、
最初した際のメモ。

参考情報

https://forum.unity.com/threads/build-using-gradle-and-multidex-support.492117/

https://answers.unity.com/questions/1301593/android-gradle-build-error.html

要点

  • Custom Gradle Templateを使う (Build systemはgrandleに)

検証環境

  • MacOS High Sierra
  • Unity2017 2.0f3(Personal)

Unity NGUIで、ローカライズの設定手順

NGUIで、とりあえず英語と日本語を管理する方法

STEP.1 asset storeからインポートしたNGUIのLocalization.txtをリネームして、移動

これを、

Assets/NGUI/Examples/Resources/Localization.txt → Localization.csv

リネームして、

Assets/Resources/Localization.csv に移動。
※Resourcesフォルダが無い場合は、作ってね。

これをしないと、NGUIアセットをアップデートする度、ローカライズ文言がリセットされてしまいます (´;ω;`)

STEP.2 ローカライズの文言を作る

Assets/Resources/Localization.csv

をテキストエディタ等で開いて、英語,日本語のように記載していきます。

Localization.csvの中身


KEY,English,Japanese Flag,Flag-US,Flag-JA Language,English,Japanese NGUI_STAGE_1_NAME,Hamburger,ハンバーガー NGUI_STAGE_2_NAME,Sandwich,サンドイッチ

※カンマ区切りで、KEY,英語,日本語と記載しています。

STEP.3 Unityを再起動する。

これしないと、なぜか反映されなかったです。
※ビルドしても反映される事もあったり。

STEP.4 UI LabelにLocalizeをアタッチ

※先ほどLocalization.csvにKEYとして記載した、「NGUI_STAGE_1_NAME」を入力すると、英語、日本語が表示されます。

cocos2d-x(c++) で、int(整数)をstring(文字列)に変換

cocos2d-x(c++) で、intをstring(文字列)に変換

環境 cocos2d-x 3.14(c++)

StringUtils::toString()で、int型からstring型に変換できる。

int hogeInt = 123;
string hogeStr = StringUtils::toString(hogeInt);

で、下記でもできるのですが、androidでビルドするとエラーになるので、
下記を使う場合はご注意を。


string hogeStr = std::to_string(123);

cocos2d-x(c++) 色(Color3B等)を定数の配列でカラースキーム化

cocos2d-xで、色のパターン等用意する時、
配列で定数化しておくと便利なのでメモ

宣言


// Color3Bの型で3色用意 static const std::vector<Color3B> COLOR_LIST = { Color3B(255,0,0), //赤 Color3B(0,255,0), //緑 Color3B(0,0,255) // 青 };

呼び出し


COLOR_LIST.at(0); // 赤 COLOR_LIST.at(1); // 緑 COLOR_LIST.at(2); // 青

もちろん、Color4Bでも同じ要領

ちなみに赤を出したいだけなら、、、


Color3B::RED

とするだけなので、この記事はそういう趣旨じゃない。。。

cocos2d-x(c++)ひっかかりそうなポイントメモ

ただ生成したNodeのgetContentSize()は0。


node->getContentSize().width // 0

座標は、左下が基準

OpenGLだからか、左下が基準。

oya->addChild(ko)をすると色々挙動が難しい

子は親のアンカーポイントを無視する。

getBoundingBoxの座標が連動していなかったり。

androidでビルドする時、std::to_string()を使うビルドできない。

下記で代用


int newInt = StringUtils::toString(hogeInt);

Vec2でキャストせずにintとしてつかっているといつの間にかずれるのでちゃんとキャストしよう


Vec2 vec2Hoge = hogeMethod(touchLocation); log("vec2HogeFloat x:%f y:%f",vec2Hoge.x,vec2Hoge.y); log("vec2HogeInt x:%i y:%i",vec2Hoge.x,vec2Hoge.y);

cocos2d-xのアプリ開発のお気に入り環境メモ

cocos2d-xでAndroidとiOSのアプリ開発で使っている環境メモ

言語&IDE

C++でxcode使ってる、

もうcocos creator使った方がいいみたいですが。

UI&アニメーションの開発エディタ

下記ツールでUIをGUIエディタ作れる。

cocos studio

version3.10で ※注意サポート終了

下記からダウンロード可能

http://cocos2d-x.org/docs/deprecated/studio/

メモ

  • 下記particle2dxのplistをそのまま取り込める。
  • opacityや、colorのアニメーションも、デフォルトだとタイムラインに表示されないが、record frame の✅を入れると表示される。

パーティクル用のエディタ

Particle2dx

http://particle2dx.com/
* オリジナルの画像がアップロードできないようなので、一度エクスポートしてから、画像ファイル名をplistをテキストエディタで開いて変更する。
* もしくは、エクスポート時の画像ファイル名と同じ画像ファイルで上書き。

シェーダー周り

cocos2dx用というわけでないないがシェーダーのデモに使える

http://glslsandbox.com/e#38793.0

Unityで、#UNITY_IOS等の、エディタ上とプラットフォームの判定を勘違いしてた

Unityで、よくAndroidや、iOSの条件分岐かく 「#if UNITY_IOS」等の分岐ですが、

勘違いして使っていました。


#if UNITY_ANDROID Debug.Log("androidだよー"); #elif UNITY_IOS Debug.Log("iosだよー"); #else Debug.Log("unityエディタ含むよー"); #endif

を、Unity上のswitch platformで 『iOS』にしていて、
Unity上で実行したら。。


unityエディタ含むよー

となるとおもっていた。。。汗

違かった。。。

実際は、


iosだよー

と、なった

ほんまアホやった。。


#if UNITY_EDITOR Debug.Log("Unityエディタで実行中だよー"); #elif UNITY_ANDROID Debug.Log("androidだよー"); #elif UNITY_IOS Debug.Log("iosだよー"); #else Debug.Log("その他だよー"); #endif

#if UNITY_EDITOR

これがしたかったやつや。。

さっきのはあくまでswitch platformで指定しているiOSの条件にものでした。。