導航:首頁 > 操作系統 > android封裝jar包

android封裝jar包

發布時間:2022-07-07 08:50:26

Ⅰ 怎麼讓android生成jar包

將Android打包成jar包供人使用,可利用java的反射技術,獲取相應的id.方便使用者替換自己所需要的。
1.新建Android項目:ActivityLibrary,這就是需要我們打包成jar包的項目:

2.MResource這個類的作用,就是利用J2SE反射技術獲取相應的ID資源。Android SDK也提供了獲取Id資源的方法:getResources().getIdentifier("main_activity", "layout", getPackageName());

看下MResource的代碼:

[java] view plain
package com.example.activitylibrary;

import android.content.Context;

/**
* 根據資源的名字獲取其ID值
* @author howlaa
*/
public class MResource {

//根據名稱獲取ID

Ⅱ 如何製作Jar包並在android中調用jar包

Android中jar包封裝及調用
在android開發過程中,我們經常會有這種需求,自己開發一個類庫jar包,提供給別人調用。 即把項目A封裝成jar包,供項目B調用,而在項目B中調用項目A的activity的時候問題就出現了:找不到資源文件(異常:ERROR/AndroidRuntime(3341):Caused by: android.content.res.Resources$NotFoundException: Stringresource ID #0x7f060007)。問題是,只能共享src文件夾下的代碼,而不能共享res資源文件,夠郁悶!創建一個Androidproject, 用eclipse的export導出,去掉AndroidManifest.xml,res 什麼的,這樣只共享了代碼,而此代碼中所調用的res資源文件卻不能正常使用,否則會拋出res.Resources$NotFoundException異常。那麼如何解決呢?
1.如果只用共享代碼,而共享的代碼中不涉及到res資源文件的調用的話,直接在Eclipse中導出jar包,在所需要的項目中引用即可。
2.如果共享代碼,而且共享的代碼中涉及到res資源文件的調用,網上通用的方法是把res資源文件放到assets文件夾中,再在src代碼中載入處理,然後再用eclipse導出jar包,引用即可(res資源雖然可以打進jar包,但當其他項目調用jar包時jar包中引用ID 指向的是當前項目的資源,關於如何讓jar包中的資源引用只想jar包中的res文件暫無解決方案。我的問題已解決,解決方案:把圖片資源放入assets包中一並打入jar包,布局就只能用代碼了。jar包中代碼可以成功引用jar包內的assets文件。
另:JNI層不可被打包入jar包,只能同jar包一同提供給第三方並放入工程目錄下的libs包中)。
3.如果共享代碼,而且涉及到res資源文件的調用,而且不想把res資源文件放到assets文件夾中的,直接生成jar包會出現的問題:
1).當在別的項目中引用此jar包時,在項目名上出現小紅叉,並且在console控制台上直接自動提示:Errorgenerating final archive: Found plicate file for APK:res/drawable-hdpi/icon.png,通常的解決方法時,在能編譯通過的此項目中直接去掉提示的資源文件,再生成jar包。
2).把公共的icon等資源文件刪除,生成jar包之後,此時在項目中引用,console控制台上無自動報錯現象。如果jar包中的activity調用了res資源文件夾中的文件,在當前項目中調用jar包中的acticity時,問題就出現了,activity所引用的res資源,如果引用的是Strings.xml文件中的值,則拋出異常ERROR/AndroidRuntime(3341):Caused by: android.content.res.Resources$NotFoundException:Stringresource ID#0x7f060007。如果引用的是layout文件夾中的文件,能找到layout中的xml,例如layout中ee.xml,可以找到R.layout.ee,但是在ee.xml中定義的控制項id卻引用不到,拋出異常ERROR/AndroidRuntime(13703):Caused by:java.lang.NullPointerException。如果在當前項目中調用不涉及jar包中的res的調用,一切OK。
4.如果共享代碼,而且共享的代碼中涉及到res資源文件的調用,如果封裝成jar包,這種方法是達不到要求的(調用jar中封裝的activity,還得保證jar包中activity正常調用jar中所封裝的res資源,上面說了,jar包中的res資源部分調用為空),那麼如何能滿足需求呢?把要生成jar包的項目做一下處理,在jar包項目的properties窗口中選擇android的選項卡的isLibaray,點擊apply按鈕或者ok按鈕(此時,jar包項目再點擊右鍵選擇runas → AndroidApplication就能正常運行了)。在要引用jar包的項目中,右擊項目名稱,打開properties框口,選擇android的選項卡的isLibaray右側的Add按鈕,添加jar包項目。這樣jar包項目中的activity就能正常引用到jar包項目中的res資源了。項目調用jar包項目的activity就正常了。

Ⅲ 安卓studio怎麼把aidl打包成jar包

點擊啟動AndroidStudio,啟動後的界面如圖所示。

復制你需要添加的jar,並將其黏貼到app— —src— —main— —libs文件夾下,可運行的AndroidStudio項目都有像這樣的目錄結構。可以看到雖然jar已經復制黏貼過來了,但是還未導入,所以看不到jar中包含的內容。而已導入的jar,則可以看到jar中內容。

右鍵點擊新黏貼的jar,在彈出菜單中點擊Add As Library.

選擇你要導入到的那個mole(在AndroidStudio中相當於Eclipse中的project),如果當前只是一個項目,下拉框中除了app也沒有其他的內容,那麼直接點擊ok確認。

這樣jar就被添加到項目中來了。

Ⅳ android怎麼把一個mole封裝jar包

你打包android處於什麼目的呢? 如果的android項目不包括任何資源引用(layout,image)等,而純粹是個公共類庫。那麼建議直接新建一個java project。該project引用android Library。 如果你的android項目包括資源引用。那麼不建議將其打包成jar。建議將其作為library project。方法很簡單,右擊屬性。選擇android,勾選isLibrary。引用時只需要在屬性中選擇addLibrary即可。

Ⅳ android ui可以打成jar包嗎

(兩年前寫下來的。)JAR文件全稱Java Archive File,意思是Java檔案文件。通常JAR文件是一種壓縮文件,可以用WINRAR,ZIP打開。JAR文件與ZIP文件區別是JAR文件中包含一個META-INF/MANIFEST.MF的清單文件。這個清單文件是生成JAR文件時由系統自動創建的。 JAR文件通俗來講就是把程序的class文件,打成一個壓縮包,方便他人使用,如桌面應用程序中做的一些皮膚,還有後面學習的連接資料庫所需要的驅動,都是以JAR包的形式提供給大家。 在Java中如果是客戶端的程序要直接運行,通常不是.exe文件,而是生成可執行的JAR包。 下面就給大家講講如何打JAR包,如何做一個可執行的JAR包。 一、打JAR包,兩種方法1、使用jar命令cmd--> jar 就會出現幫助和示例。實際上就是把.class文件(JAVA的可執行的二進制文件)打成一個壓縮包。 看示例自己試試吧。 *再要配置環境變數哦 2、在Eclipse中打JAR包 (1). 首先在Eclipse中打開項目,右鍵點擊項目,選擇「Export」; (2.) 選擇Java/JAR file,Next; (3). Select the resources to export中可以選擇你想要包含的項目文件夾,一些不必要的文件夾就無需放進去了,免得增大空間;這里有幾個選項: * Export generated class files and resources 表示只導出生成的.class文件和其他資源文件 * Export all output folders for checked projects 表示導出選中項目的所有文件夾 * Export java source file and resouces 表示導出的jar包中將包含你的源代碼*.java,如果你不想泄漏源代碼,那麼就不要選這項了 * Export refactorings for checked projects 把一些重構的信息文件也包含進去在Select the export destination中選擇導出的jar的路徑,Next (4.) 下一頁可以選擇是否導出那些含有警告warning或者錯誤errors的*.class文件。一般不用理他,Next (5). 下一個頁面里可以對項目做一些配置。 * Generate the manifest file是系統幫我們自動生成MANIFEST.MF文件,如果你的項目沒有引用其他class-path,那可以選擇這一項。 * Use existing mainfest from workspace。這是可以選擇我們自定義的.MF文件,格式如上所寫。 * Seal content。要封裝整個jar或者指定的包packet * Main class。這里可以選擇你的程序入口,將來打包出來的jar就是你這個入口類的執行結果。(這個在下面細講)最後Finish,搞定。 二、可執行的JAR包 創建可執行的JAR包關鍵在於:讓java命令知道JAR包中哪個是主類(有main方法的那個類,開始運行的那個類),javaw命令可以通過該主類來運行程序,這就需要藉助清單文件,需要在清單文件中增加如下一行:Main-Class: accp.ui.Test2 注意這個文件格式要求非常嚴格:Main-Class:<空格>包名.類名<回車> 注意後面必段有一個回車。 MANIFEST.MF文件:l 每行只能定義一個key-value對,每行必須頂格寫。l 每組key-value之間以: (英文冒號後緊跟一個英文空格)。l 文件開頭不能有空行。l 文件必須以一行空行結束。

Ⅵ android如何將res文件夾下的資源打包到jar中

1.打包時,將資源放在asset文件夾內,通過AssetsManager獲取指定資源:
目標應用和jar中的assets文件夾會合並,所以可以通過獲取該應用的此類文件夾來獲取目標資源
2.使用library項目
此類方法不能混淆代碼,也就是說發布時需要提供library源項目.在引用此lib的目標項目中會看到一個包含已經編譯成class.dex的jar文件,這個文件反編譯以後仍然是只有代碼部分。
3.使用雙重library項目
提供一種雙層library項目的方法,可以混淆代碼,但是xml與圖片資源仍然是暴露的,且發布時需要提供二級引用項目,操作上復雜度較高,不如直接提供jar包和資源
4.直接提供jar包和資源(分開)
依然是反射R文件,資源會被暴露給開發者。

Ⅶ 如何使用Android Studio打包混淆的Jar

使用AS打包混淆Jar包,網路一下,一片一片的,但是很多都是零零散散的寫得不是很詳細或是直接拷貝,按照他們的教程測試總不是很順利,所以這里我就把我個人學習AS打包混淆Jar的成果總結出來,希望對大家有幫助。個人覺得寫得還是比較詳細的

使用gradle混淆打包Jar

使用AS開發項目,引入第三方庫是非常方便的,我們只需要在build.gradle中配置一行代碼就可以輕松引入我們需要的開發庫。那麼gradle可以幫我們混淆打包Jar嗎?答案是當然可以!

那麼我們如何打包Jar呢?其實我們在編譯項目的時候,AS已經幫我們在目錄build/intermediates/bundles/release/classes.jar打好了Jar。那麼我們需要做的就是把Jar進行混淆的工作了。這里以個人項目bannerDemo為例,混淆步驟如下:

在你的library的build.gradle文件中加入如下代碼:

task makeJar(type: proguard.gradle.ProGuardTask, dependsOn: "build") {
// 未混淆的jar路徑
injars 'build/intermediates/bundles/release/classes.jar'
// 混淆後的jar輸出路徑
outjars 'build/outputs/cocolove2-banner-1.1.0.jar'
// 混淆協議
configuration 'proguard-rules.pro'}

配置混淆協議

1.我們先把AS自帶的協議配置進來中文注釋,筆者添加

# This is a configuration file for ProGuard.# http://proguard.sourceforge.net/index.html#manual/usage.html## Starting with version 2.2 of the Android plugin for Gradle, these files are no longer used. Newer# versions are distributed with the plugin and unpacked at build time. Files in this directory are# no longer maintained.#表示混淆時不使用大小寫混合類名-dontusemixedcaseclassnames#表示不跳過library中的非public的類-#列印混淆的詳細信息-verbose# Optimization is turned off by default. Dex does not like code run# through the ProGuard optimize and preverify steps (and performs some# of these optimizations on its own).-dontoptimize##表示不進行校驗,這個校驗作用 在java平台上的-dontpreverify# Note that if you want to enable optimization, you cannot just# include optimization flags in your own project configuration file;# instead you will need to point to the# "proguard-android-optimize.txt" file instead of this one from your# project.properties file.-keepattributes *Annotation*
-keep public class com.google.vending.licensing.ILicensingService-keep public class com.android.vending.licensing.ILicensingService# For native methods, see http://proguard.sourceforge.net/manual/examples.html#native-keepclasseswithmembernames class * {
native <methods>;
}# keep setters in Views so that animations can still work.# see http://proguard.sourceforge.net/manual/examples.html#beans-keepclassmembers public class * extends android.view.View {
void set*(***);
*** get*();
}# We want to keep methods in Activity that could be used in the XML attribute onClick-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}# For enumeration classes, see http://proguard.sourceforge.net/manual/examples.html#enumerations-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}

-keepclassmembers class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator CREATOR;
}

-keepclassmembers class **.R$* {
public static <fields>;
}# The support library contains references to newer platform versions.# Don't warn about those in case this app is linking against an older# platform version. We know about them, and they are safe.-dontwarn android.support.**# Understand the @Keep support annotation.-keep class android.support.annotation.Keep-keep @android.support.annotation.Keep class * {*;}-keepclasseswithmembers class * {
@android.support.annotation.Keep <methods>;
}

-keepclasseswithmembers class * {
@android.support.annotation.Keep <fields>;
}

-keepclasseswithmembers class * {
@android.support.annotation.Keep <init>(...);
}

2.AS自帶的配置文檔還是不夠的,我們還需要加入如下配置
這里只展示基本操作,在實際開發中可能需要更多依賴,要根據具體情況引入自己需要的依賴包

#下面代碼中的xx是指我個人的配置路徑,涉及個人信息,這里以xx代替
#引入依賴包rt.jar(jdk路徑)
-libraryjars /xxx/xx/xx/jdk1.8.0_77.jdk/Contents/Home/jre/lib/rt.jar
#引入依賴包android.jar(android SDK路徑)
-libraryjars /xx/xx/xx/Android/sdk/platforms/android-24/android.jar
#如果用到Appcompat包,需要引入
-libraryjars /xxx/xxx/xx/xxx/MyApplication/library-banner/build/intermediates/exploded-aar/com.android.support/appcompat-v7/24.1.1/jars/classes.jar
-libraryjars /xx/xx/xx/xx/MyApplication/library-banner/build/intermediates/exploded-aar/com.android.support/support-v4/24.1.1/jars/classes.jar

#忽略警告
-ignorewarnings
#保證是獨立的jar,沒有任何項目引用,如果不寫就會認為我們所有的代碼是無用的,從而把所有的代碼壓縮掉,導出一個空的jar
-dontshrink
#保護泛型
-keepattributes Signature

3.加入自己不想混淆的配置根據實際需求配置

-keep class com.cocolove2.library_banner.view.**{*;}

在命令行執行命令混淆Jar,提示BUILD SUCCESFUL表示成功!

//mac./gradlew makeJar//windowsgradlew makeJar

示例展示

Ⅷ androidstudio怎麼將寫好的so文件工程打包成jar包

Android Studio的so庫導入和Eclipse的方式有些不同。在Android Studio中,要在工程的src/main下面新建一個jniLibs文件夾,然後將所用到的第三方so庫復制進來,然後找到Project下的build.gradle文件,在其中添加以下幾行代碼:

buildTypes {
release {
minifyEnabled 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"
}

然後重新Gradle一下代碼,第三方so庫就加了進來。

參考http://www.cnblogs.com/devpan/p/5536238.html

Ⅸ Android中如何把一個應用以jar包的形式在另

jar包只能打包class類安卓應用還有其他資源文件,所以不能以jar包的方式打包一個應用。可以用lib或者直接把代碼復制到目標項目中。

Ⅹ android jar包都包含哪些

jar包主要是用於android程序裡面引用的各種組件庫,無法在android系統裡面直接安裝。而apk是將各種jar包,包括自己編寫的程序代碼等等打包成一個安裝文件,可以在android系統里直接安裝

閱讀全文

與android封裝jar包相關的資料

熱點內容
進入組策略的命令 瀏覽:137
python數據結構和內存 瀏覽:25
python軟體功能簡介 瀏覽:784
外國程序員一般多少歲退休 瀏覽:917
怎麼看linux和時間伺服器 瀏覽:680
程序員搞笑花名 瀏覽:501
dota2怎麼設置國服伺服器地址 瀏覽:212
單片機高電平驅動 瀏覽:115
ios多選文件夾 瀏覽:909
加強行車調度命令管理 瀏覽:243
伺服器已禁用什麼意思 瀏覽:150
部隊命令回復 瀏覽:755
神奇寶貝伺服器地圖怎麼設置 瀏覽:382
加密演算法輸出固定長度 瀏覽:862
程序員去重慶還是武漢 瀏覽:121
伺服器如何撤銷網頁登錄限制 瀏覽:980
微信公眾平台php開發視頻教程 瀏覽:628
怎麼看蘋果授權綁定的app 瀏覽:255
壓縮機單級壓縮比 瀏覽:380
linux測試php 瀏覽:971