- 投稿日:2020-09-22T19:54:42+09:00
Cordova開発環境をWindows10 + AndroidとMac + iOSでそれぞれ構築
Cordovaのインストール(共通)
Windows、Macともに共通で実施します。
npmが必要なので事前に入れておきます。
私はWindowsならnodist、MacならnodebrewでNode.js環境を作りました。Cordova公式サイトの「Get Started」に沿って進めます。
> npm install -g cordova > cordova --version 10.0.0 > cordova create MyApp Creating a new cordova project. > cd MyAppCordovaアプリをブラウザで動かす
プラットフォーム(Cordovaの実行環境)を追加して動かしてみます。
まずはブラウザで動かします。> cordova platform add browser Using cordova-fetch for cordova-browser@^6.0.0 Adding browser project... Creating Cordova project for cordova-browser: Path: C:\Users\hoge\Desktop\MyApp\platforms\browser Name: HelloCordova Installing "cordova-plugin-whitelist" for browser 6.0.0 > cordova run browserブラウザが開いて「Hello World」アプリが実行されれば成功です。
Androidアプリの実行環境構築
こちらはWindowsで実施します。
事前準備
JDKのインストール
JDK(Java Development Kit)8をインストールします。
https://www.oracle.com/jp/java/technologies/javase/javase-jdk8-downloads.html> javac -version javac 1.8.0_261環境変数「JAVA_HOME」の設定
JDK8をインストールしたファルダ「
C:\Program Files\Java\jdk1.8.0_261
」を環境変数「JAVA_HOME」としてOSに設定します。Gradleをインストール
ビルドツールのGradleをインストールします。
https://gradle.org/install/
ダウンロードしたら解凍し任意のフォルダに置いてパスを通します。> gradle -v Welcome to Gradle 6.6.1! Here are the highlights of this release: - Experimental build configuration caching - Built-in conventions for handling credentials - Java compilation supports --release flag For more details see https://docs.gradle.org/6.6.1/release-notes.html ------------------------------------------------------------ Gradle 6.6.1 ------------------------------------------------------------ Build time: 2020-08-25 16:29:12 UTC Revision: f2d1fb54a951d8b11d25748e4711bec8d128d7e3 Kotlin: 1.3.72 Groovy: 2.5.12 Ant: Apache Ant(TM) version 1.10.8 compiled on May 10 2020 JVM: 1.8.0_261 (Oracle Corporation 25.261-b12) OS: Windows 10 10.0 amd64Android Studioをインストール
Android SDKとエミュレーターを使うためにAndroid Studioをインストールします。
https://developer.android.com/studio環境変数「ANDROID_SDK_ROOT」の設定
Android Studioの「Tools > SDK Manager」から↓のような画面を開きSDKのパスを取得します。
環境変数「ANDROID_SDK_ROOT」に設定します。
ライセンスの同意
> cd C:\Users\hoge\AppData\Local\Android\Sdk\tools\bin > sdkmanager --licenses上記コマンドを実行し、全て「y」を入力します。
プラットフォーム追加
> cordova platform add android Using cordova-fetch for cordova-android@^9.0.0 Adding android project... Creating Cordova project for the Android platform: Path: platforms\android Package: io.cordova.hellocordova Name: HelloCordova Activity: MainActivity Android target: android-29 Subproject Path: CordovaLib Subproject Path: app Android project created with cordova-android@9.0.0 Discovered plugin "cordova-plugin-whitelist". Adding it to the project Installing "cordova-plugin-whitelist" for android Adding cordova-plugin-whitelist to package.jsonエミュレーターで実行
Android Studioの「Tools > AVD Manager」からAVDを構成します。
エミュレーターを実行し、エミュレーターが立ちあがったら下記コマンドを実行。> cordova emulate androidビルドが成功すれば、↓のようにエミュレーターでアプリの実行が確認できます。
ビルドログを見るとAPKファイルもできているのが確認できます。
実機で実行
Androidの実機端末をUSBで接続します。
端末側で開発者向けオプションを有効化し、USBデバッグをオンにしておきます。> cordova run androidビルドが成功すれば、実機にアプリがインストールされます。
iOSアプリの実行環境構築
こちらはMacで実施します。
事前準備
Xcode
入ってなければインストールしておきましょう。
プラットフォーム追加
$ cordova platform add ios Using cordova-fetch for cordova-ios@^6.1.0 Adding ios project... Creating Cordova project for the iOS platform: Path: platforms/ios Package: io.cordova.hellocordova Name: HelloCordova iOS project created with cordova-ios@6.1.1 Installing "cordova-plugin-whitelist" for iosエミュレーターで実行
$ cordova emulate iosビルドが成功すれば、↓のようにエミュレーターでアプリの実行が確認できます。
実機で実行
Xcodeにアカウントを登録しておきます。
実機にデプロイするために
ios-deploy
が必要なのでこれもインストールしておきます。$ npm install -g ios-deployUSBでiPhoneを接続してコンピューターを信頼します。
MyApp/platforms/ios/HelloCordova.xcodeproj
をXcodeで開きます。
アプリに署名し、左上のデバイス選択から接続したiPhoneを選択します。$ cordova run iosビルドが成功すれば、実機にアプリがインストールされます。
IPAファイルも作成されます。
- 投稿日:2020-09-22T18:18:37+09:00
9. 【Android/Kotlin】動的にViewを追加
はじめに
DreamHanksのMOONです。
前回は
WebView
というViewについて説明しました。
8. 【Android/Kotlin】ウェブビュー(WebView)今回は動的にViewを追加する方法について説明していきます。
動的に追加の意味
以前まではViewやレイアウトを追加するためにレイアウトのxmlファイルに追加しましたが、
その方法は静的に追加する方法です。例)チャットアプリで会話内容が追加されると、画面上にテキストを追加しなければならない状況があります。
動的にViewを追加する方法はActivityからViewを追加することです。
今回はテキストを入力し、そのテキストを画面上に動的に追加して表示していきます。
ActivityからViewを追加
・レイアウトのxmlを作成
activity_addview.xml<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".AddTextViewActivity" android:gravity="center"> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/text_et" android:inputType="text" android:hint="テキストを入力してください。"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/add_btn" android:text="追加"/> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/text_ll" android:orientation="vertical"/> </LinearLayout>xmlには空レイアウトをボタン下に追加します。
・Activityを作成
AddTextViewActivity.ktpackage com.example.practiceapplication import android.app.AlertDialog import android.content.DialogInterface import android.content.Intent import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.util.Log.d import android.view.ContextThemeWrapper import android.widget.* import kotlinx.android.synthetic.main.activity_listview.* import javax.xml.validation.Validator class AddTextViewActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_addview) val text_et = findViewById<EditText>(R.id.text_et) //EditText(入力エリア) val add_btn = findViewById<Button>(R.id.add_btn) //追加ンボタン val text_ll = findViewById<LinearLayout>(R.id.text_ll) //空LinearLayout //追加ボタンのクリックイベントを設定 add_btn.setOnClickListener { //テキストビューを生成 val textView = TextView(this) //生成されたテキストに入力されたテキストを代入 textView.text = text_et.text.toString() //テキストビューのサイズを修正 textView.textSize = 15f //ボタン下の空LinearLayoutにテキストビューを追加 text_ll.addView(textView) } } }アプリ起動
・
よろしくお願いします。
まで入力してボタンをクリックした場合
終わりに
今回は`動的にViewを追加する方法について説明しました。
次回はライブラリを追加する方法について説明します。
10. 【Android/Kotlin】ライブラリを追加
- 投稿日:2020-09-22T14:28:24+09:00
[覚え書き]AndroidにWindowsからadbコマンドで接続する
FireHD10のLauncherをAmazon謹製からNovaLauncherに変更するためにadbコマンドに関して調べたメモ。
Android SDKツールを入手する
ダウンロード
公式サイトからWindows向け「Android SDKプラットフォームツール」をダウンロードする。
SDK Platform-Tools リリースノート | Android デベロッパー | Android Developers任意の場所に解凍する
コマンドプロンプトから操作する
操作するAndroid側は開発者モードになってUSBデバッグを有効にしておきます。
※有効化の方法は各機種で異なるのでググってください。Pathを変える
ちょこっと使うだけなので、Pathは通さず操作します。
何度も利用するなら、適当なフォルダーに移動してPathを通しておきます。>cd C:\Users\nandy\Downloads\platform-toolsAndroid機器との接続を確認する。
>adb devices List of devices attached G0012B0594171947 deviceshellで接続してみる
>adb -s G0012B0594171947 shell maverick:/ $Andoroidの操作ができるはず。
- 投稿日:2020-09-22T00:14:33+09:00
UnityPlugin/Android/基本
[環境]
OS: windows10 pro
IDE:Android Studio4.0.1
Unity 2019.4.5f1
確認した実機: Galaxys8[参考]
[Android用Plugin(java[aar])の作成(https://qiita.com/fukaken5050/items/c9ac144344c5f6ff9f57)
https://dream-target.jp/2019/01/04/unity_android/
https://qiita.com/okuhiiro/items/1aaec487d1ab8b086095
https://ghoul-life.hatenablog.com/entry/2019/01/26/030622
https://note.com/attomicgm/n/ncb22f460e8b6https://baba-s.hatenablog.com/entry/2018/09/18/170000 確認済
本文
UnityでAndroidProjectを出力する
・適当にCUBE等を配置する。
・Unityでプロジェクトを作成する(例:TestAndroidPlugin)
・「ExportProject」「DevelopmentBuild」にチェックします。
・AndroidにスイッチしバンドルIDを設定する。
・com.ore.TestAndroidPlugin) → Javaでは重要なので意識してください。com.ore.TestAndroidPluginとなってる華胥ありますが私はここでつまづきました
・MinimumAPILevelを設定する(例:Android4.4 APILevel19) デフォルト
・Unityプロジェクトと同じフォルダにExport用フォルダを作成し、フォルダに移動してから「フォルダの選択」を押す(例:TestAndroidPlugin\Android)
・AndroidStudio用プロジェクトが生成されるAndroidStudioで読み込む
UnitySDKかAndroidStudioのSDKを使うか指定する。
プロジェクト解析にすこし時間がかかります。
・ビルドエラーは出ず問題なく実行できます。Unityの機能をAndroidから使うため、classes.jar/android.jarを配置します。
今回の環境では以下に存在しました。
C:\Program Files\Unity\Hub\Editor\2019.4.5f1\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\ClassesC:\Users\user\AppData\Local\Android\Sdk\platforms\android-30\
C:\Android\SDK\platforms\android-30プラグインモジュールの追加
・メニューの「File」>「New」>「NewModule」を押す
・「AndroidLibrary」を選択し、「Next」を押す
・「Application/Library name」を設定する(例:UnityPlugin)
・「Package name」を右側の「edit」を押し、設定し、「done」を押す(例:com.ore.unityplugin)
・「MinimumSDK」をUnityに設定したものと同じか、小さいものに設定する(例:API23)
・「Finish」を押す
■「build.gradle」の編集
Unityライブラリファイル"unity-classes.jar"(またはclasses.jar)を、出力されるaarファイルに含めないようにします。
//classes.jarファイルは、コンパイルのときのみ使用する //Android Studio 3系では、「implementation fileTree」と記述すると //classes.jarも含まれてしまうため「compileOnly」と記載して //jarファイルはコンパイルのみ使用するようにします。 dependencies { //implementation fileTree(dir: "libs", include: ["*.jar"]) NG compileOnly fileTree(dir: 'libs', include: 'unity-classes.jar') implementation 'androidx.appcompat:appcompat:1.2.0' testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test.ext:junit:1.1.2' androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' }・右上に出ている「SyncNow」を押す
プラグイン用javaクラスの追加
・プロジェクトツリーから「プラグイン名」>「Java」>「パッケージ名」を選択(例:unityplugin>Java>com.ore.unityplugin)
・(AndroidTest)や(Test)と書かれていないもの(一番上)
・メニューの「File」>「New」>「JavaClass」を押す
・「Name」を設定(例:TestPlugin)
・「OK」を押す
・以下はトースト表示する簡単なサンプルpackage com.ore.unityplugin; import android.app.Activity; import android.widget.Toast; import com.unity3d.player.UnityPlayer; public class TestPlugin { public static void showToast(final String message) { final Activity activity = UnityPlayer.currentActivity; activity.runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(activity, message, Toast.LENGTH_SHORT).show(); } }); } }UnityPlayerでビルドエラーがでるので、unityLibrary-libsの[unity-classes.jar]を UnityPlugin-libsにコピーする。IDE右上の[SyncProject with Gradle]を押すとビルド成功します。
・aarのサイズは16K程度です。100kくらいある場合はunity-classes.jarも含んでおり、プラグイン利用時にUnityが持つJarと衝突します。作成したPluginを使う
UnityProject/Asset/Plugins/Androidに作成したプラグイン *.aar を配置する。
スクリプト
TestPlugin を作成して適当なGameObjectに配置する。UnityでButtonとTextを生成してTestPlugin と接続する。
最後にAndroid実機で動作確認をする。using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class TestPlugin : MonoBehaviour { [SerializeField] private Button _button = null; public Text m_text = null; private void Start() { _button.onClick.AddListener(() => OnButtonClick(_button)); m_text.text = "start"; } private void OnButtonClick(Button button) { m_text.text = "OnButtonClick_1"; using (AndroidJavaClass javaClass = new AndroidJavaClass("com.ore.unityplugin.TestPlugin")) { Debug.Log("OnButtonClick"); m_text.text = "OnButtonClick_2"; javaClass.CallStatic("showToast", "Test"); } } }