1. To run on ios, compile jxcore
$ mkdir ~/jxcore
$ cd ~/jxcore
$ git clone https://github.com/jxcore/jxcore.git
$ cd ~/jxcore/jxcore
$ ./build_scripts/ios-compile.sh
If there is a problem with import which module not found, then install python which
through the following statement
sudo easy_install tools/which-1.1.0-py2.7.egg
If other problems occur, you can refer to the prerequisites for compiling ios with jxcore and take corresponding measures.
https://github.com/jxcore/jxcore/blob/master/doc/HOW_TO_COMPILE.md
* GCC 4.2 or newer (for SpiderMonkey builds 4.7 )
* Python 2.6 or 2.7
* GNU Make 3.81 or newer
* libexecinfo (FreeBSD and OpenBSD only)
* for SpiderMonkey: 'which' python module (sudo easy_install tools/which-1.1.0-py2.7.egg)
2. Install jxcore on mac
$ ./configure
$ sudo make install
3. Create the cordova program. If cordova is not installed, you can install it yourself.
$ cordova create hello com.example.hello HelloWorld
$ cd hello
4. Download and install the jxcore-cordova plug-in
$ git clone https://github.com/jxcore/jxcore-cordova
Using jxcore-cordova’s template index.html
$ cp ./jxcore-cordova/sample/www/index.html ./www/
Copy the jxcore package compiled for running on ios in the first step
$ cp -r ~/jxcore/jxcore/out_ios/ios/bin jxcore-cordova/io.jxcore.node/
5. Add cordova’s ios platform
$ cordova platforms add ios
$ cordova plugin add jxcore-cordova/io.jxcore.node/
$ cordova build
$ cordova run ios
If the build error occurs, "C does not support default arguments"
Just removing the default value will usually solve the problem.
will
JXCORE_EXTERN(void)
JX_SetString(JXValue *value, const char *val, const int32_t length = 0);
Modify to
JXCORE_EXTERN(void)
JX_SetString(JXValue *value, const char *val, const int32_t length);
Just rebuild
6. You should be able to see the cordova running interface at this time.
7. Add nodejs server in Resources/jxcore_app/app.js
Add the following code at the end of app.js
function getIP() {
var os = require('os');
var nets = os.networkInterfaces();
console.log(nets);
for ( var a in nets) {
var ifaces = nets[a];
for (var o in ifaces) {
If (ifaces[o].family == "IPv4" && !ifaces[o].internal) { return ifaces[o].address; }
return null;
}
var ip = getIP();
if (!ip) {
console.error("You should connect to a network!");
Return;
}
var http = require('http');
http.createServer(function(req, res) {
res.writeHead(200, {
‘Content-Type’: ‘text/plain’
});
var cur_client = "";
If(req.connection && req.connection.remoteAddress) {
console.log(req.connection.remoteAddress);
cur_client = req.connection.remoteAddress;
} else if(req.headers) {
console.log("request header X-Forwarded-For");
console.log(req.headers['X-Forwarded-For']);
cur_client = req.headers['X-Forwarded-For'];
cordova('log').call('client( ' cur_client ' ) come');
res.end('Hello ' cur_client ', I am server on iphone app(' ip '). ' Date.now() 'n');
}).listen(1337, ip);
console.log('Server running at http://' ip ':1337/');
Run the program, you can see the iPhone's IP in the xcode log information, and then you can browse the web through the web page.