特に何も指定しなかったときのインスタンス変数の有効範囲は@protectedと同等。
以下ディレクティブ。
ディレクティブ | 意味 |
---|---|
@private | クラス内でのみアクセス可能 |
@protected | クラス内と、その継承されたクラスでのみアクセス可能 |
@public | どこからでもアクセス可能 |
@package | 意味不明 |
@packageは意味不明。private_externが何なのか知らない。
シンボルテーブルには登録しないってやつ?
androidの@hideみたいな感じ?
メモ代わり。てきとーに。 いや、ですからてきとーですって。 2年前ぐらいにPythonあたりでメールくれた方、ごめんなさい。メール紛失してしまい無視した形になってしまいました。。。
特に何も指定しなかったときのインスタンス変数の有効範囲は@protectedと同等。
以下ディレクティブ。
ディレクティブ | 意味 |
---|---|
@private | クラス内でのみアクセス可能 |
@protected | クラス内と、その継承されたクラスでのみアクセス可能 |
@public | どこからでもアクセス可能 |
@package | 意味不明 |
投稿者 atkonn 時刻: 23:10:00 0 コメント
ラベル: Objective-C, お勉強, メモ
レシーバが持つインスタンス変数への参照
インスタンス変数の名前そのままでアクセス可能。
- (void)setA:(BOOL)b { a = b; }レシーバが保持しているインスタンス変数aへアクセス
@interface ObjA { ObjB *objB; } @interface ObjB {
@public BOOL a; } @implementation ObjA - (void)methodA:(BOOL)b { objB->a = b; }
投稿者 atkonn 時刻: 22:43:00 0 コメント
ラベル: Objective-C, お勉強, メモ
@implementationで始まり、@endで終わる。
#import "この実装のインタフェース.h" @implementation クラス名 { インスタンス変数宣言 } メソッド定義インスタンス変数宣言は必要なければ省略可能。その歳は{}も省略する。
- (型)メソッド名 { // ここに実装を定義 }
#import "stdarg.h" - (void)methods: param1, ... { va_list ap; va_start(ap, param1); .... }
ラベル: Objective-C, お勉強, メモ
インタフェースが、その階層以外のクラス名を記述している場合は、
そのクラスのインタフェースファイルをインクルードするか、
@classディレクティブを記述する。
@class クラス名; @class クラス名, クラス名;@classディレクティブは、インタフェースをインクルードしない。
ラベル: Objective-C, お勉強, メモ
インタフェースの場合、そのインタフェースに依存する全てのソースにincludeする必要がある。
インタフェースファイルは通常以下のようにincludeする。
#import "インタフェースファイル.h"
ラベル: Objective-C, お勉強, メモ
クラスは以下の2つに分けて定義する。
1) インタフェース
2) 実装
通常インタフェースと実装は別々のファイルとし、インタフェースは.h、実装は.mという拡張子をもつ。
インタフェース
インタフェースはディレクティブ@interfaceで始まり、ディレクティブ @endで終わる。
クラスのインタフェースは以下のように定義する。
@interface クラス名 : スーパクラス { インスタンス宣言 } メソッド宣言 プロパティ宣言 @end
+ (戻り値の型)メソッド名; +(戻り値の型)メソッド名:(パラメータの型)パラメータ; +(戻り値の型)メソッド名:(パラメータの型)パラメータ 名前:(パラメータの型)パラメータ;
-(戻り値の型)メソッド名; -(戻り値の型)メソッド名:(パラメータの型)パラメータ; -(戻り値の型)メソッド名:(パラメータの型)パラメータ 名前:(パラメータの型)パラメータ;
- (void)methoddayo:param1, ...;
@property (attribute) Type propertyName;
投稿者 atkonn 時刻: 23:57:00 0 コメント
ラベル: Objective-C, お勉強, メモ
クラス名は以下の2つの場合にのみ使用できる。
投稿者 atkonn 時刻: 23:18:00 0 コメント
ラベル: Objective-C, お勉強, メモ
クラスオブジェクトはルートクラスのインスタンスメソッドを実行する権限があるらしい。
.
投稿者 atkonn 時刻: 23:09:00 0 コメント
ラベル: Objective-C, お勉強, メモ
クラスが静的変数やグローバル変数を使っている場合、initializeというメソッドで初期化するのが良いんでないかい、と書いてある。
ランタイムがinitializeメッセージを送るタイミングは以下のとおり。
1) メッセージを受信する前
2) 該当クラスのスーパークラスがinitializeメッセージを受信した後
よって、クラスは使用される前にinitializeメッセージを処理する機会が与えられる。
特に初期化する必要がなければ、initializeメソッドを実装する必要は無い。
注意点!
initializeを実装したスーパークラスObjAを継承したinitializeを実装しないクラスObjBがある場合、ObjBに対して送られたinitializeメッセージはObjBに該当するinitializeメソッドが
無いため、スーパークラスObjAのinitializeへと転送する。そのため、ObjAのinitializeメソッドが複数回実行されてしまう場合がある。
複数回実行されるのを防ぐために、以下のように実装する。
+(void)initialize { if (self == [ObjA class]) { // ここで初期化処理 } }
ラベル: Objective-C, お勉強, メモ
そんなものは無い。
グローバル変数やstatic変数で代用した例。
static ObjA *objA;
@implementation ObjA;
+(id)getInstance
{
どーのこーのどーのこーの
return objA;
}
もちろん
static ObjA *objA;
じゃなく、
ObjA *objA;
とすることも可能。
だけど、なるべく有効範囲を限定した方が有効、とのこと。
.
投稿者 atkonn 時刻: 21:28:00 0 コメント
ラベル: Objective-C, お勉強, メモ
allocメソッド
新しいオブジェクトのインスタンス変数を動的にメモリを割り当てる。
割り当てたインスタンス変数を0に初期化する。
クラスオブジェクトには少なくともallocのようなメソッドが1つ以上ある。
id str = [NSString alloc];
みたいな。
initメソッド
オブジェクトが有用であるためには、0で初期化するだけじゃなく
完全に初期化する必要があり、その初期化を行う。
通常allocの直後に行う。
クラスオブジェクトには少なくともinitのようなメソッドが1つ以上ある。
id str = [[NSString alloc] init];
とか。
ラベル: Objective-C, お勉強, メモ
ソースコード上では、クラスオブジェクトはクラス名として表される。
ex)
[NSString alloc];
メッセージ式で、単なるレシーバオブジェクトとして表される。
その他の場合、クラスまたはインスタンスに対してidクラスを返すよう要求することで
クラスオブジェクトを得られる。
ex)
id classObjDaYo = [NSString class];
NSString *strObj = [NSString @"aaa"];
id classObj2DaYo = [strObj class];
上記で、クラスオブジェクトはid型としているが、すべてのクラスオブジェクトは
Class型なので、Class型とすることもできる。
ex)
Class classObjDaYo = [NSString class];
.
ラベル: Objective-C, お勉強, メモ
実行時にインスタンスがどの型かを調べることができる。
調べるためには、NSObjectのメソッドが使える。
isMemberOfClass:
レシーバが、引数で指定されたクラスであるかどうか調べる。
[objA isMemberOfClass:ObjA];
objAはObjAクラスであるかどうか。
isKindOfClass:
レシーバが、引数で指定されたクラスを継承しているか、または属しているかを調べる。
.
ラベル: Objective-C, お勉強, メモ
クラス定義は追加的に定義する。
新しいクラスはすべて別のクラスをベースとする。
NSObjecgt
ルートクラスは普通はNSObject。
NSObjectはルートクラスなのでスーパクラスが無い。
ルートクラスを定義することも可能だけど、止めといた方がいいってさ。
オブジェクトとして動作させるコードが書いてあるらしい。
インスタンス変数
普通に継承
メソッド
普通
メソッドのオーバライド
普通.
インスタンス変数のオーバライド
できない。
抽象クラス
継承されることが目的であったり、主に継承されることが目的のクラス。
通常、単独では不完全。
ただし、Objective-Cにはクラスを抽象クラスとしてマークするような構文は無い。
抽象クラスであってもallocできる。
ラベル: Objective-C, お勉強, メモ
Objective-Cではクラスを定義することでオブジェクトを定義する。
クラスの定義は一種のオブジェクトのプロトタイプ。
コンパイラによってクラスに1つだけアクセス可能な「クラスオブジェクト」(ファクトリオブジェクト)が作成される。
このクラスオブジェクトにより構築されるオブジェクトが、クラスのインスタンス。
慣習的にクラス名は大文字で始まる。
インスタンス名は小文字で始まる。
.
投稿者 atkonn 時刻: 23:27:00 0 コメント
ラベル: Objective-C, お勉強, メモ
アクセサメソッドを呼び出す[]の代わりにドットを使うことができる。
直接インスタンス変数を変更しているわけではなく、アクセサメソッド呼び出しの「構文糖」。
[ObjA setValue:10];
と書く代わりに
ObjA.value = 10;
と書くことができる。
同様に
int a = [ObjA getValue];
と書く代わりに
int a = ObjA.value;
と書くことができる。
直接ObjAのインスタンス変数valueにアクセスしているわけではなく、
ObjAのアクセサメソッドを経由している。
自分の保有するインスタンス変数にアクセスする場合、self.(selfドット)をつけて
アクセスすれば、アクセサメソッド経由になる。もちろんself.を付けなければ
直接インスタンス変数にアクセスする。
[self setValue:10];
は
self.value = 10;
と同等だけど、
value = 10;
とは違う。インスタンス変数に直接アクセスしている。
へへ。
.
投稿者 atkonn 時刻: 23:07:00 0 コメント
ラベル: Objective-C, お勉強, メモ
受信側のオブジェクトと、メッセージは、メッセージが送信されるまで結合されない。
なので、実際にどのメソッドが実行されるかは、実行時にだけ知ることができる。
さらに、送信するメッセージ(メソッドセレクタ)も実行時に決定させることが可能。
(メッセージ(メソッドセレクタ)を変数にする)
.
ラベル: Objective-C, お勉強, メモ
異なるオブジェクトでも同じセレクタ名を持つのであれば
同じメッセージに対して、応答することができる。
@implementation ObjBase;
- (void)methodBase:(id)obj
{
[obj methodYahoo];
}
@implementation ObjA;
- (void)methodYahoo
{
NSLog(@"ObjA DA YO!");
}
@implementation ObjB;
- (void)methodYahoo
{
NSLog(@"ObjB DA YO!");
}
であれば、
[[[ObjBase alloc] init] methodBase:[[ObjA alloc] init]];
がいけるとすれば、
[[[ObjBase alloc] init] methodBase:[[ObjB alloc] init]];
もいけるって感じかどうなのか。
.
ラベル: Objective-C, お勉強, メモ
あるオブジェクトに対して何か実行させたいなら、そのオブジェクトに対してメッセージを送るんだそうだ。
その書式は以下。
[receiver message];
これを「メッセージ式」というらしい。
receiver は、メッセージを受信するオブジェクト。
messageは、receiverが実行すべきこと。
ランタイムシステムはメッセージが送信されると、receiverの持つ全てのメソッドの中から適切なメソッドを選んで呼び出す。
なので、message部分はreceiverのメソッド実装を「選択」することから
セレクタと呼ぶこともあるとのこと。
message部の書き方
AオブジェクトのBメソッドを実行する場合
[A B];
Aオブジェクトの引数1つのBメソッドを実行する場合
メソッド名の直後にコロンを置いて、その直後に引数の値を指定する。
[A B:10];
Aオブジェクトの複数の引数を持つBメソッドを実行する場合
2つ目以降の引数には引数名とコロン、そして引数の値を指定する。
[A B:10 C:20 D:30];
セレクタ名(Javaで言えばシグネチャ?)は、メソッド名とパラメータ名で成る。
上記の例だと
B:C:D:
となるとのこと。コロンが3つあるのは引数を3つ取るため。
戻り値や引数の型はセレクタ名には含まれない。
Aオブジェクトの可変引数を持つBメソッドを実行する場合
コロンの後にカンマで区切って指定する。
[A B:10,20,30];
セレクタ名にはカンマは含まれない。
なので[A B:10,20,30]のセレクタ名は
B:
となる。
値を返すメッセージ式
メッセージ式で指定されたメソッドが値を返す場合、メッセージ式は値を返すことができる。
A = [B C];
BオブジェクトのCメソッドを実行した結果、その戻り値をAに代入。
メッセージ式の中にメッセージ式
メッセージ式はネストできるので以下のように書くことができる。
[A B:[C D]];
上記は、CオブジェクトのDメソッドの戻り値をAオブジェクトのBメソッドのパラメータとしている。
nilへのメッセージ
nilへメッセージ送信可能。
nilへのメッセージパターン
1) メソッドがオブジェクトを返す場合、nilを返す。
ObjB *objB = nil;
ObjA *objA = [ObjB methodReturnsObjA];
の場合objAはnil。
2) メソッドが以下の型を返す場合、メソッドは0を返す。
ポインタ型、sizeof(void*)以下のサイズの整数スカラ、float、double、long double、long long
@implementation ObjA;
- (float)methodReturnsFloat;
の場合、
ObjA *objA = nil;
[objA methodReturnsFloat];
は、0.0を返す。
3) メソッドがstructを返す場合は、そのstructのすべてのフィールドに0.0を返す。
4) 上記、1)〜3)以外の場合は、返す値は不定。
そんだけ。
.
ラベル: Objective-C, お勉強, メモ
オブジェクトは実行時に動的に型定義されるらしい。
どうやって型を特定するかというと、
振る舞い(メソッド)とデータ(インスタンス変数)の種類
で特定するっぽい。
で、これはisa変数ってのがやるみたい。
.
投稿者 atkonn 時刻: 19:56:00 0 コメント
ラベル: Objective-C, お勉強, メモ
NULLみたいなものでnilっていうのがある。
NULLオブジェクトだそうで。
値が0のid。
.
投稿者 atkonn 時刻: 19:46:00 0 コメント
ラベル: Objective-C, お勉強, メモ
どんなオブジェクトにも対応する汎用的な型に
投稿者 atkonn 時刻: 19:44:00 0 コメント
ラベル: Objective-C, お勉強, メモ
Objective-Cがサポートしているメモリ管理の仕組みは
1) 自動参照カウント(ARC:Automatic Reference Counting)
2) 非自動参照カウント(MRC:Manual Reference Counting/MRR:Manual Retain/Releae)
3) ガべージコレクション
の3つ。3)はiOSでは非対応。
1) 自動参照カウント(ARC)
コンパイラが勝手にオブジェクトの存続期間を推論しちゃって決定する。
2) 非自動参照カウント(MRC)
オブジェクトの存続期間は人間(ディベロッパ)が管理する。
3) ガベージコレクション
自動コレクタというのが勝手にオブジェクトの存続期間を管理する。
らしいよ。
.
投稿者 atkonn 時刻: 19:31:00 0 コメント
ラベル: Objective-C, お勉強, メモ
まぁ、manのとおり。
Xcodeプロジェクトのbuildするためには、.xcodeprojファイルのあるディレクトリにいってxcodebuildを実行すればいいらしい。
xcodebuild [-project projectname] [-target targetname ...] [-configuration
configurationname] [-sdk [sdkfullpath | sdkname]] [buildaction ...] [setting=val
ue ...]
って書いてあるんだけど、target、configuration、sdkってなんだろね。
targetとconfigurationはxcodebuild -listで分かるみたい。
$ xcodebuild -list
Information about project "exp1":
Targets:
exp1
exp1Tests
Build Configurations:
Debug
Release
If no build configuration is specified and -scheme is not passed then "Release" is used.
Schemes:
exp1
リファレンス
iOS Developer Library
https://developer.apple.com/library/ios/navigation/
日本語
https://developer.apple.com/jp/devcenter/ios/library/japanese.html
あれれ。
ということで、autoconf最新版にするよ。
できるかな。
$ curl -O http://mirrors.kernel.org/gnu/autoconf/autoconf-latest.tar.gz
$ tar xvzf autoconf-latest.tar.gz
$ cd autoconf-*
$ ./configure --prefix=/usr/local
$ make
$ sudo make install
そんだけ。
Xcode4.2だったので、Xcode4.3入れなおした。
appstoreからインストールしようと思ったら、、、いくらクリックしてもダウンロード
はじめない。。。
ということで、xcode_432_lion.dmgってやつを落してきて以下な感じでインストール。
$ hdiutil attach ~/Downloads/xcode_432_lion.dmg
$ sudo cp -R -p -v /Volume/Xcode/Xcode.app /Applications/Xcode.app
ついでにcltools_lion_latemarch12.dmgってのも。
$ hdiutil attach ~/Downloads/cltools_lion_latemarch12.dmg
$ cd /Volume/Command\ Line\ Tools
$ sudo installer -pkg ./Command\ Line\ Tools.mpkg -target /
そんだけ。
EAP認証をWiFiでやってみようと思い立つ。
WiFi+EAPなんてさっぱりわからん。
どうすりゃいいんだ、ということでググると・・・
WiFiルータでEAPに対応すると価格の桁が1つupするみたいね。。
個人的にはCoregaかPlanexのものしか手が出せない模様。。
ということでWiFiルータは安かったCoregaのCG-WLR300NMを選択。
で、CG-WLR300NMを入手して早速CG-WLR300NMをセットアップ。
するとRADIUSサーバを設置しないとダメみたい。
ちょうどDebianが入っているThinkPad X30があったのでここにRADIUSサーバを立てる。
$ aptitude search radius
ってたたくとfreeradiusがいっぱい出てくる。
ふーん、、、freeradiusを立てればいいのかな。
設定とか分からん。
ということで、再びggl。
http://www.eduroam.jp/docs/conf-freeradius2.html
というのを見つけた。これなら楽できそうだ。ということで
aptitutde installしないで、freeradius-2.1.1のソースをダウンロード。
FreeRadiusのホームページからだと2.1.1が見つからなかったので
(Old versionに2.1.1が無い?)githubからダウンロード。
コンパイル&/usr/local以下にインストール。
で、パッチ。
設定はパッチを当てると、概ねOKらしい。
/usr/local/etc/raddb/client.confを編集し以下を追加。
client wifi-ap {
ipaddr = 192.168.1.18
secret = abc123
}
/usr/local/etc/raddb/usersを編集し、以下を追加。
"foo" Cleartext-Password := "bar"
さて、あとは証明書。証明書が必要なんすね。
ということで
/usr/local/etc/raddb/certsへcd。
んで、
# make distclean
# rm ./index.txt
# touch ./index.txt
# make
# make client
よくわかんないけど、とりあえずクライアント証明書も作っとく。
できた証明書をandroidで読み込めるよう、pkcs12に変換。
# openssl pkcs12 -export -in ca.pem -inkey ca.key -out ca.p12 -name 'wifi-ca'
# openssl pkcs12 -export -in client.pem -inkey client.key -out client.p12 -name 'wifi-client'
あ、ここで-nameをつけとかないと、androidで使う時面倒(Wifi Managerを使う場合)。
android標準のWifiツールを使うのであれば、選択できるので-nameいらないかも。
で、これらの証明書をandroidへpush
$ adb push ./ca.p12 /mnt/sdcard
$ adb push ./client.p12 /mnt/sdcard
あとはandroid端末で操作。
「Settings」から「Location&Security」を選択して「install from microSD」を選択。
すると画面に
ca.p12
client.p12
が表示されるので、それぞれ選択。
パスワードをきかれるので、openssl pkcs12 -export時に設定したパスワードを入力。
そして、androidのcredential storage用のパスワードも設定。
準備完了。
radiusサーバを起動。
最初は動くかどうか分からんので
# radiusd -X
で起動。
wifi-apの設定。
radiusサーバのIPと、client.confに設定したsecretを設定。
android側から接続。
Network SSIDはCG-WLR300NMのCG-Guestでないやつ。
Securityは「802 1xEAP」を選択。(Scanリストから設定する場合は選択不可)
EAP methodは、「PEAP」を選択。
Phase 2 authenticationは、「None」。
CA certificateは「wifi-ca」。
User certificateは「wifi-client」。
Identityは「foo」。
Anonymous Identityは空。
Passwordは「bar」。
んで、Connect。
つながった。
radius -Xの出力も
Login OK
とか
success
とか出てる。
というか、エラーっぽいのが無いっぽい。
投稿者 atkonn 時刻: 20:39:00 0 コメント
ラベル: Android, freeRadius
.cでandroid/log.hをインクルード。
Android.mkに以下を追加。
LOCAL_LDLIBS := -llog
もしかしたら
LOCAL_LDLIBS += -llog
の方がいいかも。
(いや、CLEARしてるので無意味でした。。。)
__android_log_printが使えるようになると。
ログレベルは
typedef enum android_LogPriority { ANDROID_LOG_UNKNOWN = 0, ANDROID_LOG_DEFAULT, /* only for SetMinPriority() */ ANDROID_LOG_VERBOSE, ANDROID_LOG_DEBUG, ANDROID_LOG_INFO, ANDROID_LOG_WARN, ANDROID_LOG_ERROR, ANDROID_LOG_FATAL, ANDROID_LOG_SILENT, /* only for SetMinPriority(); must be last */ } android_LogPriority;
ProcessBuilderでプロセス作ってスタートすると
プロセスがきっちり終わらない場合ロックする場合がある。
多分ProcessManagerのexec中
synchronized(なんたらReferences) {
あたりかな。。。
アプリから起動したプロセスをアプリに紐付けたいからかしらね。
.
NDK環境構築&Getting Startedメモ
NDK環境作ってGetting Startedのメモ。
といってもドキュメントにあるとおり、インストールは「straightforward」で「involves extracting」するだけな感じ。
さっそくドキュメントみながらメモ。
Installing NDK
==========
1. http://developer.android.com/sdk/ndk/index.htmlからAndroid NDKをダウンロード
2. Android SDK最新版がインストールされていることを確認。
もし必要であれば最新版へとUPGRADE。
(NDKか過去バージョンと互換性はあるものの、過去バージョンのツールでは無いため)
http://developer.android.com/sdk/ndk/overview.html#reqs
も見といてね!
3. 1. でダウンロードしたものを、自分の環境の解凍ツールを使って解凍する。
ex) linux、tar.bz2の場合
$ tar xvjf android-ndk-r7c-linux-x86.tar.bz2
include $(call all-subdir-makefiles)
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := hello-jni LOCAL_SRC_FILES := hello-jni.c include $(BUILD_SHARED_LIBRARY)
public static int calculateSignalLevel(int rssi, int numLevels) { if (rssi <= MIN_RSSI) { return 0; } else if (rssi >= MAX_RSSI) { return numLevels - 1; } else { int partitionSize = (MAX_RSSI - MIN_RSSI) / (numLevels - 1); return (rssi - MIN_RSSI) / partitionSize; } }となってて、MIN_RSSI = -100、MAX_RSSI = -50となっているので
Galaxy NEXUSがね、WiFi Onした途端、落ちたんよ。
でね、再起動するものの、起動しきれずに落ちるんよ。
いずれ復旧するかと思って早3時間。ずっと再起動、クラッシュを繰り返してるんよ。
adbはつながるのでlogcat見てると、GTalkってのがWRITEできないってエラー吐いてるんだよね。。。
怪しい・・・
調べたらね、同様の現象が起きてる人がいるっぽい。
中には店で交換してもらったという人もいるっぽい。でもその人また再起動の無限ループ。
docomo行くか、文鎮か。
初期化すればいいのかな。
でも、docomoの保証なんていらないし、rootedしとくか
つーことで、
以下よくある手順(Debian squeeze)。
1) ボリュームボタン上下とも同時に押しながら、電源ボタン長押し
2) するとfastbootモードで起動する。(でかでかと「Start」って出てる)
3) PC(Debian squeeze)に接続
4) Superbootってやつを
http://android.modaco.com/topic/348161-01-feb-r4-superboot-rooting-the-gsm-lte-galaxy-nexus/からゲット。
5) 上記ダウンロードしたzipを解凍
$ unzip r4-galaxynexus-gsm-superboot.zip
$ cd r4-galaxynexus-gsm-superboot
$ ./fastboot-linux oem unlock
LOCK STATE - LOCKED
LOCK STATE - LOCKED
LOCK STATE - UNLOCKED
$ chmod +x ./install-superboot-linux.sh
$ ./install-superboot-linux.sh downloading 'boot.img'... OKAY booting... OKAY
投稿者 atkonn 時刻: 23:10:00 2 コメント
ラベル: Android, Galaxy NEXUS
android sdk(rev 16)ではjava.beans.*は実装されてないらしい。
だもんで、もう終わってるApache Harmonyからjava.beans実装をパチって
使えるようにしてみる。
Apache Harmonyのjre/lib/boot/beans.jarを<プロジェクト>/libsへコピー。
でコンパイルしてみると、
[dx]
[dx] trouble processing "java/beans/AppletInitializer.class":
[dx]
[dx] Ill-advised or mistaken usage of a core class (java.* or javax.*)
[dx] when not building a core library.
[dx]
[dx] This is often due to inadvertently including a core library file
[dx] in your application's project, when using an IDE (such as
[dx] Eclipse). If you are sure you're not intentionally defining a
[dx] core class, then this is the most likely explanation of what's
[dx] going on.
[dx]
[dx] However, you might actually be trying to define a class in a core
[dx] namespace, the source of which you may have taken, for example,
[dx] from a non-Android virtual machine project. This will most
[dx] assuredly not work. At a minimum, it jeopardizes the
[dx] compatibility of your app with future versions of the platform.
[dx] It is also often of questionable legality.
[dx]
[dx] If you really intend to build a core library -- which is only
[dx] appropriate as part of creating a full virtual machine
[dx] distribution, as opposed to compiling an application -- then use
[dx] the "--core-library" option to suppress this error message.
[dx]
[dx] If you go ahead and use "--core-library" but are in fact
[dx] building an application, then be forewarned that your application
[dx] will still fail to build or run, at some point. Please be
[dx] prepared for angry customers who find, for example, that your
[dx] application ceases to function once they upgrade their operating
[dx] system. You will be to blame for this problem.
[dx]
[dx] If you are legitimately using some code that happens to be in a
[dx] core package, then the easiest safe alternative you have is to
[dx] repackage that code. That is, move the classes in question into
[dx] your own package namespace. This means that they will never be in
[dx] conflict with core system classes. JarJar is a tool that may help
[dx] you in this endeavor. If you find that you cannot do this, then
[dx] that is an indication that the path you are on will ultimately
[dx] lead to pain, suffering, grief, and lamentation.
[dx]
[dx] 1 error; aborting
<!-- Converts this project's .class files into .dex files -->
<target name="-jarjar" depends="-compile">
<taskdef name="jarjar" classname="com.tonicsystems.jarjar.JarJarTask"
classpath="buildtools/jarjar-1.2.jar"/>
<jarjar jarfile="${out.absolute.dir}/repackagedclasses.jar">
<zipgroupfileset dir="${extensible.libs.classpath}" includes="*.jar" />
<rule pattern="java.beans.**" result="jp.co.qsdn.android.@1"/>
</jarjar>
</target>
<target name="-dex" depends="-compile, -post-compile, -obfuscate">
<target name="-dex" depends="-compile, -post-compile, -obfuscate, -jarjar">
<path refid="jar.libs.ref" />
<fileset file="${out.absolute.dir}/repackagedclasses.jar" />
$ ant debug
androidでstatic ipを割り当てるとき、
Settings.System.putString(getContentResolver(), Settings.System.WIFI_STATIC_IP, IPアドレス)
Settings.System.putString(getContentResolver(), Settings.System.WIFI_STATIC_GATEWAY,Gatewayアドレス)
Settings.System.putString(getContentResolver(), Settings.System.WIFI_STATIC_NETMASK, ネットマスク)
Settings.System.putString(getContentResolver(),Settings.System.WIFI_STATIC_DNS1, DNS1アドレス)
Settings.System.putString(getContentResolver(), Settings.System.WIFI_STATIC_DNS2, DNS2アドレス) Settings.System.putString(getContentResolver(), Settings.System.WIFI_USE_STATIC_IP, "1")
public IpAssignment ipAssignment;
public ProxySettings proxySettings;
public LinkProperties linkProperties;
もしかしてSSIDで一意としてる???
BSSがいいなぁ。
一応networkIdというのがキーになっているっぽい。
毎回設定クリアしてWEPキー入れるの面倒ね。
WiFi static、、惜しい!
.
Xperia初代だと見えて良いはずのWiFiルータがXperiaから見えない。。。
0cmぐらいの距離でも同じ。
他の端末は今のところ問題なし。
全く同じ型のWiFiルーターを別の場所で使うと、あら不思議。
Xperiaから見えるんですねー。
うーん、、、dhcp以下に何か残ってるのかしら。
意味不明。。。
全然違う話だけどOpenStreetMap良さそうね。
そんだけ。
--
Xperia初代は、Wifi Channel 13はダメらしい。
rootedでパッチあてろって。。
関係あるかな。。
--
sim無なしだとChannel13のApはスキャンしても出てこない。。
そういうもんか。
とういことで、APの方のChannelを13、12以外に設定して解決。
.
aChartEngineのメモ
ChartFactory.getほげほげViewでViewとってもいいんだけど、
そうすると、GraphicalViewのonDrawで
canvas.getClipBounds(mRect);
int top = mRect.top;
int left = mRect.left;
int width = mRect.width();
int height = mRect.height();
public class GraphicalView
extends View
{
private AbstractChart mChart;
private Paint mPaint = new Paint();
public GraphicalView(Context context, AbstractChart chart) {
super(context);
mChart = chart;
}
@Override
protected void onDraw(Canvas canvas) {
mChart.draw(canvas, 0, 0, getWidth(), getHeight(), mPaint);
}
}
TimeChart chart = new TimeChart(ほげほげセット, ほげほげレンダラー);
chart.setDateFormat("HH:mm:ss");
GraphicalView chartView = new GraphicalView(getApplicationContext(), chart);
chartView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, getResources().getDimensionPixelSize(R.dimen.height_of_graph)));
graphView.addView(chartView);
ラベル: aChartEngine, Android, メモ
public synchronized void add(Date x, double y) {
super.add(x.getTime(), y);
}
投稿者 atkonn 時刻: 18:59:00 0 コメント
ラベル: aChartEngine, Android, メモ
com.antivirusってやつ使ってると
logcatプロセスがもりもり増えていく。
で、最後に再起動。。。
.
--
2012/3/1時点ですでに修正されてるっぽい。
logcatプロセス増えない!
良かったー
.
/system/bin/ls
のメモ。
if (!strcmp(argv[i], "-l")) {
flags |= LIST_LONG;
} else if (!strcmp(argv[i], "-s")) {
flags |= LIST_SIZE;
} else if (!strcmp(argv[i], "-a")) {
flags |= LIST_ALL;
} else if (!strcmp(argv[i], "-R")) {
flags |= LIST_RECURSIVE;
} else if (!strcmp(argv[i], "-d")) {
flags |= LIST_DIRECTORIES;
某キャリアでの発売済機種一覧を探してて、
結局某キャリアのサイトで取得できることが分かり
早速GET。
が、
「横かよ!」
と思ったのは私だけではないはず。
わざとかな。。
--
というか、Wikipediaでいいじゃん
そんだけ
.
Android必須ではない、
プリインストールされているアプリで消せないアプリを見つけると、
必要以上にイラっとするね。。。
まぁ、root取れれば大体は消せるんだけど・・・。
ちなみにIS05
.
SELECT * FROM HOGEHOGE WHERE TARATARA = "HOGETARAPIN" LIMIT 10 OFFSET 20
SELECT * FROM HOGEHOGE WHERE TARATARA = "HOGETARAPIN" LIMIT 10,20