android 自定义第三方库
来源:互联网 发布:软件无线通信 芯片 编辑:程序博客网 时间:2024/04/30 09:44
1. /framework/base/encrypt 新建文件夹。
encrypt 目录结构:
|--java
|--android
--encrypt
--Encryption.java
|--encryptlib.xml
|--Android.mk
|--jni
|--android_encrypt_Encryption.cpp
--EncryptManager.cpp
|--Android.mk
Encryption.java:
package android.encrypt;public class Encryption { static { System.loadLibrary("encrypt_jni"); } static native boolean verifyPasswordNative(char[] src, char[] des); public static boolean verifyPassword(char[] src, char[] des) { return verifyPasswordNative(src, des); }}
encryptlib.xml:
<?xml version="1.0" encoding="UTF-8"?><permissions><library name="android.encrypt"file="/system/framework/encrypt.jar" /></permissions>
Android.MK:
LOCAL_PATH:= $(call my-dir)#MAKE_JARinclude $(CLEAR_VARS)LOCAL_SRC_FILES := $(call all-subdir-java-files)LOCAL_MODULE := encryptinclude $(BUILD_JAVA_LIBRARY)#MAKE_XMLinclude $(CLEAR_VARS)LOCAL_MODULE := encryptlib.xmlLOCAL_MODULE_CLASS := ETCLOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/permissionsLOCAL_SRC_FILES := $(LOCAL_MODULE)include $(BUILD_PREBUILT)
------------------------------------------------------------------------------------------------------------------
android_encrypt_Encryption.cpp:
/* * Copyright 2008, The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */#define LOG_TAG "Encryption"#include "utils/Log.h"#include <assert.h>#include "jni.h"#include "JNIHelp.h"#include <encrypt/EncryptManager.h>#include "android_runtime/AndroidRuntime.h"using namespace android;static jbooleanverify_Password(JNIEnv *env, jclass clazz, jcharArray src, jcharArray des){EncryptManager& encrypt(EncryptManager::getInstance());jchar* srcValues = env->GetCharArrayElements(src, NULL);jchar* desValues = env->GetCharArrayElements(des, NULL);return encrypt.verify_Password(srcValues, desValues);}static JNINativeMethod gMethods[] = { {"verifyPasswordNative", "([C[C)Z", (void*)verify_Password },};//}; // namespace androidint register_android_encrypt_Encryption(JNIEnv *env){ return AndroidRuntime::registerNativeMethods(env, "android/encrypt/Encryption", gMethods, NELEM(gMethods));}jint JNI_OnLoad(JavaVM* vm, void* reserved){ JNIEnv* env = NULL; jint result = -1; if (vm->GetEnv((void**) &env, JNI_VERSION_1_4) != JNI_OK) { LOGE("ERROR: GetEnv failed\n"); goto bail; } assert(env != NULL); if (register_android_encrypt_Encryption(env) < 0) { LOGE("ERROR: Encryption native registration failed\n"); goto bail; } /* success -- return valid version number */ result = JNI_VERSION_1_4;bail: return result;}
EncryptManager.cpp:(EncryptManager.h 放在/framework/include/encrypt)
/* * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */#define LOG_TAG "Sensors"#include <stdint.h>#include <sys/types.h>#include <utils/Errors.h>#include "utils/Log.h"#include <utils/RefBase.h>#include <utils/Singleton.h>#include <encrypt/EncryptManager.h>// ----------------------------------------------------------------------------namespace android {// ----------------------------------------------------------------------------ANDROID_SINGLETON_STATIC_INSTANCE(EncryptManager);EncryptManager::EncryptManager() {}EncryptManager::~EncryptManager() {}bool EncryptManager::verify_Password(const void* src, const void* des){return true;}// ----------------------------------------------------------------------------}; // namespace android
Android.mk:
LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_SRC_FILES:= \android_encrypt_Encryption.cpp \EncryptManager.cppLOCAL_SHARED_LIBRARIES := \libandroid_runtime \libcutils \libutils \libbinder \LOCAL_MODULE:= libencrypt_jniLOCAL_PRELINK_MODULE := falseLOCAL_MODULE_TAGS := optionalifeq ($(TARGET_SIMULATOR),true) LOCAL_LDLIBS += -lpthreadendifinclude $(BUILD_SHARED_LIBRARY)
编译后,最总会生成:
/system/etc/permissions/encryptlib.xml
/system/framework/encrypt.jar
/system/lib/libencrypt_jni.so
andriod 源码应用时,要在/build/core/pathmap.mk 添加新建的文件路径 /encrypt
FRAMEWORKS_BASE_SUBDIRS := \
$(addsuffix /java, \
core \
graphics \
location \
media \
opengl \
sax \
telephony \
wifi \
vpn \
keystore \
voip \
encrypt \
)
android 应用程序应用时,在AndroidManifest.xml中添加
<uses-library android:name="android.encrypt" />
指向对应的jar包
- android 自定义第三方库
- 第三方ZXing库zxing-android-embedded使用及自定义
- Android 第三方库
- android第三方库
- Android第三方库
- Android第三方库
- Android第三方库
- android第三方库list
- android移植第三方库
- Android 增加第三方库
- android 集成第三方库
- android调用第三方库
- android 引用第三方库
- android 加载第三方库
- Android开发 第三方库
- android调用第三方库
- android第三方库收藏
- android依赖第三方库
- 分布式计算(一)
- jsp中访问WEB-INF目录下的文件
- Erase-remove惯用法
- 如何查询MySql日志
- VS2008调试dump文件
- android 自定义第三方库
- Android task和back stack详解二:管理任务
- java开发常用的一些jar
- 为什么你总成为不了架构师?
- 常用的排序方式
- MongoDB与Jackson JSON结合实现接口敏捷开发
- windows下bochs调试环境的创建
- ZOJ Problem Set - 1008 Gnome Tetravex (TLE)
- 在32位系统下使用MongoDB的一点心得