ラベル Android Studio の投稿を表示しています。 すべての投稿を表示
ラベル Android Studio の投稿を表示しています。 すべての投稿を表示

2014年7月25日金曜日

Android StudioでUnityのNative Plugin(jar)をつくる

Gradleについてあまり詳しくないですが、とりあえずHello World的なものが動いたのでメモ。

環境

OS X Mavericks 10.9.4
Android Studio (Beta) 0.8.2
Unity 4.5.2f1

空のプロジェクトを作成

Android Studioで[Add No Activity]を選択して空のプロジェクトを作成。

jarファイルの追加


classes.jarファイルをプロジェクトのlibsフォルダにコピー。
Macの場合のパス
<Unityインストールディレクトリ>/Unity.app/Contents/PlaybackEngines/AndroidPlayer/release/bin/classes.jar

android.jarファイルをプロジェクトのlibsフォルダにコピー。
パス
<Android SDK Root>/platforms/android-19/android.jar
※今回はAndroid 4.4のjarを使用

Sync Project with Gradle Files


Native Plugin側のコード

<Project Root>/app/src/main/java/<Package Name>/配下にJava Classを新規作成。
適当にToastを表示するだけのプラグインを作成。

package com.example.unityplugin;

import android.app.Activity;
import android.widget.Toast;

import com.unity3d.player.UnityPlayer;

public class AndroidNative {
    public static void showToast() {
        final Activity activity = UnityPlayer.currentActivity;
        activity.runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Toast.makeText(activity, "Hello Native Plugin!", Toast.LENGTH_SHORT).show();
            }
        });
    }
}

build.gradleの編集

// apply plugin: 'com.android.application'
apply plugin: 'java'

jar.baseName = 'android-native-plugin'
version = '1.0.0'

//android {
//    compileSdkVersion 20
//    buildToolsVersion "20.0.0"
//
//    defaultConfig {
//        applicationId "com.example.unityplugin"
//        minSdkVersion 15
//        targetSdkVersion 20
//        versionCode 1
//        versionName "1.0"
//    }
//    buildTypes {
//        release {
//            runProguard false
//            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
//        }
//    }
//}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
}

jarファイルの作成

Android StudioのTerminalを開き下記のコマンドを実行。
./../gradlew jar


jarファイルは下記のディレクトリ配下に作成される。
<Project Root>/app/build/libs/

作成したjarファイルをUnityプロジェクトのAssets/Plugins/Android/ディレクトリ配下に配置。

呼び出し側コード

using UnityEngine;
using System.Collections;

public class Toast : MonoBehaviour {

 // Use this for initialization
 void Start () {
  AndroidJavaClass androidNativePlugin = new AndroidJavaClass("com.example.unityplugin.AndroidNative");
  androidNativePlugin.CallStatic("showToast");
 }
 
 // Update is called once per frame
 void Update () {
 
 }
}

動作確認


2013年11月9日土曜日

LogCatの小窓から(Android Studio編)

Android StudioのLogCatは彩りが足りない!
ので、
彩りを加えてみたメモ。

環境

Mac OS X Mavericks
Android Studio 0.3.4

Before


設定方法

[Preferences] -> [Editor] -> [Colors & Fonts] -> [Android Logcat]を開く。

まず、デフォルトのテーマは変更できないので[Save As...]からコピーを作成する。

[Inherit Attributes From:]のチェックを外す。

カラーの四角いとこを右クリックするとカラーピッカーが開くので、各ログレベルの色をカスタマイズしていく。

今回は見慣れたあのIDEの色に変更した。
Verbose #000000
Debug #00007F
Info #007F00
Warning #FF7F00
Error #FF0000
Assert #FF0000

After


見慣れたあの感じになりました。

2013年9月6日金曜日

Android StudioでGit(core.autocrlf)


Android Studioで作ったプロジェクトをコミットするときに出た、警告ダイアログの対処メモ。

環境

・Mac OS X 10.8.4
・Android Studio (I/O Preview) 0.2.6

原因

Android Studioのデフォルト設定では下記の
[Warn if CRLF line separators are about to be committed]
にチェックが入っている。
CRLFラインセパレータがコミットされようとしている場合に警告を表示するという設定。
core.autocrlfが未設定だったり、falseに設定されていると上記の警告ダイアログが表示される。

CRLFラインセパレータなファイルとはgradlew.bat。
gradlew.batをエディタで開いてステータスバーを確認すると確かにCRLFとある。
Windows環境で使うファイルですからね。

core.autocrlfとは

コミット時の改行コードの扱いを決めるもののようです。

こちらのサイトを参考にさせていただきました。
WindowsやMacなど様々なOSからGitを使うときの改行コードの扱い » tech-tec
http://tech-tec.com/archives/107

対処

冒頭のダイアログにもありますが
git config --global core.autocrlf input
の設定を行うと解決します。

コマンドラインから上記コマンドを実行して、コミットを行ってもよいですし
冒頭のダイアログで[Fix and Commit]ボタンをクリックすると自動でcore.autocrlfをinputに設定した後、コミットを行ってくれます。

core.autocrlfの設定確認

<User Home>/.gitconfigをテキストエディタで開く
or
ターミナルからgit config -l コマンドで確認できる。

2013年9月4日水曜日

Android StudioでGit(Changesツールウィンドウを使ってみた)

こちらのBlog記事に

Java Day Tokyo 2013の裏方で takezoe さんをIntelliJ派に洗脳してた - marsのメモ
http://d.hatena.ne.jp/masanobuimai/20130518/1368867743

バージョン管理に関するモロモロの操作は,ProjectツールウィンドウよりChangesツールウィンドウのほうが便利に使えるようにできてます
とありましたので、Android StudioのChangesツールウィンドウをつかってみたメモ。

環境

・Mac OS X 10.8.4
・Android Studio (I/O Preview) 0.2.6
 Keymap Mac OS X 10.5+

git init

[control] + [V]で[VCS Operations Popup...]を開く。
[4]の[Enable Version Control Integration...]を選択。

Gitを選択して[OK]ボタン。

.gitignore

Changesツールウィンドウを開く。
Unversioned Filesにバージョン管理されていないファイルが入っている。

プロジェクトに.gitignoreを追加。
※ .gitignoreの内容はこちらを参照
 Android Studioと.gitignore(2013/09/03版)
 http://neta-abc.blogspot.jp/2013/09/android-studiogitignore20130903.html

Unversioned Filesから、.gitignoreで除外したファイルが消える。

git add

↑のスクリーンショットのUnversioned FilesをDefaultにドラッグ&ドロップ。
↓はドラッグ&ドロップ後のスクリーンショット。

git commit

Defaultを選択した状態で、[Commit Changes]ボタン。
(ファイルを選択した状態で、[Commit Changes]ボタンをクリックするとファイルを個別にコミットできる)

コミットメッセージを入力して[Commit]ボタン。

コミットが完了するとDefaultは空に戻る。

以降はコードに変更を加えると、変更したファイルがDefaultに入るので
コミット->コード変更を繰り返す流れ。

2013年9月3日火曜日

Android StudioでGit(コミットとかブランチとか)

Android StudioでGitを使ってみたメモ。

環境

・Mac OS X 10.8.4
・Android Studio (I/O Preview) 0.2.6

コミット

コードに変更を加えるとエディタの左側の部分の色が変わるようだ。
(この例ではメソッドhoge()の追加が変更点)

変更があるファイルは文字色が水色に変わる模様。

コンテキストメニューから[Git] - [Commit Directory...]を選択。

適当にコミットメッセージを入力して[Commit]ボタンをクリック。

コンテキストメニューの[Git] - [Show History]を確認したところ
ちゃんとコミット出来ているようだ。


ブランチ

コンテキストメニューから[Git] - [Repository] - [Branches...]を選択。

[New Branch]を選択。

適当にブランチ名を入力して[OK]ボタンをクリック。

ブランチが作成され、Current Branchが「develop」に切り替わる。
Current Branchはステータスバーの右側に表示されている。

ブランチの切り替えは
コンテキストメニューから[Git] - [Repository] - [Branches...]を選択。
移動したいブランチを選んで[Checkout]を選択。

Twitterで@masanobuimaiさんに教えていただいたので追記。
ステータスバーの[Git: <ブランチ名>]のところをクリックすると、ブランチ作成・切り替えのメニューが開きます。

ブランチの作成・切り替えはステータスバーからの方が便利ですね。

Android Studioと.gitignore(2013/09/03版)

2013/09/02版に「.gradle/」を追加。

iosched(2013)の.gitignoreを見たところ
# gradle cacheとして除外されていたので。
(.gradle/配下のファイルの役割はよく分かっていない...)

僕の.gitignore(2013/09/03版)
*.apk
*.ap_

# files for the dex VM
*.dex

# Java class files
*.class

# generated files
bin/
gen/

# Local configuration file (sdk path, etc)
local.properties

# Eclipse project files
.classpath
.project

# Proguard folder generated by Eclipse
# proguard/

# Intellij project files
*.iml
*.ipr
*.iws
.idea/

# Android Studio files
*/build/
gradle.properties

# gradle cache
.gradle/

# Mac OS .DS_Store file
.DS_Store

2013年9月2日月曜日

Android StudioでGit(git init 〜 Initial commitまで)

Android StudioでGitを使ってみたメモ。
(最終的にうまくいきませんでした...)

<2013.09.04追記>
オペレーションがイケテナカッタので
こちらに書き直しました。
Android StudioでGit(Changesツールウィンドウを使ってみた)
http://neta-abc.blogspot.jp/2013/09/android-studiogitchanges.html

環境

・Mac OS X 10.8.4
・Android Studio (I/O Preview) 0.2.6

git init

メニューの[VCS] - [Enable Version Control Integration...]をクリック。

プルダウンメニューからGitを選んで[OK]ボタンをクリック。

するとこんな感じになる。
Gitの管理対象だけど、まだgit addされていないファイルが赤文字になっているようだ。

Version Control Consoleを見るとgit initが行われた模様。
fatal: bad revision 'HEAD'とあるが、よく分からない...

.gitignore

ルートプロジェクトのルートディレクトリに.gitignoreファイルを配置する。
.gitignoreファイルの設定内容はこちらの記事を参照。
Android Studioと.gitignore
http://neta-abc.blogspot.jp/2013/09/android-studiogitignore.html
↑の.gitignoreに.gradle/を追加

するとこんな感じに。
.gitignoreで除外したファイルの文字色が白に変わった。

git add

ルートプロジェクトのルートディレクトリを選択した状態で右クリック。
[Git] - [Add to VCS]をクリック。

そうすると、Git管理対象ファイルの文字色が緑に変わる。

git commit

ルートプロジェクトのルートディレクトリを選択した状態で右クリック。
[Git] - [Commit Directory...]をクリック。

コミットメッセージを入力して[Commit]ボタンをクリック。

gradle-wrapper.propertiesファイルでWarningが出ますが、よくわからないのでそのまま[Commit]ボタンをクリック。。

Git管理対象ファイルの文字色が緑から白に変わる。

ターミナルから確認したところコミットはできました。

git statusで確認したところ
.gradle/がUntrackedだよと言われている...

Version Control Consoleで確認すると確かにgit addの時に.gradle/がaddされていない。
んー。。
.gradle/下のファイルをGitの管理対象にすべきか調べて出直して来ます...

iosched(2013)の.gitignoreの設定を確認したところ
.gradle/は除外対象になっていました。

Android Studioと.gitignore

Android Studioで作成したプロジェクトをGitで管理するときの.gitignoreの設定について試行錯誤中のメモ。

.gitignoreファイルとは

Gitの管理対象から除外したいファイル・ディレクトリを指定する設定ファイルです。

.gitignoreファイルのベース

.gitignoreのベースはこちらを使わせてもらいました。

github/gitignore · GitHub
https://github.com/github/gitignore

ココのAndroid.gitignoreがAndroidアプリプロジェクト用の.ignoreファイルです。

今のところ、Eclipse / Android Studio用を分けるつもりはないので、1ファイルでEclipse / Android StudioのAndroidアプリプロジェクトに対応できるようにします。

僕の.gitignore(2013/09/02版)

# built application files
*.apk
*.ap_

# files for the dex VM
*.dex

# Java class files
*.class

# generated files
bin/
gen/

# Local configuration file (sdk path, etc)
local.properties

# Eclipse project files
.classpath
.project

# Proguard folder generated by Eclipse
# proguard/

# Intellij project files
*.iml
*.ipr
*.iws
.idea/

# Android Studio files
*/build/
gradle.properties

# Mac OS .DS_Store file
.DS_Store
ベースからの変更点は、
・*/build/下は除外対象
・gradle.propertiesは除外対象
(リリース用証明書のパスワードをココに記載しているので)

Android Studio絡みではないですが
・proguard/は除外対象から外す
(Eclipseでは管理対象にしてました。Android Studioだと*/build/proguard/の下にProGuard関連のファイルが生成されますので、今の設定ですと除外されます。ちょっと考えます。。)
・Mac OSのDS_STOREファイルは除外対象
という変更も入ってます。

つっこみお待ちしております。。

2013年8月31日土曜日

Android StudioでNineOldAndroidsを使う

NineOldAndroidsとは

Honeycombから追加された新しいアニメーションAPIをGingerbread以前でも使えるようにするライブラリ。

公式サイト
NineOldAndroids
http://nineoldandroids.com/

GitHub
JakeWharton/NineOldAndroids
https://github.com/JakeWharton/NineOldAndroids

環境

・Mac OS X 10.8.4
・Android Studio (I/O Preview) 0.2.6

ライブラリをプロジェクトに追加

こちらのサイトでNineOldAndroidsを検索。
Gradle, please
http://gradleplease.appspot.com/


検索結果に出てきた
compile 'com.nineoldandroids:library:2.4.0'
をbuild.gradleのdependenciesに追加。

使ってみる

ViewPropertyAnimatorのさわりだけ。

animateまで入力してコード補完を実行するとNineOldAndroidsのViewPropertyAnimator.animate()が出てくる。

使い方はこんな感じ。

anime()にカーソルを合わせて[option] + [enter]で、animate()メソッドをstatic importにしておくとコーディングで楽が出来る。

以上。

Eclipseで使ってみたメモはこちら。
NineOldAndroidsを使ってみた
http://neta-abc.blogspot.jp/2013/03/nineoldandroids.html

2013年8月30日金曜日

Android StudioでProGuard

Android StudioでProGuardを使ってみたのでメモ。

環境

・Mac OS X 10.8.4
・Android Studio (I/O Preview) 0.2.6

build.gradle

1. runProguard trueでProGuardを有効化

2. proguardFile file('proguard-project.txt')でプロジェクト固有のProGuard設定ファイルを指定
(proguard-project.txtをルートプロジェクトのルートディレクトリに作成)

3. proguardFile getDefaultProguardFile('proguard-android.txt')でプロジェクト共通のProGuard設定ファイルを指定
(<sdk-root>/tools/proguard/proguard-android.txtが参照される)
buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}
apply plugin: 'android'

repositories {
    mavenCentral()
}

android {
    compileSdkVersion 18
    buildToolsVersion "18.0.1"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 18
    }

    signingConfigs {
        releaseConfig {
            storeFile=file(project.properties.storeFile)
            storePassword=project.properties.storePassword
            keyAlias=project.properties.keyAlias
            keyPassword=project.properties.keyPassword
        }
    }

    buildTypes {
        release {
            runProguard true
            proguardFile file('../proguard-project.txt')
            proguardFile getDefaultProguardFile('proguard-android.txt')
            signingConfig signingConfigs.releaseConfig
        }
    }
}

dependencies {
    compile 'com.android.support:support-v4:18.0.0'
}

ビルド

ルートプロジェクトのルートディレクトリに移動。
下記のコマンドを実行して暫し待つ。
./gradlew assembleRelease
ビルドが成功すると、サブプロジェクトの
build/apk/の下に<プロジェクト名>-release.apkのファイル名でAPKファイルが
build/proguard/release/の下にmapping.txt等のProGuardのファイルが作成される。

確認

ProGuardの有効化を下記のコードで確認。(かなり無理矢理ですが... )
package com.example.app;

import android.os.Bundle;
import android.app.Activity;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        checkProGuard();
    }

    private void checkProGuard(){
        throw new RuntimeException("Check ProGuard");
    }

}
デバッグビルドとリリースビルドで実行してstack traceを確認したところ、mapping.txtの設定に従ってメソッド名がcheckProGuard() -> a()に変更されていた。

※proguard-project.txtについては、Eclipseでプロジェクトを作成した時に自動生成されるファイル(設定は空)を持ってきただけなので、こちらに設定した内容が正常に反映されるかは未確認。

Android Studioでのリリースビルドについてはこちらの記事を参照。
Androidアプリをコマンドラインからリリースビルド(Android Studio/Gradle編)
http://neta-abc.blogspot.jp/2013/08/androidandroid-studiogradle.html

Androidアプリをコマンドラインからリリースビルド(Android Studio/Gradle編)

Android Studioで作ったプロジェクトをコマンドラインからリリースビルドしてみたメモ。

環境

・Mac OS X 10.8.4
・Android Studio (I/O Preview) 0.2.6

リリース用証明書

keystoreファイルをサブプロジェクトのルートに配置。
gradle.propertiesファイルをルートプロジェクトのルートに作成。
(このgradle.propertiesファイルにkeystoreのパスワード等を設定する)
storeFile=キーストアのファイル名
storePassword=キーストアのパスワード
keyAlias=エイリアス名
keyPassword=エイリアスのパスワード
※ この例ではkeystoreファイルをプロジェクト内に配置していますが、プロジェクトの外に置いてstoreFileにパスを指定してもいけます。

build.gradle

サブプロジェクトのbuild.gradleにリリース用署名の設定を追加。
buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.5.+'
    }
}
apply plugin: 'android'

repositories {
    mavenCentral()
}

android {
    compileSdkVersion 18
    buildToolsVersion "18.0.1"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 18
    }

    signingConfigs {
        releaseConfig {
            storeFile=file(project.properties.storeFile)
            storePassword=project.properties.storePassword
            keyAlias=project.properties.keyAlias
            keyPassword=project.properties.keyPassword
        }
    }

    buildTypes {
        release {
            signingConfig signingConfigs.releaseConfig
        }
    }
}

dependencies {
    compile 'com.android.support:support-v4:18.0.0'
}

ビルド

ターミナルでルートプロジェクトのルートディレクトリに移動。
下記のコマンドを実行して暫し待つ。
./gradlew assembleRelease
ビルドが成功すると、サブプロジェクトのbuild/apk/の下に
<プロジェクト名>-release.apkというファイル名でリリース用APKが作成される。

インストールまで行う場合は
./gradlew assembleRelease installRelease
とする。

2013年8月27日火曜日

Android Studioでユニットテスト(Code Template編)

環境

・Mac OS X 10.8.4
・Android Studio (I/O Preview) 0.2.6

まず

こんな感じにテストクラスを準備。
package com.example.app.test;

import android.test.ActivityInstrumentationTestCase2;

import com.example.app.MainActivity;

public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActivity>{

    public MainActivityTest() {
        super(MainActivity.class);
    }

}

おもむろに

[command] + [N]。


[Test Method]を選択。


楽チン。
[Setup Method]/[TearDown Method]を選択すると、それぞれメソッドをオーバライドしてくれる。

ちなみに

コードテンプレートの定義はここで確認できる。