Titanium Studio, build: 3.1.3 の記事なので最新版では動作しないかもしれません
新しい記事はこちら
[Titanium Mobile] Android モジュールを作成 3.5.1GA
https://www.blogger.com/blogger.g?blogID=2518627692473629903#allposts
・モジュールの作成
File>New>Mobile Module Project
項目を入力
hogeProxy.javaなどを編集
・コンパイル
build.properties
android.ndk=/Users/[user name]/android-ndk-r8
ndkのパスを追加
android NDKが入ってない時は追加する
http://developer.android.com/intl/ja/tools/sdk/ndk/index.html
Android NDKを触ってみる
http://qiita.com/alingogo/items/203477c9da373ab7eacb
build.xmlを右クリック
Run>Ant
を実行
プロジェクト名を右クリック>Publish>package
Output LocationがTitaniumSDKの場合
/Users/[user name]/Library/Application Support/Titanium/modules
に配置される。
Mobile Projectは開いているプロジェクトにModuleを直接配置し、
対象のTiApp.xmlに自動で追加される
・モジュールのインポート
TiApp.xml>module>"+"ボタンで追加することができる。
※モジュールをTitaniumプロジェクトに更新するときは
TiApp.xmlから更新するプロジェクトを"-"ではずさないと更新されないらしい
2015年4月2日木曜日
2015年3月29日日曜日
[AndroidSDK]Error:Execution failed for task ':app:dexDebug'.
Android StudioでEclipseで作られたAndroidプロジェクトをインポートしたところ以下のエラーが発生した。
Error:Execution failed for task ':app:dexDebug'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException:
Process 'command '/Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home/bin/java''
finished with non-zero exit value 2
このログにある
Execution failed for task ':app:dexDebug'.
というエラーの原因は複数ある
EclipseからAndroid Studioのせかえ時のgradle対応でハマったエラーまとめ
http://qiita.com/konifar/items/dbbbfd94ad103239c627
Android Studio: Gradle - build fails — Execution failed for task ':dexDebug'
http://stackoverflow.com/questions/18021901/android-studio-gradle-build-fails-execution-failed-for-task-dexdebug
今回こちらで発生したエラーは
試験用と本番用2つの*.jarのライブラリに同名のクラスがあったため発生した。
重複クラスがあるライブラリのうち1つをgradleファイルから外して解決した
このエラーが発生した時はライブラリを見なおしてみると良い
例
dependencies {
// compile files('libs/samplelib_testing.jar')
compile files('libs/samplelib.jar')
}
Error:Execution failed for task ':app:dexDebug'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException:
Process 'command '/Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home/bin/java''
finished with non-zero exit value 2
このログにある
Execution failed for task ':app:dexDebug'.
というエラーの原因は複数ある
EclipseからAndroid Studioのせかえ時のgradle対応でハマったエラーまとめ
http://qiita.com/konifar/items/dbbbfd94ad103239c627
Android Studio: Gradle - build fails — Execution failed for task ':dexDebug'
http://stackoverflow.com/questions/18021901/android-studio-gradle-build-fails-execution-failed-for-task-dexdebug
今回こちらで発生したエラーは
試験用と本番用2つの*.jarのライブラリに同名のクラスがあったため発生した。
重複クラスがあるライブラリのうち1つをgradleファイルから外して解決した
このエラーが発生した時はライブラリを見なおしてみると良い
例
dependencies {
// compile files('libs/samplelib_testing.jar')
compile files('libs/samplelib.jar')
}
2015年3月28日土曜日
[AndroidSDK]ListViewで区切り線を非表示にする
ListViewに
android:divider="@null"
を追加するだけ
android:divider="#ffffff"
で区切り線の色を変えることができる。
区切り線の高さを変更するときは
android:dividerHeight="1dp"
を追加する
2015年2月26日木曜日
[AndroidSDK]Dependency Project:application:unspecified on project app resolves to an APK archive which is not supported as a compilation dependency.
AndroidStudioで以下のエラーが発生した
Warning:
Dependency Project:application:unspecified on project app resolves to an APK archive which is not supported as a compilation dependency.
File:Users/UserName/AndroidStudioProjects/project/application/build/outputs/apk/application-release-unsigned.apk
プロジェクトの依存関係がおかしい、らしく原因は
apply plugin: 'com.android.application'
をbuild.graleで保持しているアプリケーションが2つあったので
1つを
apply plugin: 'com.android.library'
にしてインポートしたところ解消された。
ライブラリにしたモジュールはbuild.graleからapplicationIdを削除する必要がある。
ライブラリにしたモジュールはbuild.graleからapplicationIdを削除する必要がある。
Android Studioでは
プロジェクト -> アプリケーション
-> ライブラリ
-> モジュール
といった関係でプロジェクト内には3種類のリソースがあるようだ
2015年2月25日水曜日
[AndroidSDK]Android Studio for macでオートインポートが動作しない
macでAuto importは
Control + Option + o
となっているが動作がうまくいっていなかったが
設定が足りなかった。
Android Studio -> Preferences -> Editor ->Auto Import > Insert imports on paste
-> All
Control + Option + o
となっているが動作がうまくいっていなかったが
設定が足りなかった。
Android Studio -> Preferences -> Editor ->Auto Import > Insert imports on paste
-> All
に設定、さらに
Add unambigious imports on the fly
にチェックをする必要がある。
stackoverflow
What is the shortcut to Auto import all in Android Studio?
http://stackoverflow.com/questions/16615038/what-is-the-shortcut-to-auto-import-all-in-android-studio
Add unambigious imports on the fly
にチェックをする必要がある。
stackoverflow
What is the shortcut to Auto import all in Android Studio?
http://stackoverflow.com/questions/16615038/what-is-the-shortcut-to-auto-import-all-in-android-studio
2015年2月19日木曜日
[AndroidSDK]No resource found that matches the given name 'Theme.AppCompat.Light.DarkActionBar'
AndroidSDK+Eclipseでプロジェクトを新規作成時に以下のエラーが発生した
プロジェクトはTarget SDKが4.4 Min SDKが2.2に設定されていた
error: Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Light.DarkActionBar'.
styles.xml /ProjectName/res/values-v14 line 8 Android AAPT Problem
サポートライブラリが足りてない、
ということでインポートするのだが、やり方がちょっと手間だ
EclipsからFile -> import -> Android - Exsting Android Code in Workspace
で
"android-sdk\extras\android\support\v7\appcompat"
を選択する
Project -> properties -> Android
を開き
先ほどのインポートしたファイルを選択すると、足りていないファイルがインポートされる
"android-sdk\extras\android\support\v7\"
をインポートすると、v7のライブラリをすべてインポートできる
プロジェクトはTarget SDKが4.4 Min SDKが2.2に設定されていた
error: Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Light.DarkActionBar'.
styles.xml /ProjectName/res/values-v14 line 8 Android AAPT Problem
サポートライブラリが足りてない、
ということでインポートするのだが、やり方がちょっと手間だ
EclipsからFile -> import -> Android - Exsting Android Code in Workspace
で
"android-sdk\extras\android\support\v7\appcompat"
を選択する
Project -> properties -> Android
を開き
先ほどのインポートしたファイルを選択すると、足りていないファイルがインポートされる
"android-sdk\extras\android\support\v7\"
をインポートすると、v7のライブラリをすべてインポートできる
2015年2月18日水曜日
[AndroidSDK]Gradle DSL method not found: 'compile()'
Android Studioで追加されたBuild.gradleでGithubにあるモジュールをしようと
dependenciesを追加したところ以下のエラーが発生した。
Gradle DSL method not found: 'compile()'
結果からと言うとprojectのbuild.gradleではなくappのbuild.gradleにdependenciesを追加すると良い
stackoverflow
Android gradle build Error:(9, 0) Gradle DSL method not found: 'compile()'.
http://stackoverflow.com/questions/26851230/android-gradle-build-error9-0-gradle-dsl-method-not-found-compile
dependenciesを追加したところ以下のエラーが発生した。
Gradle DSL method not found: 'compile()'
結果からと言うとprojectのbuild.gradleではなくappのbuild.gradleにdependenciesを追加すると良い
stackoverflow
Android gradle build Error:(9, 0) Gradle DSL method not found: 'compile()'.
http://stackoverflow.com/questions/26851230/android-gradle-build-error9-0-gradle-dsl-method-not-found-compile
2014年12月11日木曜日
[Android]別アプリにIntentで画像を送る
今のほとんどのアプリにある共有ボタンにresフォルダ内にある画像をつける
Uri imageUri = Uri.parse("android.resource://" + getPackageName() + "/drawable/" + "imageName");
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.setType("image/jpeg");
intent.putExtra(Intent.EXTRA_STREAM, imageUri);
startActivity(intent);
2014年5月20日火曜日
[Unity]Unityをはじめて触ってみた時のメモ
3日ほどUnityのiOS、Androidアプリを作ってみて、
コイン落としのようなアプリができたので使用感とハマったポイントを書き出してみる
・公式の日本語ドキュメントは豊富
・Assetを使うと時間を短縮できる
・言語は3つある
Javascript
チュートリアルや書籍の多くがJavascriptで書かれているが
UnityScriptと呼ばれるぐらいHTMLで使用するJavascriptと離れているのでちょっと使いにくい
Boo
Pythonっぽい言語になっている、これで書いている人は少ないようだ
C#
ドキュメントも豊富で結局C#を選択した
・全てのassetやサンプルプログラムがスマホ用に最適化されているわけではない
Unityでは複数のプラットフォームに対応するために
[Project Setting]>[Input]から呼び出せる入力用Wrapperが標準で用意されているために
コントローラー、ジョイスティックやキーボードの入力を簡単に設定できる
例、プレイヤーが右に移動するスプリクトを組むだけで
コントローラー右、ジョイスティックを右に傾ける、キーボード"D"キー
の3つが対応される
ただしタッチパネルの場合は例外でコードを入力する必要がある。
function Update () {
for (var touch : Touch in Input.touches) {
//TODO touch event
}
}
タッチイベント用のAssetも豊富にある
オススメはこちら
TouchScript
タップ、ドラッグ、ロングタップなどに対応
スマホ以外にもWindows系列にも対応している
サンプルの動作が自然な感じなので作成するアプリに役立ちそう
コイン落としのようなアプリができたので使用感とハマったポイントを書き出してみる
・公式の日本語ドキュメントは豊富
・Assetを使うと時間を短縮できる
・言語は3つある
Javascript
チュートリアルや書籍の多くがJavascriptで書かれているが
UnityScriptと呼ばれるぐらいHTMLで使用するJavascriptと離れているのでちょっと使いにくい
Boo
Pythonっぽい言語になっている、これで書いている人は少ないようだ
C#
ドキュメントも豊富で結局C#を選択した
・全てのassetやサンプルプログラムがスマホ用に最適化されているわけではない
Unityでは複数のプラットフォームに対応するために
[Project Setting]>[Input]から呼び出せる入力用Wrapperが標準で用意されているために
コントローラー、ジョイスティックやキーボードの入力を簡単に設定できる
例、プレイヤーが右に移動するスプリクトを組むだけで
コントローラー右、ジョイスティックを右に傾ける、キーボード"D"キー
の3つが対応される
ただしタッチパネルの場合は例外でコードを入力する必要がある。
function Update () {
for (var touch : Touch in Input.touches) {
//TODO touch event
}
}
タッチイベント用のAssetも豊富にある
オススメはこちら
TouchScript
タップ、ドラッグ、ロングタップなどに対応
スマホ以外にもWindows系列にも対応している
サンプルの動作が自然な感じなので作成するアプリに役立ちそう
2014年4月21日月曜日
[AndroidSDK]エラー"R cannot be resolved to a variable"
"R cannot be resolved to a variable"というエラーが出る場合の対処方
Rファイルが更新されてないのが原因っぽいが、そうでも無いこともあって意味不明
以下は経験則に基づいた対処法
・Clean>Build
一番お手軽だけど解決されないことが多い
・eclipseを終了>プロジェクトフォルダ内のbinとgenを削除>eclipse起動
これで解決することが結構ある
・エラーの起こるソースに"import com.example.android.R;"を追加する
プロジェクトを作って1回目のBuild時にこれを入れるとeclipseを再起動しなくてすむ
・↑の逆で「エラーの起こるソースの"import com.example.android.R;"を外す
--NEW--
・エラーの起こるソースのパッケージ名を変更>エラーが出たままなのでパッケージ名を戻す
でなぜかエラーがとれたことがあった
・Android2.1など古い段階でに作られたプロジェクトに起こる可能性が高いような気がする
新しいAndroidSDKで新規にプロジェクトを作成し必要なデータのみコピーしたところ発生しなくなった
Rファイルが更新されてないのが原因っぽいが、そうでも無いこともあって意味不明
以下は経験則に基づいた対処法
・Clean>Build
一番お手軽だけど解決されないことが多い
・eclipseを終了>プロジェクトフォルダ内のbinとgenを削除>eclipse起動
これで解決することが結構ある
・エラーの起こるソースに"import com.example.android.R;"を追加する
プロジェクトを作って1回目のBuild時にこれを入れるとeclipseを再起動しなくてすむ
・↑の逆で「エラーの起こるソースの"import com.example.android.R;"を外す
--NEW--
・エラーの起こるソースのパッケージ名を変更>エラーが出たままなのでパッケージ名を戻す
でなぜかエラーがとれたことがあった
・Android2.1など古い段階でに作られたプロジェクトに起こる可能性が高いような気がする
新しいAndroidSDKで新規にプロジェクトを作成し必要なデータのみコピーしたところ発生しなくなった
2014年1月16日木曜日
[AndroidSDK]フォルダ操作関連
//フォルダの中身を確認
File dir = mContext.getFilesDir();
String[] list = dir.list();
Log.d(TAG, "list " + Arrays.toString(list));
//フォルダの作成
File makeDirFile = new File(dir.getPath() + "/" + "folder_name");
if (!makeDirFile.mkdir()) {
//フォルダ作成エラー
}
2013年8月28日水曜日
2013年8月27日火曜日
[Android]Javaで良く使うコードのメモ
//HashMapを格納する可変配列の宣言(コメントアウトのサンプル)
private ArrayList<Map<String, String>> arrayList = new ArrayList<Map<String, String>>();
//配列をループして取り出し
String data[] = {"a", "b", "c"};
for (String char: data){
System.out.println(String);
}
//0埋めの桁あわせ
String.format("%1$03d", intNumber)
//String -> byte[]
String data = "test;"
byte[] bytes = data.getBytes();
//byte[] -> String
String byteToString = new String(bytes);
2013年7月18日木曜日
[Android]バックキーを無効にする
以下のコードをActivityに追加。
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
switch (event.getKeyCode()) {
case KeyEvent.KEYCODE_BACK:
this.moveTaskToBack(true);
return true;
}
}
return super.dispatchKeyEvent(event);
}
2013年4月27日土曜日
[AndroidSDK]ServiceのbindService()でfalseが帰る
Intent intent = new Intent(this, MyService.class); boolean result = bindService(intent, mConnection, Context.BIND_AUTO_CREATE);.
でfalseが返ってくる
StackOverflowによると
Android Context.bindService always returns false and ServiceConnection object is never triggered
(bindServiceでfalseが返ってきてServiceConnectionが動かねえよ)
getApplicationContext().bindService()でいけるぜ、
この回答で動いた人がおおいみたいだが、今回はどうも違うようだ。
結論
Manifest.xmlで
<service android:name=".MyService" />
となっていたが、パッケージが間違っていた
<service android:name="Utility.MyService" />
2013年4月26日金曜日
[AndroidSDK]Google PlayにおけるAndroid端末のシェア率を見る
公式が出している。
Dashboards
http://developer.android.com/intl/ja/about/dashboards/index.html#Platform
14日前のデータとのこと。
これを見てどのバージョンに合わせるか考えると良い
iOSもこの表があると良いな、不定期にしか出してくれないからな
Dashboards
http://developer.android.com/intl/ja/about/dashboards/index.html#Platform
14日前のデータとのこと。
これを見てどのバージョンに合わせるか考えると良い
iOSもこの表があると良いな、不定期にしか出してくれないからな
2013年4月24日水曜日
[AndroidSDK]AsyncTaskを使用してバックグランド処理を行う。
ネットワーク処理をさせている間にProgressDialogを表示させたい時など
public class MainActivity extends Activity {
ProgressDialog progressDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
progressDialog = new ProgressDialog(this);
MyAsyncTask task = new MyAsyncTask();
//バックグランド処理を実行
task.execute(getApplicationContext());
//このログが実行されているときに、MyAsyncTaskが終わっているとは限らなので
//MyAsyncTask後に処理させたいときはonPostExecute()を使用すること
Log.i("tag", "mes");
}
public class MyAsyncTask extends AsyncTask {
@Override
//doInBackgroundが実行されてる前に呼ばれる
protected void onPreExecute() {
//ProgressDialogなどはここで実装すると良い
progressDialog.setMessage("データを取得しています。");
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressDialog.setCancelable(false);
progressDialog.show();
}
//バックグランド処理はここに追加
@Override
protected Integer doInBackground(Context... context) {
//何かの処理
return 1;
}
//doInBackgroundが実行された後に呼ばれる
@Override
protected void onPostExecute(Integer result) {
progressDialog.dismiss();
}
}
}
2013年4月23日火曜日
[AndroidSDK]DefaultHttpClientを使ってPOSTをする
public void httpConnect() {
DefaultHttpClient client = new DefaultHttpClient();
StringBuilder uri = new StringBuilder("hostname.com");
HttpPost http = new HttpPost(uri.toString());
http.setHeader("Content-type", "text/plain; charset=utf-8");
//bodyの作成
try {
http.setEntity(new StringEntity("body", "UTF-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
HttpResponse httpResponse = null;
try {
// HTTPリクエストを送信
httpResponse = client.execute(http);
} catch (Exception e) {
e.printStackTrace();
}
// HTTPレスポンスを取得
int status = httpResponse.getStatusLine().getStatusCode();
if (HttpStatus.SC_OK == status) {
//ヘッダーの表示
Header[] headerArray = http.getAllHeaders();
for (Header header : headerArray) {
Log.d(getLocalClassName(), "header[" + header.getName() + "] [" + header.getValue() + "]");
}
// Bodyの取得
HttpEntity httpEntity = httpResponse.getEntity();
String body = null;
try {
body = EntityUtils.toString(httpEntity);
} catch (ParseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Log.d(getLocalClassName(), "body " + body);
} else {
//TODO エラー処理
}
}
2013年4月22日月曜日
[Android SDK]Activity、アプリを終了させる。
・finish()
でactivityを1つずつ終わらせるのがベスト
ただしスタックされたn個のActivityを終わらせるには、見た目上うまく表示する必要がある。
・this.moveTaskToBack(true);
でアプリがバックグランドに入るので見た目上はこっちの方が良い
・System.exit(int)
は問題があるので使わない方がいい
2013年4月18日木曜日
[AndroidSDK]Thread時のUI更新
・AndroidアプリはUI更新は1タスクで回っている
・ThreadからUI更新をしても、更新先が無い
・Handlerで割り込みをして、UI更新のタスクに委任する
参考サイト
TechBooster
http://techbooster.org/android/application/6191/
throw Life
http://www.adamrocker.com/blog/261/
・ThreadからUI更新をしても、更新先が無い
・Handlerで割り込みをして、UI更新のタスクに委任する
public class SampleActivity extends Activity {
private static Handler mHandler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mHandler = new Handler(); //Handlerを作成
//Threadを開始
new Thread(new Runnable() {
public void run() {
if (true) {
TextView textView = (TextView) findViewById(R.id.TextView);
textView.setText("Handlerを使わないとここで落ちる");
}
mHandler.post(new Runnable() {
public void run() {
TextView textView = (TextView) findViewById(R.id.TextView);
textView.setText("Handlerを使って更新するので落ちるない");
}
});
}
}).start();
}
}
参考サイト
TechBooster
http://techbooster.org/android/application/6191/
throw Life
http://www.adamrocker.com/blog/261/
登録:
投稿 (Atom)