一线Android 架构师带你高级进阶第二十二期
2016年11月14日--2016年11月28日 分享到:

Android 应用开发发展到今天,已经成为一个非常成熟的技术方向,从目前的形势来看,Android开发相当火热,但是高级Android开发人才却比较少,现在移动互联网的开发者也逐步开始关注插件化技术、性能优化、行业新技术,系统架构等进阶技术。希望通过本次问答活动可以弥补大家Android进阶技术系统化解读的空缺

本期专家问答我们请来了《Android高级进阶》一书作者------ 顾浩鑫 来为大家解答Android开发进阶相关问题。

本期问答内容
Android 基础
Android 系统架构
Gradle 必知必会
React Native For Android
Android性能优化
Android 安全 工具 测试
Android经验总结

作者简介:
顾浩鑫
这里写图片描述
平安金融科技移动研发工程师,目前主要从事Android & React Native相关研发工作,毕业于华中科技大学图像识别与人工智能研究所,曾先后就职于华为、百度、平安科技。

为了营造更好的问答氛围,我们不欢迎一切与主题无关的讨论、灌水。欢迎大家踊跃提问,顾浩鑫老师会为大家解答问题,并在活动结束后抽取3-5提问的用户赠送 《Android高级进阶》一本。
这里写图片描述

《Android高级进阶》 购买:点击

已结束
本期嘉宾 1479174398 580530 顾浩鑫 顾浩鑫,网络ID:ASCE1885,平安金融科技移动研发工程师,目前主要从事Android & React Native相关研发工作,毕业于华中科技大学图像识别与人工智能研究所,曾先后就职于华为、百度、平安科技。
2 u012292131 u012292131 2016.11.26 15:32提问
AndroidM GetMethodID NoSuchMethodError 问题

GetMethodID总是报错NoSuchMethodError,如下:
jni部分代码
void native_jni_call_java_function(JNIEnv *env, jobject obj) {
jclass cls = env->FindClass(CLASS_PATH);
jmethodID mid = env->GetMethodID(cls, "callback", "()V");
if (mid == NULL) {
return;
}
env->CallVoidMethod(obj, mid);
}
android部分代码:
class InstanceMethodCall {
native void jniCallJavaMethod();
private void callback() {
Log.d("abc","call back from jni");
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
InstanceMethodCall instance = new InstanceMethodCall();
instance.jniCallJavaMethod();

}

但是如果我在调用jniCallJavaMethod之前加一行:
instance.callback(),之后再执行instance.jniCallJavaMethod();就正确了。这是为何?
困扰好久了!!!

2 ace1985 ACE1985 2016.11.28 09:45回答

你贴出来的代码和你的描述不一致吧,既然callback是私有的,怎么可以通过instance.callback()来调用?
还有,你的代码有没有被混淆?特别是InstanceMethodCall这个类及其方法。

u012292131
u012292131 对,可能代码没贴对。class InstanceMethodCall是个独立的java文件,callback改为public。这样的话就会出现我上面描述的问题,不知道问题出在哪里了。以前用JNI都没这问题啊。
11 个月之前 回复
u012292131
u012292131 对,可能代码没贴对。class InstanceMethodCall是个独立的java文件,callback改为public。
11 个月之前 回复
2 shenlanyouyu shenlanyouyu 2016.11.24 14:16提问
android工程的目录组织结构

android工程的目录组织结构,每个人或者团队有不同的需求,五花八门的,你比较推荐哪一种项目文件组织方式?谢谢!

2 ace1985 ACE1985 2016.11.27 18:16回答

现在都是用 Android Studio 开发,推荐的开发模式是每个模块一个module的方式,底层基础模块会作为一个公用的module,其他业务模块各自一个module,实现模块化开发,每个模块内部的包名组织就根据功能点来就可以。

2 shenlanyouyu shenlanyouyu 2016.11.24 14:12提问
分享Android进阶提高的经验

做了一段时间APP开发,大家几乎都有同样的问题,感觉APP能做了,用了很多第三方的库似乎简单很多,感觉遇到技术瓶颈了,没法直接感觉到自身的提高。请分享一下Android进阶提高的经验,谢谢!

2 ace1985 ACE1985 2016.11.27 18:11回答

这时候就该往底层走了,除了多看开源库的设计和代码,最好了解android framework层甚至native层的实现原理。

共22条数据 1 3 4 ... 尾页