ホーム » 2013 » 6月

月別アーカイブ: 6月 2013

2013年6月
 1
2345678
9101112131415
16171819202122
23242526272829
30  

カテゴリー

アーカイブ

ブログ統計情報

  • 99,348 アクセス


Eclipse での設定など

ndk-build でのエラー
Compile thumb : ~ <= ~.c が表示されない.
  Android.mk の記述ミス.LOCAL_SRC_FILE になっていた(S がなかった).
TextView に setText などをするとエラーになる.
  setContentView(R.layout.activity_main) が呼ばれていなかった(コメントになっていた).
cpp として作成したものの利用で実行時エラー
  原因はわからず.c のファイルとして書換えてビルドで通った.


undefined reference to ‘sysinfo’
  Using sysinfo in Android NDK を見つけたが,使い方がわからず.
    undefined reference to ‘__NR_sysinfo’ となってしまう.


C/C++ プロジェクトのインクルードパスの設定
  プロジェクトの「プロパティ」,「C/C++ ビルド」-「設定」-「ツール設定」-「GCC ~ Compiler」-「インクルード」.
    全プロジェクトで有効にするには環境変数としての登録が必要?

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

NDK 環境作成 – 2

Eclipse と ADT で,Java を使用した Android AP は作成可能となった.
まだ NDK を入れてないので,プロジェクトの「右クリック」から「Android ツール」-「Add Native Support…」を選択すると,
NDK nothing
Android NDK を展開し,そのパスを「ウィンドウ」-「設定」,「Android」-「NDK」にパスを設定.
これで,「Add Android Native Support」ダイアログの「完了」が押せる様になる.


コマンドプロンプトから ndk-build などを実行するために環境変数の Path を設定
  %ANDROID_NDK% に c:\~\android-ndk-r8e
  %Path% に %ANDROID_NDK% を追加.


Android NDK: WARNING: APP_PLATFORM android-14 is larger than android:minSdkVersion 8 in ./AndroidManifest.xml
  よくわからないが,検索すると
    APP_PLATFORM=android-8 と記述した Application.mk を jni の下に作成すると通る.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

NDK 環境作成 – 1

まだ完全ではないが,何とか NDK のサンプルのビルド,実行までは可能となったので,
ここまでで参考にした本は,Android アプリ開発超入門Android NDK 入門
他にも NDK 関係の本は購入したが,開発環境の構築に関してはよくわからなかった.


PC 環境としては,Virtusl PC で Win XP を用意.メモリは 1 GB でも動作するが,1.2 GB 以上ある方が良い?
メモリ 1 GB では,エミュレータでのテストでメモリ不足となってしまったことがあった.
Eclipse のインストールには,Pleiades – Eclipse プラグイン日本語化プラグインを利用.
  Pleiades All in One 4.2.2a.v20130303
    その中の Ultimate 32 bit Full Edition
  注意しなければならないのが,zip の展開先フォルダの指定.
    WIn XP で,zip を c ドライブのルートに置いて,展開ウィザードの展開先を c:\ に指定した.
    展開には 30 分以上かかった(45 分位)?
Pleiades
ここまでで,「ファイル」-「プロジェクト」から,「Hello World C++ プロジェクト」-「MinGW」で exe が生成できる.
MInGW gcc


「ヘルプ」-「新規ソフトウェアのインストール」でADT プラグインを組込み.
  作業対象に,http://dl-ssl.google.com/android/eclipse/ と入力.
  「開発ツール」と「NDK プラグイン」をチェックしてインストール.
Eclipse の再起動後,SDK の場所を指定するか,ダウンロードしてインストールできる.
これで,「Android アプリケーション プロジェクト」が生成できるようになる.
  デフォルト状態でのスケルトンの生成では,API 8 のインストールが要求された.
出来上がったスケルトンの状態では,ビルドできない.
  MainActivity.java の R の部分がエラーとなっている.
   「ウィンドウ」-「パースペクティブのカスタマイズ」で「Android SDK および AVD マネージャー」を追加.
  よくわからないが,SDK Manager を起動してインストールされてないとなったものをインストール.
    Android SDK Build-tools
    4.2.2 ARM , x86 , MIPS
    Google USB Driver
  Eclipse の再起動で,R の部分のエラー表示はなくなりビルド可能となった.
    エミュレータを作成して,動作を確認.
    Java での Android 開発環境ができた.
Android Java Hello
他にも,SDK Manager を利用して,幾つかの API をインストール.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

Fedora をインストール

Mac の VirtualBox に Fedora をインストール.
  最初,WIn 7 の VirtualBox に Ubuntu をインストールした.
  インストール直後は動作していたが,そのうち起動時にブルースクリーンとなることがあった.
  以前 Android 環境を入れた時もそうだったので,VirtualBox との相性か?


ホームにできるフォルダが日本語名となるため検索すると,
  ホームディレクトリのフォルダ名を日本語から英語に変更するには


2013/06/26
環境を作成した時点では,うまく Windows Network が見えなかったが,…
  今開いてみたら見える様になっていた.


2013/06/27
デスクトップをカスタマイズしようと,ここを参考に GNOME Shell を有効に,…
  インストール後,再起動して,「GNOME Shell 拡張機能」の場所がわからなかったので,
    「アクティビティ」-「アプリケーションの表示」-「Tweak Tool」.
      「検索ワードを入力…」に “Tool” と入力するか,「アクセサリ」で絞った方がはやいかも.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

python.exe CreateProcess error=14001

Win XP 環境に,Titanium Studio をインストール.
Android SDK などの環境のパスなどを設定.
プロジェクトを作成して,スケルトンのままで実行すると,
  FastDev launching error
    Cannot run program “C:\Program Files\Appcelerator\Titanium Studio\plugins\
      com.appcelerator.titanium.python.win32_1.0.0.1338515509\python\python.exe”:
      CreateProcess error=14001, ?±??A?v???P?[?V??????\?¬?a?3?μ?-??¢????A?A?v???P?
検索すると VC の再頒布パッケージが必要とのこと.
イベントビューアを見ると確かに,
python VC9 CRT
面倒だったので,VC 9SP1 の両方をインストールして,起動する様になった.


2013/06/25
スケルトンの状態で,「Run As」-「Android Emulator」とすると,
  Titanium Command-Line Interface, CLI version 3.1.1, Titanium SDK version 3.1.1.GA
  Copyright (c) 2012-2013, Appcelerator, Inc. All Rights Reserved.
  [ERROR] : “Missing Java SDK. Please make sure Java SDK is on your PATH
  [ERROR] Application Installer abnormal process termination. Process exit value was 1
どこの部分を設定するのかよくわからなかったが,
インストール手順などを検索すると,環境変数を指定していない.
どれが必要なのかよくわからないが,
  %ANDROID_SDK% , %JAVA_HOME% の追加と,%PATH% にそれぞれの bin や tools などを追加.
これで,Emulator は起動する様にはなったが,うまく動作してない?それとも遅いだけ?


SMT-i9100 の接続
以前調べた時,実機との接続のためのドライバがないことは知っていた.
が,あまりにも Emulator では遅かったので,…
参考にさせてもらったのはここ
Android 開発のためのテスト環境を Virtual PC 内の WinXP に作成している.
SDK もその環境にはインストールしてある.
そのため,ゲストの SDK のフォルダを共有してインストールすることにした.


1. ホストの Win7 x64 で先ず接続するために.
  android_winusb.inf に SMT-i9100 用を追加.
    [Google.NTamd64]
    %SingleAdbInterface% = USB_Install, USB\VID_04E8&PID_9102
    %CompositeAdbInterface% = USB_Install, USB\VID_04E8&PID_9102&MI_01
  後で,ゲストの XP にもドライバを入れる必要があるので,[Google.NTx86] にも追加.
2. ドライバのインストールで,変更した inf を指定.
  デバイスマネージャで Android Device – Android Composite ADB Interface となっていれば良いみたい.
3. 今度はゲストの XP に.メニューの「USB」-「SMT-i9100」 で接続.
  ホストの時と同様に inf を指定してドライバをインストール.
Titanium Studio で,スケルトンのプロジェクトを開いて,Android Device として実行すると何とか起動した.


2013/06/27
KitchenSink をダウンロードして,Mobile Web Preview in Browser は動作するが
Android Device とすると,
  Titanium Command-Line Interface, CLI version 3.1.1, Titanium SDK version 3.1.1.GA
  [INFO] : Running build process: python “C:\…\mobilesdk\win32\3.1.1.GA\android\builder.py” …
  [INFO] logfile = C:\…\Titanium_Studio_Workspace\KitchenSink\build.log
  [ERROR] : Build process exited with code 1
  [ERROR] : Project failed to build after 7s 33ms
よくわからないが,Android 3.0 (API 11) のインストールで通る様になった?
けど,実機 SMT-i9100 では動作しない?
PC ,デバイス共に再起動で,起動時の Titanium のロゴまでは表示された.
途中で止まったようになったので,もう一回デバイスを再起動して,メニューから表示するとできた.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

MinGW インストール

Android の開発環境を用意しようとしていて,
Pleiades – Eclipse プラグイン日本語化プラグイン をインストールまでは行っていた.
pleiades-e4.2-ultimate-32bit-jre_20130303.zip
以前インストールした(展開)時は,ファイル名の長さの制限で引っかかって,インストールまでで中断していた.


が,よくわからない.
その中に MinGW があったので,そこから,…


~\MinGW\bin に gcc.exe などがあったので,
テスト用の Hello.c を作成して,コンパイルすると a.exe はできた.


c:\~\My Documents\Temp\Test> type T_Hello.c
#include <stdio.h>
int main (void) {
  printf(“hello\n”) ;
  return 0 ;
  }
 
c:\~\My Documents\Temp\Test> C:\pleiades\eclipse\mingw\bin\gcc.exe T_Hello.c
 
c:\~\My Documents\Temp\Test> dir
ドライブ C のボリューム ラベルがありません。
ボリューム シリアル番号は 7C5D-D1D9 です
c:\~\My Documents\Temp\Test のディレクトリ
2013/06/20 14:19 .
2013/06/20 14:19 ..
2013/06/20 14:19 49,177 a.exe
2013/06/20 14:07 78 T_Hello.c
2 個のファイル 49,255 バイト
2 個のディレクトリ 114,850,582,528 バイトの空き領域
 
c:\~\My Documents\Temp\Test> a
hello
 


これでは使い勝手が悪いので調べると,MSYS が使えそう.
けど MinGW フォルダには見当たらない.
MinGw Getting Started のリンク mingw-get-inst より,もう一度インストール.


MinGW Shell で開いてくるのは,C:\MinGW\msys\1.0\home\Iwao
 
C:\>tree \MinGW\msys\1.0\home
フォルダ パスの一覧
ボリューム シリアル番号は 7C5D-D1D9 です
C:\MINGW\MSYS\1.0\HOME
└─Iwao
  └─Temp
    └─Test


MSYS コンソール内で,
  ネットワーク上のファイルは,//DevXP/C_Drive/…/c_src/
  ls c:
  ls \\
  ls \\\\DevXP\\C_Drive
  \\ と / は,等価?
  more ではなく less


C++ のコード(std::cout<<“Hello CPP” << std::endl ;)をコンパイルすると,
$ gcc testcpp.cpp
C:\~\Temp\ccYlk1I9.o:testcpp.cpp:(.text+0x19): undefined reference to `std::cout’
C:\~\Temp\ccYlk1I9.o:testcpp.cpp:(.text+0x1e): undefined reference to `std::basic_ostream …

C:\~\Temp\ccYlk1I9.o:testcpp.cpp:(.text+0x6a): undefined reference to `std::ios_base::Init::Init()’
collect2: ld はステータス 1 で終了しました
  gcc ではなく,g++ を利用するみたい.
 
また,出来上がった C++ の exe は,MSYS コンソールの外では,
—————————
TestCPP.exe – コンポーネントが見つかりません
—————————
libgcc_s_dw2-1.dll が見つからなかったため、このアプリケーションを開始できませんでした。
アプリケーションをインストールし直すとこの問題は解決される場合があります。
—————————
OK
—————————


2013/06/25
Eclipse を起動して,
 「ファイル」-「新規」-「C++ プロジェクト」,「Hello World …」-「MinGW GCC」.
ビルド,実行で,
Eclipse Hello MinGW

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

CPoint と CGPoint

以前作成した MemoryStatus クラスを利用して,Win , iOS で書いてみた.
MemoryStatus の配列として,MemoryStatusAry を作成.
また,float の配列をそれぞれの点配列に変換する ::GraphGetPoint を用意.


Win
  void CMemSSDView::OnPaint()
  {
    CPaintDC dc(this);
    CRect rect ;
    GetClientRect(rect) ;
    {
      std::vector<float> grphF = MemSA.GetGraph(MemoryStatusAry::WinPhysF) ;
      std::vector<float> grphT = MemSA.GetGraph(MemoryStatusAry::WinPhysT) ;
      std::vector<float> grphP = MemSA.GetGraph(MemoryStatusAry::WinPageF) ;
      std::vector<CPoint> pntsF = ::GraphGetPoint(grphF,rect) ;
      std::vector<CPoint> pntsT = ::GraphGetPoint(grphT,rect) ;
      std::vector<CPoint> pntsP = ::GraphGetPoint(grphP,rect) ;
      {
        CPen penGreen(PS_SOLID,1,RGB(0,192,0)) ;
        CPen* oldPen = dc.SelectObject(&penGreen) ;
        dc.Polyline(&pntsF[0],pntsF.size()) ;
        CPen penRed(PS_SOLID,1,RGB(192,0,0)) ;
        oldPen = dc.SelectObject(&penRed) ;
        dc.Polyline(&pntsT[0],pntsT.size()) ;
        CPen penBlue(PS_SOLID,1,RGB(0,0,192)) ;
        oldPen = dc.SelectObject(&penBlue) ;
        dc.Polyline(&pntsP[0],pntsP.size()) ;
        dc.SelectObject(oldPen) ;
        }
      }
    }


iOS
  - (void)drawRect:(CGRect)rect
  {
    _context = UIGraphicsGetCurrentContext() ;
    {
      std::vector<float> grphP = MemSA.GetGraph(MemoryStatusAry::MacPFree) ;
      std::vector<float> grphA = MemSA.GetGraph(MemoryStatusAry::MacInact) ;
      std::vector<float> grphW = MemSA.GetGraph(MemoryStatusAry::MacWired) ;
      std::vector<CGPoint> pntsP = ::GraphGetPoint(grphP,rect) ;
      std::vector<CGPoint> pntsA = ::GraphGetPoint(grphA,rect) ;
      std::vector<CGPoint> pntsW = ::GraphGetPoint(grphW,rect) ;
      {
        [self setColor_r:0 g:192 b:0] ;
        CGContextAddLines (_context,&pntsP[0],pntsP.size()) ;
        CGContextStrokePath (_context) ;
        [self setColor_r:0 g:0 b:192] ;
        CGContextAddLines (_context,&pntsA[0],pntsA.size()) ;
        CGContextStrokePath (_context) ;
        [self setColor_r:192 g:0 b:0] ;
        CGContextAddLines (_context,&pntsW[0],pntsW.size()) ;
        CGContextStrokePath (_context) ;
        }
      }
    }

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

UIView のサイズ

MFC の CWnd::GetClientRect にあたるもの?
  drawRect の引数の rect
  self.bounds , self.frame
画面の向きに対して自動的に反映させるには
  self.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight ;


MoveTo , LineTo
  CGContextMoveToPoint , CGContextAddLineToPoint
  CGPathMoveToPoint , CGPathAddLineToPoint
Polyline
  CGContextAddLines
  CGPathAddLines

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.

ツールバーが印刷プレビューでうまくない

追加したツールバーでフローティング不可の時,印刷プレビューでの表示がうまくない.
印刷プレビュー ツールバー
CFrameWnd::OnSetPreviewMode を見ると,
  AFX_IDW_CONTROLBAR_FIRST ~ + 31 の範囲では ShowControlBar を呼出している.

Is this 投稿 useful? Useful Useless 0 of 0 people say this 投稿 is useful.