Android高效进阶:从数据到AI【3.5】

2.编写测试用例 App

为了方便,直接使用之前编写 Xposed 和 Cydia Substrate 的测试模块来做 Demo,主要目的是测试 Hook Java 代码和 Native 代码

MainActivity.java 的主要功能是启动一个线程,定时打印调用一个 Java 方法和一个 Native方法。

代码如下:

1. package test.xposedmoduletest;
2.
3. import android.app.Activity;
4. import android.media.AudioRecord;
5. import android.os.Bundle;
6. import android.util.Log;
7.
8.
9. public class MainActivity extends Activity {
10. private static final String TAG = "MainActivity";
11. @Override
12. protected void onCreate(Bundle savedInstanceState) {
13. super.onCreate(savedInstanceState);
14. new Thread(new Runnable() {
15. @Override
16. public void run() {
17. while (true){
18. test();
19. try {
20. Thread.sleep(5000);
21. } catch (InterruptedException e) {
22. e.printStackTrace();
23. }
24. }
25. }
26. }).start();
27. }
28. private void test(){
29. Log.e(TAG, "testJavaFunc: "+testJavaFunc(100));
30. Log.e(TAG, "getIntValueNative: "+getIntValueNative(100) );
31. }
32.
33. private int testJavaFunc(int i) {
34. return i * i;
35. }
36.
37. public static native int getIntValueNative(int i);
38. static {
39. System.loadLibrary("nativeHook");
40. }
41. }

Native 层主要为类 MainActivity 动态注册一个 Native 方法 int getIntValueNative(int i);。主要代码如下:

1. jint getIntValue(JNIEnv *env, jobject obj,int i) {
2. return i * i;
3. }
4.
5. #define NELEM(x) ((int) (sizeof(x) / sizeof((x)[0])))
6. JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *reserved) {
7. JNIEnv *env;
8. jint result = -1;
9. JNINativeMethod methods[] =
10. {
11. {"getIntValueNative","(I)I",(void *) getIntValue},
12. };
13. jclass 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BinaryStarXin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值