2016-12-03 10:32
支持
2016-08-22 17:37

引用来自“rieon”的评论

都没用面向对象,require来include去,水平可见一斑

引用来自“eechen”的评论

你说对了,我就是反框架反完全面向对象的PHPer.
不爽? You Can You Up, No Can No BB.
你都自称PHPer,这大概是PHP被黑的最惨的一次(´•༝•`)
2016-08-21 21:54

引用来自“rieon”的评论

都没用面向对象,require来include去,水平可见一斑
你说对了,我就是反框架反完全面向对象的PHPer.
不爽? You Can You Up, No Can No BB.
2016-08-18 04:02
都没用面向对象,require来include去,水平可见一斑
2016-08-12 13:29
cross_compile_php.txt
https://pan.baidu.com/s/1dEEnBtJ
@Vancent 这是我使用musl-cross-compilers交叉编译Android版PHP7的详细笔记,你可以下载下来看一下.静态编译PHP的关键点就在configure里加参数--enable-static和修改Makefile:
sed -i "s{-export-dynamic{-all-static{" Makefile
2016-08-12 11:25

引用来自“Vancent”的评论

大神可以请教一下php静态链接执行文件的编译过程吗?自己编的都是动态链接库...
我参考的是这一篇:
https://github.com/DroidPHP/DroidPHP/blob/master/docs/Compiling.md
2016-07-12 19:22
@小白变老白 其实DNS域名解析这个问题不仅仅跟curl有关,还跟PHP内一切涉及到DNS解析的操作有关,比如file_get_contents和gethostname等等,你都必须保证你的这些操作直接或间接在网站根目录下的PHP文件里执行,因为我把resolve.conf放在了网站根目录下面,PHP默认就是加载当前执行的PHP脚本的目录下的resolv.conf来进行DNS解析.
2016-07-12 12:48
@小白变老白 curl需要读取当前目录的resolv.conf进行DNS.
而resolv.conf我放在了网站根目录下,所以你的脚本里运行curl的部分也应该放在网站根目录下,可以是直接的也可以是间接的,比如:
/resolv.conf
nameserver 180.76.76.76

/index.php
require __DIR__.'/include/common.php';
foo();

/include/common.php
require __DIR__.'/functions.php';

/include/functions.php
function foo() {
  require __DIR__.'/../view/index.php';
}

/view/index.php
header('Content-Type: text/plain; charset=GBK');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=15850781443");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
exit();

访问 /index.php 正常
访问 /view/index.php 返回 false
2016-07-08 21:01
@小白变老白 我把PHPDroid的网站根目录调整到SD卡主要为了方便大家修改体验,真实应用肯定要把网站根目录放在应用下的,start.sh里有说明,指定下参数就好.还有,开发时其实并不需要在手机上运行PHP代码,无论你在Linux还是Windows还是Mac,启动PHP内置HTTP服务器就可以自由在你的桌面上编程了,各种都搞得差不多了,在把代码放到应用的SD卡目录里进行测试.

还有就是你要打包自己的应用,则需要自己下载Android Studio和Android SDK,新建自己的项目,然后把我在phpdroid_20160703.7z里提供的代码和assets放到你的项目里面,然后打包发布自己的应用就好了.
2016-07-08 19:40

引用来自“小白变老白”的评论

怎么在window下PC端来测试APP呢 楼主的方法没看懂啊

引用来自“eechen”的评论

你安装5.8MB的PHPDroid的APK后,用USB线连接手机跟电脑,然后就可以在电脑里的文件管理器查看手机SD卡内容,SD卡下的phpdroid目录就是网站的根目录,你把你的PHP脚本放到这个目录里,然后在手机启动应用就能看到你写的效果了.

引用来自“小白变老白”的评论

哦哦 我以为直接在浏览器里面看呢...前面不是说用浏览器的移动模式输入IP地址加端口访问么
如果你要在电脑上输入Android手机无线局域网IP访问PHPDroid也是可以的,因为Android是没有防火墙的说法,只需要把start.sh里启动PHP时指定的地址127.0.0.2改为0.0.0.0即可通过电脑访问.不过我打包的应用只监听本地127.0.0.2上的端口,所以局域网其他设备是无法访问的,而且我在PHP启动路由auth.php里增加了随机的UserAgent校验(ua.php),就算手机上的其他浏览器也是无法访问的,简言之,只有应用打开的WebView设置随机生成的UserAgent后才能访问PHPDroid里的资源.
2016-07-08 13:10
查看评论按钮在右上角是什么逻辑?
2016-07-07 21:04
Android 4.4之前,WebView底层实现不是Chromium,所以性能很一般.
这时如果还用AngularJS这类复杂的前端框架,体验就更不好了. 我推荐使用jQuery 2 (84KB) + jQuery Mobile Touch Events (8KB). jQuery Mobile 也是一个挺重的框架,这里只用它提供的触摸事件就够了,其他自己实现. 又因为 jQuery Mobile 1.4.5 还不支持 jQuery 3,所以可以配合 jQuery 2 使用. jQuery 1和2和3这几个大版本,它们的API基本都是相同的,主要区别在于1支持IE6/7/8, 而Android上并不需要考虑IE的兼容.

jQuery Mobile官方提供了一个Alpha版本的Download Builder
可以用来定制自己用到的功能,比如触摸事件(Touch Events):
访问 jQuery Mobile 官网,找到 Download Builder 页面,
勾选 Events 下的 Touch 然后点击页面下方的 Build My Download 下载.

有人可能会说,为什么不用Zepto?
zepto.min.js是25KB,jquery-2.2.4.min.js是84KB,体积上看的确Zepto更小.但更小并不意味着执行效率更高,有人测试过,jQuery2效率要比Zepto高不少.而且就算不谈效率,用jQuery2也能保证功能性和使用各种jQuery插件.jQuery2是官方对jQuery的重构,抛弃IE6/7/8的历史包袱,更加高效,并且jQuery2兼容jQuery1插件(比如幻灯片插件flexslider),适合应用于没有IE困扰的移动浏览器.
2016-07-06 21:11

引用来自“无糖咖啡”的评论

PHPDroid开发出来的应用,取数据还是通过接口了?
看你要取什么数据了.
举例来说,你的应用需要把一张图片上传到服务器:
因为WebView对上传支持不好,这时你可以直接用PHP读SD卡,
然后在WebView里列出图片的文件名,供用户选择,
然后再通过PHP的curl库函数把图片作为附件通过HTTP或HTTPS传输到远程服务器.
Linux系统一切皆文件,所以PHP还能通过读取系统文件才获取系统信息.

对于那些只能通过Java访问的Android API才能实现的功能,可以通过webview.addJavascriptInterface注入Java写好的功能到WebView给JS调用,JS可以把信息交给PHP处理,PHP可以用SQLite存储起来.
2016-07-06 17:16
Nice
2016-07-04 20:13

引用来自“空空乳业”的评论

eechen是个厉害的javaer。话说这个框架怎么从javascript调用java的,求大神写个开发手册。

引用来自“拉风的道长”的评论

phonegap的分析系列。应该差不多:http://my.oschina.net/lifj/blog/346770
PHPDroid这个比PhoneGap简单很多吧.
我基本啥事都没干,就是start.sh启动PHP内置的HTTP服务器,然后Java那边开一个WebView访问这个PHP服务器.
开发出来的应用其实就有点像我们本地开发网站时用phpMyAdmin管理MySQL数据库那样.
2016-07-04 19:40

引用来自“兆前”的评论

大神 苹果什么时候支持 还有ide什么时候跟上
不是大神,这个打包也不难,网上搜个教程找个交叉编译工具链构建出Linux ARM版PHP解释器即可,都是些按部就班的操作,虽然有些琐碎和小问题,但都可以通过搜索解决.

PHPDroid本质还是PHP编程,所以一不需要什么特殊的IDE辅助.

另外,PHPDroid名字就预示着这个是Android上的PHP打包.
还是期待那些使用Mac和iPhone的PHP开发者构建iOS版PHP吧.
不过我猜就算构建出iOS版PHP(--host=arm-apple-darwin10),可能iOS的运行机制也会阻止应用后台启动一个PHP常驻服务进程吧.比如Kodiak PHP就是一个iOS上的PHP,但其需要越狱(JailBroken)后才能在命令行下执行PHP.而Android上的PHP在完全没有这个限制,因为Android,本质还是ARM架构的Linux.
2016-07-04 15:50
这货还真敢发,技术成熟了吗
2016-07-04 14:08

引用来自“falconchen”的评论

抄袭还删掉别人的评论,心虚了
抄袭?照着编译教程打个包那么简单的东西只有你这种只会用瘟斗士的不要碧莲的货才会去抄袭吧,哈哈!
还不赶紧去看我博文学习:
64位Ubuntu 14.04上使用musleabi最小化交叉编译Android版PHP7
http://my.oschina.net/eechen/blog/679342
PHPDroid: 基于WebView和PHP内置HTTP服务器开发Android应用
http://my.oschina.net/eechen/blog/655689
PHP开发Linux桌面应用和Android应用思路
http://my.oschina.net/eechen/blog/501341
解压即用,跨Linux发行版PHP7打包
http://my.oschina.net/eechen/blog/411534
解压即用,Ubuntu上Nginx/Apache/PHP编译打包
http://my.oschina.net/eechen/blog/298027
2016-07-04 12:30

引用来自“Liuxd”的评论

这个世界需要一些新鲜有趣的东西。感谢 @eechen
如果PHP官方也像Node那样提供Linux ARM版本二进制包的话,就不需要我自己找教程交叉编译打包了.

其实国人爱特很早就打包了Android上的PHP,项目名叫Anmpp,包含PHP+MySQL+PostgreSQL+Nginx等组件,只不过Anmpp的定位是把Android手机打造成一台家用LAMP服务器,Anmpp因为需要监听80端口,所以需要root权限.而我打包的PHPDroid则是用于App开发,不需要用80端口,而且我也只打包了PHP,这样APK(不到6MB)就小得多了,而且也不需要root权限.
2016-07-04 11:35

引用来自“554330833a”的评论

能讲一下这个东西的思路是怎么样的吗
工作方式简言之就是:WebView访问PHP内置的HTTP服务器.
你看一下启动脚本start.sh和路由auth.php基本就懂PHPDroid的工作方式了.

PHP解释器从5.4开始就内置了一个可编程的单进程HTTP服务器:
http://php.net/manual/zh/features.commandline.webserver.php
PHP CLI HTTP Server启动时可以传一个PHP脚本充当路由.
php -c php.ini -S 127.0.0.2:8181 -t /www auth.php
每一个请求的资源(包括静态资源)都要经过auth.php处理.
@_君剑 auth.php通过识别UserAgent来判断是否允许访问.
UserAgent是启动时随机生成在应用目录里,WebView访问时读取并设置,
这样,只有应用的WebView才能访问PHP服务,系统其他应用比如浏览器访问则返回Forbidden.
至于端口,也不是固定的,PHP启动前会用fsockopen自动找到可用的端口.
另外就是我把libc库的DNS配置resolv.conf和hosts都使用了相对目录(当前目录),并且我把文件放到了网站根目录.
2016-07-04 10:14

引用来自“独立风华”的评论

如果 java 能像 C/C++ 那样,不属于任何一家公司,那也挺好
如果真的这样,就没有人推广了!然后,就变得像c/c++一样了
2016-07-04 09:56
大神 苹果什么时候支持 还有ide什么时候跟上
2016-07-04 09:32

引用来自“空空乳业”的评论

eechen是个厉害的javaer。话说这个框架怎么从javascript调用java的,求大神写个开发手册。
PHPDroid不是框架,而是一个打包,像开发网站一样开发APP就对了,只不过这个网站是在本地,不需要联网也能访问.
网站的根目录位于:
/data/data/net.php.phpdroid/php/www
开发时可以把根目录放到SD卡的phpdroid文件里.

android.webkit.JavascriptInterface是Android自带的东西,下面是JS调用Java写的功能示例:
Java代码:
webview.addJavascriptInterface(new Object() {
  @JavascriptInterface
  public String getprop(String prop) {
    return java.lang.System.getProperties().getProperty(prop);;
  }
}, "android");
WebView里的HTML代码:
<a href="javascript:void(0)" onclick="alert(android.getprop('os.name'))">net.dns1</a>
2016-07-04 08:25
看到标题就进来了,感觉评论一定会很有意思。
回复 @
{{emojiItem.symbol}}
返回顶部
顶部