zxingandroid
⑴ android項目中加入zxing,混淆打包出錯,求解決
寫在視圖xml中的onClick響應出錯. 因為寫在xml中的onClick是通過反射調用的, proguard認為它們沒有在代碼中被調用過, 所以將它們從代碼中除掉或改名了. 解決方法:
在proguard.cfg中添加以下代碼, 就可以防止被配在視圖xml中的onClick方法被proguard優化掉
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}123123
jni反調java方法
這些類或方法同樣可能會被proguard認為沒有調用過而被除掉, 或都被改名. 這些方法最好統一寫在一個類中, 然後這個類不作優化, 或是找出所有jni調用過的類與方法, 在proguard.cfg中配置, 不對它們作優化
其它反射調用的java類與方法
使用反射時一定要注意proguard可能會認為那些方法未被調用過, 會在代碼優化過程中將它們改名或除去. 在使用反射的地方一定要在proguard.cfg中配置, 不優化反射調用過的類和方法
最後在proguard優化過後會產生一些文件
mp.txt – 描述.apk文件中所有類文件間的內部結構
mapping.txt – 列出了原始的類,方法和欄位名與混淆後代碼間的映射。這個文件很重要,當你從release版本中收到一個bug報告時,可以用它來翻譯被混淆的代碼。
seeds.txt – 列出了未被混淆的類和成員
usage.txt – 列出了從.apk中刪除的代碼
要注意分析mapping.txt與usage.txt看xml視圖中寫的onClick響應函數, jni調用到的java類與方法, 反射調用過的類與方法是否被混淆或重命名
-keep class com.badlogic.gdx.backends.Android.**{ *;}
的只是不混淆:這個包下的類(不包括子包里的東西),用到一個第三文的類就要把這個類所在的包,像上面加上
還要注意的是android-support-v4.jar這個包問題,這里加上了對這個jar包的處理
第三方jar的混淆,
-optimizationpasses 5
-dontusemixedcaseclassnames
-
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-keep public class * extends android.app.Activity // 繼承activity,application,service,broadcastReceiver,contentprovider....不進行混淆
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.
-libraryjars /libs/android-support-v4.jar
-libraryjars /libs/gdx-backend-android.jar
-libraryjars /libs/gdx.jar123123
// 這里不對第三方的jar包的提出WARN
-dontwarn com.badlogic.**
-dontwarn android.support`這里寫代碼片`.v4.**
-dontwarn android.support.v4.view.**12341234
// 這里對第三方jar包的類不進行混淆
-keep class com.badlogic.gdx.backends.android.**{ *;}
-keep class com.badlogic.gdx.**{ *;}
-keep class com.badlogic.gdx.graphics.g2d.**{ *;}
-keep class com.badlogic.gdx.graphics.**{ *;}
-keep class android.support.v4.view.**{ *;}123456123456
// 這里第三方JAR包處理結束
-keepclasseswithmembernames class * { // natvie 方法不混淆
native ;
} 12341234
-keepclasseswithmembers class * {
// 對於所有類,有這個構造函數不進行混淆,主要是為了在layout中的,自定義的view
public (android.content.Context, android.util.AttributeSet);
} 12341234
-keepclasseswithmembers class * {
public (android.content.Context, android.util.AttributeSet, int);
} 123123
-keepclassmembers class * extends android.app.Activity {
// 這個主要是在layout 中寫的onclick方法android:onclick="onClick",不進行混淆
public void *(android.view.View);
} 12341234
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
} 12341234
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
⑵ android zxing 啟動攝像頭
可能你在拍照完成以後忘記釋放 Camera 了,調用camera.release()函數,釋放camera引用,以便其他應用使用,就像你打開手電筒後必須關閉手電筒才能打開相機一樣。
⑶ 如何在android studio 中引入zxing
在android studio 中引入zxing方法如下:
1、下載源代碼,導航欄,選擇Downloads。
2、導入項目。解壓下載的.zip文件,打開Eclipse,菜單欄,選擇file -> new -> project...
在彈出的New Project對話框中,選擇Android -> Android Project from Existing Code,點擊Next Root Directory文本框,點擊Browse按鈕,選擇zxing/android文件夾,點擊Finish即可。
⑷ 如何在android studio 中引入zxing
1、在Android Studio中打開項目A,將android文件夾拷貝到項目A目錄下,重命名為ZXing,依次點擊File->Project Structure->Project Setting->Moles ,點擊+添加mole,選擇Import Mole,選中目錄下的ZXing文件夾,點擊添加:
2、然後繼續在Moles設置中將主Mole的Dependencies中加入ZXing,加入完成就可以引用zxing裡面的類直接生成二維碼了。
⑸ 如何在android studio 中引入zxing
方法一:Android studio引入了grandle,導入第三方庫需要在裡面配置。將zxing解壓後把Httpzoid目錄到你項目的目錄下,添加後android studio的項目下會自動出現這個目錄,然後進行grandle配置,具體可以去網路搜一下很多。
方法二:導入zxing庫的jar包:在libs文件夾和添加的*.jar文件下滑鼠單擊菜單 add as library
打開App目錄下有個build.gradle文件應該項目結構文件,上述的動作只是為了在在文件下添加。其實Android studio本身自帶
的庫挺多,選擇項目單擊Open Mole Settings,在Dependencies中,點擊右邊綠色加號,搜索zxing選擇添加文件
dependencies {
compile files('libs/android-support-v13.jar')
compile files('libs/zxing.jar')}
方法三,猥瑣點,把工程復制黏貼到自己的項目工程,把工程包名改,哈哈
⑹ 在android中使用googlezxing實現二維碼
先打開本地下載,復制文件,拷貝到他們的項目中即可。
首先我們打開google的zxing的地址,googledezxing地址(本地下載),打開之後我們會看到界面,將這個文件下載我們本地,下載好之後我們需要復制android文件下的幾個類,根據這些類名稱在android文件下找到這些類,拷貝到他們的項目中,拷貝之後會有報錯,我們需要將android文件下的res中的文件也拷貝到我們的項目中。完成之後我們還要依賴zxing的核心類庫,當我們的項目不報錯的時候,就可以先實現掃描二維碼和生成二維碼。
⑺ android zxing需要哪些許可權
在導入zxing的android源碼之前,先去官方下載zxing的源碼:http://code.google.com/p/zxing/downloads/list。
我這里下載的是1.6版本的,我試驗了幾個版本,發現2.0以後的版本實際用起來沒有1.6和1.7版本的好用,最後選擇了1.6版本。
zxing 1.6源碼結構如下:
⑻ 請教一下Android Studio中ZXING的用法
因為這個zxing的庫是屬於library,如果你復制到項目中以後,會有緩存問題
你可以先clean一下項目,將緩存文件清除
建議使用Android Studio做開發工具,Android studio是基於Intellij IDEA專門為安卓開發的IDE,自從android Studio 1.0正式版發布以後google已經正式使用android Studio了,目前版本是 1.3.2 正式版
⑼ android怎麼zxing 二維碼掃描
第一部分:Zxing的集成
步驟一:下載所需要的Zxing精簡版,在Github上搜索Zxing,看到這條記錄
進入並下載其jar包:
步驟二:復制到項目中,解壓下載的包到ZXingProj/src/com/dtr目錄下,復制這個zxing文件夾到項目中,這個時候你會看到有幾個紅線錯誤
接著一個個來修改這些紅色錯誤,主要錯誤包括:導入的R包不是本項目的,存在R.raw和R.id和R.layout的資源找不到。首先把該放進去的資源先放進去,復制libs中的zxing.jar包到項目中,記得右鍵AddAsLibrary
復制下載的res的layout文件、res的values的ids文件、raw文件、res的drawable-xhdpi文件到項目的對應位置
打開ResultActivity文件:
[java] view plain
public class ResultActivity extends Activity {
private ImageView mResultImage;
private TextView mResultText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_result);
Bundle extras = getIntent().getExtras();
mResultImage = (ImageView) findViewById(R.id.result_image);
mResultText = (TextView) findViewById(R.id.result_text);
if (null != extras) {
int width = extras.getInt("width");
int height = extras.getInt("height");
LayoutParams lps = new LayoutParams(width, height);
lps.topMargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 30, getResources().getDisplayMetrics());
lps.leftMargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 20, getResources().getDisplayMetrics());
lps.rightMargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 20, getResources().getDisplayMetrics());
mResultImage.setLayoutParams(lps);
String result = extras.getString("result");
mResultText.setText(result);
Bitmap barcode = null;
byte[] compressedBitmap = extras.getByteArray(DecodeThread.BARCODE_BITMAP);
if (compressedBitmap != null) {
barcode = BitmapFactory.decodeByteArray(compressedBitmap, 0, compressedBitmap.length, null);
// Mutable :
barcode = barcode.(Bitmap.Config.RGB_565, true);
}
mResultImage.setImageBitmap(barcode);
}
}
}
⑽ android 的zxing如何返回類型
首先你調用Zxing用的是這樣的代碼對吧
Intentintent=newIntent(你的Activity.this,CaptureActivity.class);
startActivityForResult(intent,請求碼);
如果是的話,就在Zxing的代碼中找到CaptureActivity這個類的handleDecode(Result obj, Bitmap barcode)方法,然後在後面加上
Intentresult=newIntent(CaptureActivity.this,你的Activity.class);
result.putExtra("result",obj.getText());
setResult(RESULT_OK,result);
finish();
(obj.getText()就是掃描結果,這里沒做失敗判斷,你可以自己加上)
然後在你的Activity中重寫onActivityResult(int requestCode, int resultCode, Intent data)方法
if(requestCode==請求碼&&resultCode==RESULT_OK){
Stringresult=data.getStringExtra("result");
//處理
}
這里的result就是解析結果,之後要怎麼處理就看你需要了