JBなiOS 7でCydiaを起動するにあたって、NavigationBarの下にviewが隠れる問題、UDIDが正確に取得できない問題などを修正してみた

  • このエントリーをはてなブックマークに追加
  • feedly
    follow us in feedly

iPhone 4、iOS 7で仮脱獄して色々やってきた訳ですが、Cydiaは起動させればいいかなぐらいで考えていたのでNavigationBar、UDIDの問題は放置してました。ただ、NavigationBar、UDIDを修正しないと色々と面倒なことに気がついてきたので修正してみました。

過去記事 :
iOS 7を脱獄して弄り倒したまとめ Cydia・substrateの現状、SBの謎の隠れ設定などなど | きんちゃんぶろぐ
追記 2013/12/23: 完全脱獄ツールリリース

こちらを使ってください:
iOS 7の完全脱獄ツールがリリース!!iOS 7の脱獄で入れときたいリポジトリ、Tweak! | きんちゃんぶろぐ




何が面倒?

NavigationBarの問題に関して:
Packageをインストールする際に、Continue Queuingが押せないため一気にインストールできない

UDIDの問題に関して:
UDIDが正常取得出来ないと、認証されていない端末になり、Link Deviceが毎回出て来る

iOSのバージョンが高いと言われる問題に関して:
CydiaからPackageをインストールする際、バージョンが高いと言われて、インストールを拒否される

NavigationBarの問題の修正

iOS 7でNavigationBar下にviewが食い込む問題は通常のアプリでの起こりうる事象です。AppleのDeveloperサイトにも詳細が書いていますので参考にしました。UIViewControllerのedgesForExtendedLayoutプロバティにUIRectEdgeNoneを指定すればいいようです。
CydiaはMobileCydia.mmが1万行ほどあることもあり非常に読みにくいですが、ズレるのはCyteKitのViewControllerが原因であると分かりました。これを特定するのに思ったより時間がかかっていしまった。そもそもiOS6.1のSDKをリンクさせているということもあり、Private APIとして書いて無理矢理やった感はあります。

これで押せる
2013 10 15 15 51 14
参考記事:
iOS 7 UI Transition Guide: Appearance and Behavior


iOS7でNavigationBar領域までViewが食い込んでしまう事象の回避方法 – hachinobuのメモ



UDIDの問題の修正

iOS 7でUDIDが取得出来なくなった問題がCydiaにも響いているようです。

参考記事:
UDIDが完全に利用禁止に – 強火で進め


全く違うIdentifierを取得しいている問題のCydia
2013 10 13 21 45 42
CydiaではUIDeviceからuniqueIdentifierを取得する方法を採用しています。

NSLog(@"-- udid: %@", UIDevice UIDevicecurrentDevice] uniqueIdentifier]);

通常アプリでは、Private APIですら取得出来ない?らしいですが、Cydiaは取得出来るのでPrivate APIに置き換えてやります。
UDIDはPrivate APIでゴロゴロ転がってるので適当に1つ選んでやって取得しました。

Class AADeviceInfo = NSClassFromString(@"AADeviceInfo");
NSLog(@"-- udid: %@", [AADeviceInfo udid]);

参考記事:
NSLog(@"– udid: %@", [AADeviceInfo udid]);


こんな感じで簡単に取得出来ます。

iOSのバージョンが高いと言われる問題の修正

CydiaからPackageをインストールする際は,firmwareを修正してやれば簡単に回避出来ます。
firmwareはCydiaが初めて起動されるときに、firmware.shによって、/var/lib/dpkg/statusに書き込まれます。
ここのfirmwareを探してVersionが7.0.2になっているので6.1.2に修正してやると偽装完了です。

Package: firmware
Essential: yes
Status: install ok installed
Priority: required
Section: System
Installed-Size: 0
Architecture: iphoneos-arm
Version: 6.1.2
Description: almost impressive Apple frameworks
Tag: role::cydia
Name: iOS Firmware


Add Sourceのレポジトリを使いする部分のキーボードに関して

Cydiaは、このリポジトリ追加するキーボードが黒いのがiOS 7には似合わない・・

typedef enum : NSInteger {
   UIKeyboardAppearanceDefault,
   UIKeyboardAppearanceDark,
   UIKeyboardAppearanceLight,
   UIKeyboardAppearanceAlert,
} UIKeyboardAppearance;

setKeyboardAppearanceで2を指定してやればホワイティになります。

2013 10 13 18 53 18

まとめ

昨日まではkernelにpatchを当ててsandboxの修正をずっとやっていましたがなかなかうまく行かないものです。
idaの使い方も少しずつ理解してきたものの奥が深すぎてほんと難しいです。
opensn0wがOSSなのも大変興味深くて弄るのが楽しいです。

あとrootアプリを起動する際にbackboarddが強制終了する問題に関してよく分からないですが、画面ロックすると真っ暗で表示出来なくなるのでそれを回避すべくアクセサビリティからSpringBoard,backboarddを再起動するtweakを入れときました。その名も「緊急回避」

wakinchan/EmergencyDetour



ではきんちゃんでした。





コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Post Navigation