我正在使用android studio来构建调试和发布应用程序.当我构建调试/发布应用程序时
./gradlew assembleDebug
./gradlew assembleRelease
Run Code Online (Sandbox Code Playgroud)
这两个版本都是完美创建并运行的.显示调试或发布的相应对话框
现在我在build.gradle中添加了proguard详细信息:
signingConfigs {
myConfig {
storeFile file("keystore.jks")
storePassword "abc123!"
keyAlias "androidreleasekey"
keyPassword "pqrs123!"
}
}
buildTypes {
release {
runProguard true
proguardFile getDefaultProguardFile('proguard-android-optimize.txt')
signingConfig signingConfigs.myConfig
}
}
productFlavors {
defaultFlavor {
proguardFile 'proguard-rules.txt'
}
}
Run Code Online (Sandbox Code Playgroud)
现在它在事件日志中显示错误为
警告:有7个未解析的类或接口引用.您可能需要添加缺少的库jar或更新其版本.如果您的代码在没有缺少类的情况下正常工作,则可以使用"-dontwarn"选项来禁止警告.(http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedclass)
警告:程序类成员有2个未解析的引用.您的输入类似乎不一致.您可能需要重新编译代码.
(http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedprogramclassmember):Flash销售:proguardDefaultFlavorRelease FAILED
如果我将runProguard选项设置为false然后运行它.
我有这些问题:
1)用runProguard = false发布apk是否可以?
2)如何在创建发布版本时使用dontwarn?
我在做socket编程.我从以下链接参考:
http://examples.javacodegeeks.com/android/core/socket-core/android-socket-example/
以下是我的问题的详细信息.我为这个ServerThread(我的项目要求)创建了Android lib,这在测试应用程序中使用.
现在测试应用程序通过lib连接到此并执行此过程.第一次它完全正常,但如果我关闭并重新打开它崩溃异常:
"EADDRINUSE(地址已在使用中)"
也试过serverSocket.setReuseAddress(true)这个,但没有运气.
我的代码:
public void run() {
Socket socket = null;
try {
serverSocket = new ServerSocket(SERVER_PORT);
serverSocket.setReuseAddress(true);
} catch (IOException e) {
Log.e(TAG, "exception1= " + e.getMessage());
}
while (!Thread.currentThread().isInterrupted()) {
try {
socket = serverSocket.accept();
Log.d(TAG, "server Connected.......!!!!");
communicationThread = new CommunicationThread(
socket);
commThread = new Thread(communicationThread);
commThread.start();
} catch (IOException e) {
Log.e(TAG, "exception 2=" + e.getMessage());
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我打电话给serverSocket.close()我,因为服务器套接字关闭我得到异常2.通信线程与前一个链接中给出的相同.
我在用
https://github.com/Thanhktm/socketio_android
通过引用
https://github.com/koush/AndroidAsync
但不知道如何运行和测试这个.
任何人都可以帮助创建和测试这个插槽通信.如果你有任何例子将是非常有帮助的.
我创建了2个项目1是Lib,第2个是Test.从测试应用程序我传递上下文到Lib项目.
由于我在Lib中有上下文,我在Lib中使用了下面的代码
String version = this.mContext.getPackageManager().getPackageInfo(this.mContext.getPackageName(),0).versionName; Log.e("versionName",版本);
但这给了我测试应用程序的版本名称而不是lib.我应该如何获得Lib的应用程序版本名称和代码?
参考链接: 如何获取包含库的版本信息?
我使用asynhttpClient进行基本身份验证
http://loopj.com/android-async-http/
这是looj lib ..
下面是我的代码:
usernameRandomPassword = userName +":"+密码;
Log.d("username=",usernameRandomPassword);
Log.d("url=",url);
String authorization = "Basic " + Base64.encodeToString(usernameRandomPassword.getBytes("UTF-8"), Base64.NO_WRAP);
httpClient.addHeader("Authorization",authorization);
httpClient.addHeader("Content-type", "application/json");
httpClient.setTimeout(20000);
httpClient.get( url, new AsyncHttpResponseHandler() {
@Override
public void onStart() {
System.out.println("on satrt");
super.onStart();
}
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
System.out.println("on onSuccess statusCode="+statusCode);
toastmessgae("onSuccess status code="+statusCode);
super.onSuccess(statusCode, headers, responseBody);
}
@Override
public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
System.out.println("on onFailure="+statusCode);
toastmessgae("onFailure status code="+statusCode);
super.onFailure(statusCode, headers, responseBody, error);
} …Run Code Online (Sandbox Code Playgroud)