文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

从源码编译Android系统的Java类库和JNI动态库的方法

2022-06-06 08:56

关注

利用源码编译Android系统Java类库
1、编写Java项目和Android.mk文件


  ├── Android.mk
  └── src
   └── com
     └── lhw
       └── framework
         └── led
           └── Led.java

Led.java文件


package com.lhw.framework.led; 
 
public class Led { 
  public boolean turnOn() { 
    return true; 
  }   
  public boolean turnOff() { 
    return true; 
  }   
} 

Android.mk文件


LOCAL_PATH := $(call my-dir) 
LOCAL_SRC_FILES   := $(call all-java-files-under, src) 
LOCAL_MODULE    := framework_led 
LOCAL_MODULE_TAGS  := framework_led 
LOCAL_JAVA_LIBRARIES    := 
LOCAL_STATIC_JAVA_LIBRARIES := 
include $(BUILD_JAVA_LIBRARY) 

2、编译


   mmm /home/administrator/workspace/android_test/framework_led

    编译结果:


   Install: out/target/product/generic/system/framework/framework_led.jar    


利用源码编译Android系统JNI动态库
1、代码和Android.mk编写


├── jni
│  ├── Android.mk
│  └── led.c


led.c


#include <jni.h> 
#include <stdio.h> 
jboolean Java_com_lhw_led_Led_turnOn(JNIEnv *env, jclass thiz) 
{ 
  return JNI_TRUE; 
} 
jboolean Java_com_lhw_led_LED_trunOff(JNIEnv *env, jclass thiz) 
{ 
  return JNI_TRUE; 
} 

注:方法名命名规则为:Java_包名_类名_方法名,可以用javah 命令根据java文件生成所需要的.h头文件。当然更好的办法是通过JNI_OnLoad和AndroidRuntime::registerNativeMethods实现动态注册,这样可以不用理会方法名规则。这里只是做个简单的例子,在后面会用一个例子实现动态注册。

Android.mk


LOCAL_PATH := $(call my-dir) 
LOCAL_SRC_FILES := led.c 
LOCAL_MODULE  := led_jni 
LOCAL_MODULE_TAGS    := led_jni 
LOCAL_PRELINK_MODULE  := false 
LOCAL_SHARED_LIBRARIES := libc 
include $(BUILD_SHARED_LIBRARY) 

2、编译


  mmm /home/administrator/workspace/android_test/jni

    编译结果:


  Install: out/target/product/generic/system/lib/led_jni.so
您可能感兴趣的文章:老生常谈Java动态编译(必看篇)Java中的动态和静态编译实例详解java编程进行动态编译加载代码分享


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯