I. iOS9 bit code
First of all, the biggest problem is xcode7, which is turned on by default. Bitcode is a preparation made by Apple to solve the problem that its future application can change hardware at will, that is, the problem of arm instruction set and x64 instruction set.
So if you use a third-party library packaged by others in our project, well, the following error will be exposed.
LD: "/users framework/sdks/polymerpay/library/mobstat/lib * * sdk.a (* * forsdk.o)" does not contain bit code. You must rebuild it with the bit code (Xcodesetting ENABLE_BITCODE) enabled, get an updated library from the vendor, or disable the bit code for this target. For the architecture arm64
The above passage shows that our third-party library does not support bitcode. If you need support, you need this third-party library to support bit code. Apple's current temporary solution is the same as the original solution of MRC and ARC. When xcode5 is updated, the project is created by ARC by default. You can turn off ARC instead of MRC. After a while, everyone started using ARC, and so did bitcode. When xcode7 is turned on by default, we need to turn it off. So how do you turn it off?
I quoted a gif picture of an article as a demonstration.
In targets, select Building Setting to search bitcode, and then change it to no, and it's ok.
Two. IOs 9 completion:],/buildroot/library/caches/com.apple.xbs/sources/uikit _ sim/uikit-3505.16/uiapplication.m: 3294 (provided by Qun Yousun)
In Info.plist, you can find the string "main" of "main storyboard library name", delete this entry, and then start, and the screen will turn black.
Add window manually
-(BOOL)application:(ui application *)application diddfinishlaunchingwithoptions:(ns dictionary *)launch options {
//User-defined coverage points after the application starts.
self . window =[[ui window alloc]initWithFrame:[[ui screen main screen]bounds]]; //Full screen window
self . window . background color =[ui color white color]; //White background
[self . window makeKeyAndVisible]; //
Return YES
}
Well, due to the update of xcode7, this error has been solved!
If you find that you still report an error after the above modification, go and see if you have added a wizard page to your project.
Just change the above add method to the following one.
This add method was fine before xcode7, but it can't be written like this after xcode7!
6. yes. The dylib file can't be found (lost), so it can't run if it is replaced by a. tbd file. Please solve it in the following way.
Go to the construction phase & gt Link binaries with libraries & gt+& gt;; Add others
Once in the file selection window, execute "cmd"+Shift+G (go to folder) and type /usr/lib/
From /user/lib, you can add: libz.dylib and so on. ...
Compile and have fun
Simplified book Xcode7 FAQ
/p/ef 7 bb 1c 8393
1.Xcode7, what Xcode happened and what code fragment was implanted after iOS9 was haunted? You can go and see and get to know http://drops.wooyun.org/news/8864..
2. Bit code problems-incorrect settings may cause compilation problems. Adjust iOS9
1. Most social platform interfaces do not support the https protocol.
Problem description: Under iOS9, the system will intercept the access to the http protocol interface by default, so the data of the http protocol interface cannot be obtained. For ShareSDK, the specific performance may be the inability to authorize, share and obtain user information. It may also cause our editing interface to be unable to display screenshots when uploading network pictures such as http. The solution is to turn off https completely and allow http requests. Or add fields of pictures; Or choose a picture using https.
Solution (the following method 2 is 1):
(1), temporarily return to the http protocol.
Specific method: add a Key:NSAppTransportSecurity in the info.plist of the project, with the type of dictionary. Then add a key to it: nsalowArbitraryloads, Boolean type, YES value;
example
(2) Set the domain. It can be simply understood that the interface that does not support the https protocol is set as the interface of http.
Specific methods:
1), add a Key:NSAppTransportSecurity in the info.plist of the project, and the type is dictionary type.
2), and then add a NSExceptionDomains to it, the type is dictionary type;
3) Add the required support domains to NSExceptionDomains. Where the domain is the key and the type is the dictionary type.
4) Under each domain, you need to set three properties: NSIncludesSubdomains, nsexceptionrequiresForward Secrety and nsexceptional lowinsecureHttploads. They are all Boolean types with values of YES, NO and YES respectively.
example
2. bitcode is not supported by most social platform SDK.
Problem description: By default, the new iOS 9 project needs to support bit code, and the SDK that does not support bit code will cause the compilation to fail. Solution:
(1), temporarily turn off support for bitcode (recommended), as shown in the figure below.
(2) Remove the platform SDK that does not support bit codes.
example
3. Add scheme white list
Problem description: When the platform client jumps under iOS 9, the system will automatically check whether the platform scheme is set under project info.plist. If the platform needs to be configured, it will not be able to jump to the platform client normally. Therefore, in order to support the sharing and authorization of clients, you need to configure the scheme list.
Specific methods:
1), add an LSApplicationQueriesSchemes in the info.plist of the project, with the type of array.
2), and then add a project to support it, the type is string type;
example
3. The 3.ATS setting is incorrect, which may cause some network requests to be wrong.
WWDC 20 15 understands that iOS 9 will require network requests to use the HTTPS protocol. As we know, Apple has done a lot of work in security and user privacy, including sandbox mechanism, code signing, and disabling private API. At WWDC 20 15 in June this year, Apple put forward the concept of App Transport Security (ATS). The main purpose of this function is to provide a secure communication method between our App and the server to prevent the middleman from eavesdropping and tampering with the transmitted data. IOS 9+ and OS X 10. 1 1+ support this function by default. The introduction of this concept will also mean that Apple will slowly turn to supporting HTTPS and may give up HTTP.
Technical requirements of App transmission security
Let's take a look at the technical requirements of ATS (refer to App Transport Security Technote):
The 1) server must support at least Transport Layer Security (TLS) protocol version 1.2.
2) Connection passwords are limited to those that provide forward secrecy (see the password list below. )
3) The certificate must be signed with SHA256 or better signature hashing algorithm, with RSA key of 2048 bits or higher or elliptic curve (ECC) key of 256 bits or higher.
It can be seen that the server must support TLS 1.2 or above; You must use a password that supports forwarding confidentiality; The certificate must be signed with SHA-256 or better signature hashing algorithm. If the certificate is invalid, the connection fails.
Apple believes that this is the best way to ensure communication security at present, especially using TLS 1.2 and forward secrecy. Of course, I believe that Apple will keep pace with the times and constantly modify ATS to ensure the security of network communication.
Default configuration
In iOS 9+ and OS X 10. 1 1+, if our App uses the related API of NSURLConnection, CFURL or NSURLSession for data communication, the data will be transmitted by ATS by default. In this configuration, if we use HTTP to communicate, the request will fail with the following error:
The resource cannot be loaded because applying transport security policy requires a secure connection.
This means that if you use ATS, you will not be able to support the HTTP protocol (we have tested it, because our login service uses the HTTP protocol, and we can't log in normally under iOS 9 at present). It is believed that there are still a large number of applications accessing the server through the HTTP protocol. It is obviously a time-consuming and laborious thing to make all applications support HTTPS (different from the fact that all applications had to support 64-bit ARM at the beginning of this year, when it was only at the client level, ATS involved servers and had a greater impact). So Apple provided a compatible solution. Let's take a look at how to deal with it.
Custom configuration
For practical reasons, we may not want to use the default configuration, or at least need a transition period. To this end, Apple allows us to configure ourselves in the Info.plist file to modify the default settings. The following table shows some key values and their corresponding types and exceptions:
example
example
example
example
example
4. The scheme setting is incorrect, which may lead to the problem of jumping between applications.
Same white list
5. Incorrect setting of "Full Screen Required" may lead to application upload failure. Prompt ITMS-90474 ITMS-90475
example
Calligraphy education should start with dolls and cultivate their hobbies from an early age. Let calligraphy develop faster. The following is what I arrang