基本上導入看起來都挺簡單的,分以下幾步
首先,在我們的Module的根目錄中建立libs目錄,將jpush集成SDK中的so文件分別拷入,截圖如下:
然後就是編寫我們的build.gradle文件。
關於so文件引入的配置很簡單,代碼配置如下:
task nativeLibsToJar(type: Zip, description: "create a jar archive of the native libs") {
destinationDir file("$projectDir/libs")
baseName "Native_Libs2"
extension "jar"
from fileTree(dir: "libs", include: "**/*.so")
into "lib"
}
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn(nativeLibsToJar)
}
自定義一個任務,在其中指定項目所依賴的so文件的目錄,這裏用了**/*.so來寫,爲了省事,指定需要拷入的目錄 into "lib",那麼動態運行庫就被拷入到lib目錄中。
完整的build.gradle文件如下:
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.0"
defaultConfig {
applicationId "com.wujay.footerballstar"
minSdkVersion 8
targetSdkVersion 21
versionCode 1
versionName "1.0"
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
task nativeLibsToJar(type: Zip, description: "create a jar archive of the native libs") {
destinationDir file("$projectDir/libs")
baseName "Native_Libs2"
extension "jar"
from fileTree(dir: "libs", include: "**/*.so")
into "lib"
}
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn(nativeLibsToJar)
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.0'
compile files('libs/jpush-sdk-release1.7.2.jar')
compile files('libs/umeng_sdk.jar')
compile files('libs/libammsdk.jar')
}
之後出現了
“undefined reference to `android_log_print”
這類問題的解決方法是1、在源文件中添加如下頭文件:
#include <utils/Log.h>
2、在 Android.mk 文件中包含相關的庫:
- 如果你生成的模塊是一個共享庫(.so),則將相關的庫文件包含入共享庫目錄:
... ...
LOCAL_SHARED_LIBRARIES := liblog libcutils #相關的庫文件,加入共享庫目錄
... ...
include $(BUILD_SHARED_LIBRARY) #注意:生成共享庫 .so 文件
- 如果你生成的模塊不是一個共享庫,比如是可執行文件,則將相關的庫文件包含入靜態庫目錄:
... ...
LOCAL_STATIC_LIBRARIES := liblog libcutils #相關的庫文件,加入靜態庫目錄
... ...
include $(BUILD_EXECUTABLE) #注意:生成可執行文件
3、在源代碼中需要打印 log 的地方執行:
LOGE(logformat); //如:LOGE("my num is: %d", i); 或者LOGD, LOGW,大家應該知道怎麼區別吧