如何编写Application.mk和Android.mk 参考https://github.com/boltonli/ohbee/tree/master/android 真是个好东西来着
碰到的问题:
1. xlocale.h找不到 加个compile条件
LOCAL_CPPFLAGS := -DLOCALE_NOT_USED
2. 提示-fexceptions, 加上
LOCAL_CPPFLAGS := -fexceptions
3. compile GroupsockHelper.cpp 发生 error:which is of non-class type '__u32'
改写GroupsockHelp.cpp的code segment如下:
Boolean socketJoinGroupSSM(UsageEnvironment& env, int socket,
netAddressBits groupAddress,
netAddressBits sourceFilterAddr) {
if (!IsMulticastAddress(groupAddress)) return True; // ignore this case
struct ip_mreq_source imr;
// imr.imr_multiaddr.s_addr = groupAddress;
// imr.imr_sourceaddr.s_addr = sourceFilterAddr;
// imr.imr_interface.s_addr = ReceivingInterfaceAddr;
imr.imr_multiaddr = groupAddress;
imr.imr_sourceaddr = sourceFilterAddr;
imr.imr_interface = ReceivingInterfaceAddr;
if (setsockopt(socket, IPPROTO_IP, IP_ADD_SOURCE_MEMBERSHIP,
(const char*)&imr, sizeof (struct ip_mreq_source)) < 0) {
socketErr(env, "setsockopt(IP_ADD_SOURCE_MEMBERSHIP) error: ");
return False;
}
return True;
}
Boolean socketLeaveGroupSSM(UsageEnvironment& /*env*/, int socket,
netAddressBits groupAddress,
netAddressBits sourceFilterAddr) {
if (!IsMulticastAddress(groupAddress)) return True; // ignore this case
struct ip_mreq_source imr;
// imr.imr_multiaddr.s_addr = groupAddress;
// imr.imr_sourceaddr.s_addr = sourceFilterAddr;
// imr.imr_interface.s_addr = ReceivingInterfaceAddr;
imr.imr_multiaddr = groupAddress;
imr.imr_sourceaddr = sourceFilterAddr;
imr.imr_interface= ReceivingInterfaceAddr;
if (setsockopt(socket, IPPROTO_IP, IP_DROP_SOURCE_MEMBERSHIP,
(const char*)&imr, sizeof (struct ip_mreq_source)) < 0) {
return False;
}
return True;
}
然后就搞定了。。。 泪流满面的在libs\armeabi中出现了 libmediaServer.so...