mikiyan1978’s 脱獄情報日記

脱獄に関する情報を発信します

iOS theosによるApplicationの作成方法

今回は端末に構築したtheosを使い簡単なアプリを作ってみましょう。
ボタンを配置してタップするとアラートを表示させるというシンプルなアプリです。

theos構築をしていない方はこちらを参考に構築して下さい。


では作っていきましょう。

ターミナルから次のコマンドを実行します。

$THEOS/bin/nic.pl

するとテンプレートがいくつか表示されますのでApplicationを選択します。

NIC 2.0 - New Instance Creator
------------------------------
  [1.] gazelle/view_plugin
  [2.] iMokhles/Tweak
  [3.] iOS/Aoraki2 Button
  [4.] iOS/CCLoader Plugin
  [5.] iOS/Command Line Interface
  [6.] iOS/Dynamic Library
  [7.] iOS/Flipswitch Toggle
  [8.] iOS/Scription Module
  [9.] iOS/Scription Script
  [10.] iOSGods CSCI Patcher v2.0
  [11.] iOSGods CSCI Patcher v3.0 NewAutoLipo
  [12.] iOSGods Patcher v1.1
  [13.] imported/iphone/action_menu_handler
  [14.] imported/iphone/activator_listener
  [15.] iphone/Application
  [16.] iphone/cctoggle_toggle
  [17.] iphone/cydget
  [18.] iphone/framework
  [19.] iphone/library
  [20.] iphone/preference_bundle
  [21.] iphone/tool
  [22.] iphone/tweak
  [23.] iphone/velox_plugin
  [24.] mikiyan1978's/tweak

諸所の入力が終わりましたらiFileなどのファイルマネージャーで作成したプロジェクトフォルダを開きます。

今回のプロジェクト名はbuttonappとしましょう。


次にMakefileというファイルの1番上に

ARCHS = armv7 arm64

これを追加記述します。32bit、64bit端末に対応させる為の記述です。
もうこの時点でこのアプリのコードは完成しています。ここでどんなアプリが出来るかビルドしてみましょう。

cd buttonapp
make package

このコマンドを実行します。
するとプロジェクトフォルダ内にdebファイルが作成されるのでインストールしてみましょう。
ここで注意ですがホーム画面に表示されるタイプのアプリなのでインストールしたあとは

uicache

キャッシュをクリアしてあげましょう。

暫くするとホーム画面にアプリが追加されます。
起動してみます。すると上下に黒帯がある真っ赤な画面が表示されます。とりあえず「真っ赤な画面を表示させるだけ」のアプリが完成しました。

ではこの真っ赤な画面を変更してみましょう。
例として普通の白い背景画面にしてみます。
RootViewController.mm
というファイルを開きます。

デフォルトでは

//デフォルト
#import "RootViewController.h"

@implementation RootViewController
- (void)loadView {
        self.view = [[[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]] autorelease];
        self.view.backgroundColor = [UIColor redColor];
}
@end

こんなコードになっているはずです。
これを次のコードに書き換えます。

//書き換える
#import "RootViewController.h"

@implementation RootViewController
- (void)loadView {
        self.view = [[[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]] autorelease];
        self.view.backgroundColor = [UIColor whiteColor];
}
@end

最後の行の

self.view.backgroundColor = [UIColor redColor];

ここのredColorを

self.view.backgroundColor = [UIColor whiteColor];

whiteColorへ書き換えます。こうする事で背景画面の色を変更できます。

さて背景画面の変更が出来ましたので、次は本題のボタンを配置してみましょう。
RootViewController.mmファイルを次のように書き換えます。

#import "RootViewController.h"

@implementation RootViewController
- (void)loadView {
        self.view = [[[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]] autorelease];
        self.view.backgroundColor = [UIColor whiteColor];

    UIButton *myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    myButton.frame = CGRectMake(110, 50, 100, 35);

    [myButton setTitle:@"ボタン" forState:UIControlStateNormal];

    [myButton addTarget:self action:@selector(myButtonPressed)  forControlEvents:UIControlEventTouchUpInside];

    [self.view addSubview:myButton];
}
@end

ここでビルドしてインストールしてみましょう。
すると画面に「ボタン」という名前のボタンが配置されているはずです。

タップする事も可能ですが、まだタップされた時の処理を書いていないのでアプリはクラッシュします。
では実際に処理を書いていきましょう。

#import "RootViewController.h"

@implementation RootViewController
- (void)loadView {
        self.view = [[[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]] autorelease];
        self.view.backgroundColor = [UIColor whiteColor];

    UIButton *myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];

    myButton.frame = CGRectMake(110, 50, 100, 35);

    [myButton setTitle:@"ボタン" forState:UIControlStateNormal];

    [myButton addTarget:self action:@selector(myButtonPressed)  forControlEvents:UIControlEventTouchUpInside];

    [self.view addSubview:myButton];
}

//タップ処理
- (void)myButtonPressed {
    UIAlertView *theAlert = [[UIAlertView alloc] initWithTitle:@"こんにちは!" message:nil delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK!", nil];

    [theAlert show];
    [theAlert release];
}
@end

これでタップ処理を実装出来ました。ビルドしてインストールしてみましょう。
ここでビルド時にエラーが出てしまう方は多いと思います。それはアラート表示させる為の
UIKitにあるUIAlertView
というフレームワークを使用します。
なのでMakefileというファイルに

buttonapp_FRAMEWORKS = UIKit

これを追加記述します。

ARCHS = armv7 arm64
include theos/makefiles/common.mk

APPLICATION_NAME = buttonapp
buttonapp_FILES = main.m buttonappApplication.mm RootViewController.mm
buttonapp_FRAMEWORKS = UIKit

include $(THEOS_MAKE_PATH)/application.mk

これでビルドできるはずです。

ボタンをタップすると上記画像のようにアラートが表示されたら完成です。

さて今回はボタンを配置してアラートを表示させるアプリを作ってみました。タップ処理の部分に別のコードを実装する事も可能です。
需要があれば続きを書きたいと思います。

質問がありましたら下のLINE追加ボタンより追加して下さい。
友だち追加

Twitterやってます。

オマケのカスタム検索です。