当前位置: 移动技术网 > IT编程>移动开发>Android > 从源码编译Android系统的Java类库和JNI动态库的方法

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

2019年07月24日  | 移动技术网IT编程  | 我要评论

mba替考,姚尚坤骗局该结束了,海王祭下载

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

  ├── android.mk
  └── src
   └── com
     └── lhw
       └── framework
         └── led
           └── led.java

led.java文件

package com.lhw.framework.led; 
 
/** 
 * led操作库 
 * @author micky liu 
 */ 
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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网