Difference between revisions of "Next Steps After Getting Started"

From iPhone Development Wiki
Jump to: navigation, search
m (What's %ctor good for?: block != function)
m (Formatting.)
 
Line 3: Line 3:
 
These ones haven't been written yet, but it would be pretty cool for somebody to write them...maybe you? Anyone can start a page and begin writing some explanations, or you can just start filling out the sections below with more information. (Also, if you have an idea for a tutorial that you would like to see, feel free to add it to this list - it might inspire somebody to write an explanation of that thing you want to learn about.)
 
These ones haven't been written yet, but it would be pretty cool for somebody to write them...maybe you? Anyone can start a page and begin writing some explanations, or you can just start filling out the sections below with more information. (Also, if you have an idea for a tutorial that you would like to see, feel free to add it to this list - it might inspire somebody to write an explanation of that thing you want to learn about.)
  
== Using Development Tools ==  
+
= Using Development Tools =
 +
 
 +
== Changing System Volume with AVSystemController and Cycript ==
  
=== Changing System Volume with AVSystemController and Cycript ===
 
 
* assumes the reader has basic Cycript and Objective-C knowledge
 
* assumes the reader has basic Cycript and Objective-C knowledge
 
* takes the reader on a journey through AVSystemController's methods using cycript  
 
* takes the reader on a journey through AVSystemController's methods using cycript  
Line 11: Line 12:
 
* ends with using the information learned to make a [http://github.com/Nexuist/vol really simple command line utility]
 
* ends with using the information learned to make a [http://github.com/Nexuist/vol really simple command line utility]
  
===Dynamic Method Hooking With Cycript===
+
== Dynamic Method Hooking With Cycript ==
 +
 
 
* assumes the reader has basic Cycript and Objective-C knowledge
 
* assumes the reader has basic Cycript and Objective-C knowledge
 
* showcases Cycript's ability to hook methods  
 
* showcases Cycript's ability to hook methods  
 
* hook some example methods to display benefits of dynamic hooking
 
* hook some example methods to display benefits of dynamic hooking
  
=== What's %ctor good for? ===
+
== What's %ctor good for? ==
  
 
%ctor is a logos directive which resolves to <code>static __atribute_((constructor)) void _logosLocalCtor_&lt;8 hex characters&gt;()"</code>, which is a function that runs when your dylib is loaded.
 
%ctor is a logos directive which resolves to <code>static __atribute_((constructor)) void _logosLocalCtor_&lt;8 hex characters&gt;()"</code>, which is a function that runs when your dylib is loaded.
Line 35: Line 37:
 
It will probably minimize headache if you keep your %ctor use to just the bare minimum, and rather perform any extraneous setup at a later point.
 
It will probably minimize headache if you keep your %ctor use to just the bare minimum, and rather perform any extraneous setup at a later point.
  
===Dissecting App Store Apps===
+
== Dissecting App Store Apps ==
 +
 
 
* shows how to dump headers for an app binary (see also [[Reverse Engineering Tools]])
 
* shows how to dump headers for an app binary (see also [[Reverse Engineering Tools]])
  
== Integrating with Third Party Frameworks and Libraries ==
+
= Integrating with Third Party Frameworks and Libraries =
 +
 
 +
== Building Tweak Settings with [[PreferenceLoader]] ==
  
===Building Tweak Settings with [[PreferenceLoader]]===
 
 
* goes through the process of building simple tweak preferences that are shown in Settings
 
* goes through the process of building simple tweak preferences that are shown in Settings
 
* shows the correct way to read/write to those settings in your tweak code
 
* shows the correct way to read/write to those settings in your tweak code
 
* also shows how to use popular third party additions such as [[AppList]] / [[libcolorpicker]] / [[libactivator|Activator]]
 
* also shows how to use popular third party additions such as [[AppList]] / [[libcolorpicker]] / [[libactivator|Activator]]
  
===Your First Flipswitch===
+
== Your First Flipswitch ==
 +
 
 
* explains the idea behind the [[Flipswitch]] framework
 
* explains the idea behind the [[Flipswitch]] framework
 
* goes through the different methods / objects you'll probably be using
 
* goes through the different methods / objects you'll probably be using
 
* shows how to build a simple flipswitch (ex. a simple flashlight toggle)
 
* shows how to build a simple flipswitch (ex. a simple flashlight toggle)
  
===Integrating Your Tweak With Activator===
+
== Integrating Your Tweak With Activator ==
 +
 
 
* goes through the [[libactivator|Activator]] library
 
* goes through the [[libactivator|Activator]] library
 
* dos / don't of the Activator API
 
* dos / don't of the Activator API
 
* demo a simple Activator event (ex. got a notification from a specific app)
 
* demo a simple Activator event (ex. got a notification from a specific app)
 
* demo a simple Activator listener (ex. show an alert)
 
* demo a simple Activator listener (ex. show an alert)

Latest revision as of 19:52, 26 January 2016

Let's say you've figured out how to set up Theos, you know enough Objective-C to fool around, you know a little about how to use Cydia Substrate, and basically you've read all the beginner tutorials - what do you read next to learn more about jailbroken development as you experiment with building your own project? We should have a set of "next steps" tutorials for you!

These ones haven't been written yet, but it would be pretty cool for somebody to write them...maybe you? Anyone can start a page and begin writing some explanations, or you can just start filling out the sections below with more information. (Also, if you have an idea for a tutorial that you would like to see, feel free to add it to this list - it might inspire somebody to write an explanation of that thing you want to learn about.)

Using Development Tools

Changing System Volume with AVSystemController and Cycript

  • assumes the reader has basic Cycript and Objective-C knowledge
  • takes the reader on a journey through AVSystemController's methods using cycript
  • documents the thought process (ex. "-getVolume:(float*)arg1 forCategory:(id)arg2 indicates that there are different categories of volumes and they each have their own values")
  • ends with using the information learned to make a really simple command line utility

Dynamic Method Hooking With Cycript

  • assumes the reader has basic Cycript and Objective-C knowledge
  • showcases Cycript's ability to hook methods
  • hook some example methods to display benefits of dynamic hooking

What's %ctor good for?

%ctor is a logos directive which resolves to static __atribute_((constructor)) void _logosLocalCtor_<8 hex characters>()", which is a function that runs when your dylib is loaded.

The syntax is similar to that of a function. An example is shown below:

%ctor {
    //This runs when your tweak gets loaded into the target process
    NSlog(@"My tweak has loaded!");
}

%ctor can be useful for performing any setup, for example, instantiating variables or reading your tweak's preferences.

However, there are certain things which %ctor is not for. Do not use UIKit elements, perform time consuming algorithms or communicate over the network.

It will probably minimize headache if you keep your %ctor use to just the bare minimum, and rather perform any extraneous setup at a later point.

Dissecting App Store Apps

Integrating with Third Party Frameworks and Libraries

Building Tweak Settings with PreferenceLoader

  • goes through the process of building simple tweak preferences that are shown in Settings
  • shows the correct way to read/write to those settings in your tweak code
  • also shows how to use popular third party additions such as AppList / libcolorpicker / Activator

Your First Flipswitch

  • explains the idea behind the Flipswitch framework
  • goes through the different methods / objects you'll probably be using
  • shows how to build a simple flipswitch (ex. a simple flashlight toggle)

Integrating Your Tweak With Activator

  • goes through the Activator library
  • dos / don't of the Activator API
  • demo a simple Activator event (ex. got a notification from a specific app)
  • demo a simple Activator listener (ex. show an alert)