-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdevelop.txt
66 lines (46 loc) · 4.18 KB
/
develop.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
Bibledit for iOS
================
Introduction
============
In the second half of 2014 an effort was made to port Bibledit, written in PHP, to iOS. This required a PHP interpreter and a web server on a standard iOS device. To get the web server running was the easier part of the job. The other part, the PHP interpreter, proved to be a challenge. Initially PHP binaries from Cydia were used for that. But iOS does not allow starting a binary as a sub process. The application sandbox kills that binary straight after start. This was confirmed on the Apple iOS developer forum. The next step was to compile PHP for the iOS platform. This worked, sort of, but minor parts of the PHP did not work. It was those minor parts that Bibledit also needed for it to work. There was also “Draftcode PHP IDE”, an iOS app that includes a web server and PHP interpreter. But it was not able to run Bibledit. It was also thought to use the Safari browser to display Bibledit. But then if the browser would be in the foreground, the Bibledit app with the PHP interpreter would go into the background, and iOS would stop to run it.
The current port of Bibledit for iOS consists of the following parts:
* A native Bibledit iOS app.
* The bibledit kernel written in C++, compiled for iOS.
* The iOS web browser library displaying pages through the bibledit library.
Libraries
=========
The Bibledit library depends on libsqlite3, libz, libc++ Security.framework CFNetwork.framework. The iOS SDK with Xcode includes these libraries. Link against all of these libraries in the project settings, the Build Phases.
In 2024 the app was built with library MbedTLS 3.x but it could not securely connect
to Bibledit Cloud then.
Therefore it was built with MbedTLS 2.x, and then it works well.
Building
========
The following message may occur during build:
Building for 'iOS-simulator', but linking in object file (<name>.o)) built for 'iOS'
To fix this, in tab Build Settings, look for setting "Build Active Architecture Only",
and set it to "Yes" for the Debug build.
Testing
=======
Beta testing iOS apps is made easy: https://developer.apple.com/app-store/testflight
Submission to store
===================
ERROR ITMS-90035: Invalid Signature. Code object is not signed at all. Make sure you have signed your application with a distribution certificate, not an ad hoc certificate or a development certificate. Verify that the code signing setting in Xcode are correct at the target level (which overrides any values at the project level). Additionally, make sure the bundle you are uploading was built using a Release target in Xcode, not a Simulator target. If you are certain your code signing settings are correct, choose "Clean All" in Xcode, delete the "build" directory in the Finder, and rebuild your release target. For more information, please consult https://developer.apple.com/library/ios/documentation/Security/Conceptual/CodeSigningGuide/Introduction/Introduction.html
Possible answers in http://stackoverflow.com/questions/29859996/error-itms-90035
Search for #! through grep -R '#!' * and remove those scripts.
App Transport Security in iOS 9 was disabled in the app .plist file so the webview can fetch http content from non-secure servers, like Bibledit has.
Creating the basic Swift app structure
======================================
* Creat a new iOS app, choose SwiftUI and language Swift.
* Add a new C++ file to the Bibledit folder, including the header file.
* Xcode will ask whether to create a bridging header: Do so.
* Set C++ and Objective-C Interoperability to "C++/Objective-C++".
* Surround the C++ API with "extern "C" {}".
References:
https://medium.com/@canakyildz/c-and-swift-mix-from-obj-c-bridging-layers-to-interoperability-c558238c5b52
https://medium.com/@aniketbaneani/seamlessly-blend-c-with-xcode-a-developers-guide-to-ios-integration-7e83d7f19ab8
https://medium.com/@jakir/webview-in-swiftui-3c1cd8957165
Hints for compiling C and C++ code
==================================
* Set the (user) header search paths to: ${PROJECT_DIR}/Bibledit/kernel
* Set the excluded source file names to: ${PROJECT_DIR}/Bibledit/kernel/utf8proc/utf8proc_data.c
* The Bibledit kernel source is not in git: Get it through the ./refresh.sh script.