我使用以下步骤创建一个新的Java密钥库,其中包含一对私有/公共密钥,供Java(内部)服务器使用TLS.请注意证书是自签名的:
1)使用AES256生成密钥
openssl genrsa -aes256 -out server.key 1024
Run Code Online (Sandbox Code Playgroud)
2)为CA生成证书请求
openssl req -x509 -sha256 -new -key server.key -out server.csr
Run Code Online (Sandbox Code Playgroud)
3)生成自签名到期时间10年
openssl x509 -sha256 -days 3652 -in server.csr -signkey server.key -out selfsigned.crt
Run Code Online (Sandbox Code Playgroud)
4)使用像KeyStoreExplorer这样的程序在新的JKS中导入对(私钥和自签名证书)
这有效,但我想在不使用GUI的情况下实现最后一步.
我知道如何仅导入自签名证书:
// create the keystore and import the public key. THIS WILL NOT IMPORT THE PRIVATE KEY SO THE KEYSTORE CAN'T BE USED ON THE SERVER TO MAKE THE TLS CONNECTION
/usr/java/jdk1.6.0_45/bin/keytool -import -alias myservercert -file server.crt -keystore mykeystore.jks
Run Code Online (Sandbox Code Playgroud)
所以问题是:我如何创建Java KeyStore并使用公钥和私钥导入证书而不使用GUI?
我AppCompat-v7:21.0.0在Android Studio中使用Android 5.0 Lollipop 的支持库.我的问题是,可以通过设置来改变状态栏的颜色colorPrimaryDark中values/styles.xml的文件,则显示为黑色,在XML布局预览和模拟器中.
那有什么不对?我错过了什么吗?请告诉我.谢谢.
编辑: 我知道在Pre-Lollipop版本上更改状态栏颜色是不可能的.我的XML Layout Editor Preview和my Emulator都设置为API Level 21(5.0 Lollipop).但是,状态栏仍然不是我设置的颜色colorPrimaryDark.我想这样做statusBarColor的styles.xml,但无济于事.它仍然是黑色的.
另外: 我在一个类似的问题上看到了一个答案,他们建议我把它放到minSdkVersion21号.我试过了,但是没有用.我希望我的应用程序在API级别15及以上的设备上运行.
android statusbar android-appcompat android-studio android-5.0-lollipop
找不到模块应用程序的Gradle build-info.xml.请确保您使用的是gradle插件gradle:2.0.0-alpha或更高版本
我正在使用Gradle插件:2.0.0-beta2.我随机收到此警告,经常在此之后应用程序未更新或崩溃.它足以清理和重建以解决问题.
有没有更好的方法来解决它?
我正在重构一个使用androidx的应用程序.我一直在努力摆脱所有不支持它的库.我以为我已经删除了所有使用支持库的库,但看起来仍然有一些东西正在导入它.我现在得到错误:
AGPBI: {"kind":"error","text":"Program type already present: android.support.v4.os.ResultReceiver$MyResultReceiver","sources":[{}],"tool":"D8"} java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: /Users/name/myproject/app/build/intermediates/transforms/dexBuilder/debug/532, /Users/name/myproject/app/build/intermediates/transforms/dexBuilder/debug/0.jar, /Users/name/myproject/app/build/intermediates/transforms/dexBuilder/debug/1.jar,
...
/Users/name/myproject/app/build/intermediates/transforms/dexBuilder/debug/530.jar, /Users/name/myproject/app/build/intermediates/transforms/dexBuilder/debug/531.jar Learn how to resolve the issue at https://developer.android.com/studio/build/dependencies#duplicate_classes. Program type already present: android.support.v4.os.ResultReceiver$MyResultReceiver at sun.reflect.GeneratedConstructorAccessor377.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at java.util.concurrent.ForkJoinTask.getThrowableException(ForkJoinTask.java:593) at java.util.concurrent.ForkJoinTask.reportException(ForkJoinTask.java:677) ... at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55) at java.lang.Thread.run(Thread.java:745) Learn how to resolve the issue at https://developer.android.com/studio/build/dependencies#duplicate_classes. Program type already present: android.support.v4.os.ResultReceiver$MyResultReceiver at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1431) at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692) at …
使用匕首2.10,我曾经能够通过这样做来创建应用程序组件
sAppComponent = DaggerAppComponent.builder()
.appModule(new AppModule(this))
.sessionModule(new SessionModule())
.netModule(new NetModule())
.dataModule(new DataModule())
.build();
Run Code Online (Sandbox Code Playgroud)
我已经在使用AndroidInjector for Activities,一切都很好.现在我切换到2.11,我找不到创建应用程序组件的方法.在谷歌教程中,我看到:
DaggerYourApplicationComponent.create()
.inject(this);
Run Code Online (Sandbox Code Playgroud)
要添加到应用程序的onCreate中.就我而言DaggerYourApplicationComponent = DaggerAppComponent.问题是不再创建DaggerAppComponent类.
我有:
public class App extends android.support.multidex.MultiDexApplication implements HasActivityInjector {
@Inject DispatchingAndroidInjector<Activity> mDispatchingActivityInjector;
@Override
public void onCreate() {
super.onCreate();
sAppComponent = DaggerAppComponent.create().inject(this); //here the error
Run Code Online (Sandbox Code Playgroud)
和:
@Singleton
@Component(modules = {
AppModule.class,
MainActivityModule.class,
...
})
public interface AppComponent {
void inject(App app);
...
}
Run Code Online (Sandbox Code Playgroud)
在我的build.gradle文件中:
def daggerVer = 2.11
compile "com.google.dagger:dagger:$daggerVer"
compile "com.google.dagger:dagger-android-support:$daggerVer"
annotationProcessor "com.google.dagger:dagger-android-processor:$daggerVer"
Run Code Online (Sandbox Code Playgroud) 我的代码在Android上运行良好.当我用JRE 1.6将它移植到我的Windows 64位机器时,代码不起作用.
当我运行以下代码行时:
final MessageDigest digest = MessageDigest.getInstance("SHA256")
Run Code Online (Sandbox Code Playgroud)
我得到以下异常:
java.security.NoSuchAlgorithmException:SHA256 MessageDigest在java.security.MessageDigest.getInstance(未知来源)的java.security.Security.getImpl(未知来源)的sun.security.jca.GetInstance.getInstance(未知来源)中不可用
我在Internet上发现人们声称可以将SHA256与Sun JRE附带的标准加密提供程序一起使用,人们说我需要使用其他提供程序,例如Bouncy Castle.
我宁愿不使用其他提供商.它可以使它工作吗?
由于很少次Eclipse中的自动完成框提出android:paddingStart android:paddingStop,当我编写xml布局文件时.
我真的不明白这些属性应该做什么.
eclipse/javadoc文档并没有多大帮助:
Sets the padding, in pixels, of the start edge; see padding.在线文档没有对这些属性进行任何引用:http://developer.android.com/reference/android/view/View.html
你能解释一下吗?
编辑
我正在将我的应用移植到阿拉伯语区域设置.我有一些带有以下参数的getString():
getString(R.string.distance, distance)
Run Code Online (Sandbox Code Playgroud)
哪里 <string name="distance">%1d km</string>
要求是在阿拉伯语中我应该这样表达:"2.3كم".
如果我设置为沙特阿拉伯(country ="sa")或阿联酋(country ="ae")的区域设置,则数字以东方阿拉伯语显示,但我的客户希望使用西方阿拉伯语.
这里的解决方案是使用埃及作为当地的国家,但这对我来说是不可能的.
我试过了:
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public void setAppContextLocale(Locale savedLocale) {
Locale.Builder builder = new Locale.Builder();
builder.setLocale(savedLocale).setExtension(Locale.UNICODE_LOCALE_EXTENSION, "nu-latn");
Locale locale = builder.build();
Configuration config = new Configuration();
config.locale = locale;
config.setLayoutDirection(new Locale(savedLocale.getLanguage()));
mAppContext.getResources().updateConfiguration(config, mContext.getResources().getDisplayMetrics());
}
Run Code Online (Sandbox Code Playgroud)
我知道使用第三方库,可以在Android中使用SVG图像.库像:svg-android
加载SVG图像的代码如下:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Create a new ImageView
ImageView imageView = new ImageView(this);
// Set the background color to white
imageView.setBackgroundColor(Color.WHITE);
// Parse the SVG file from the resource
SVG svg = SVGParser.getSVGFromResource(getResources(), R.raw.android);
// Get a drawable from the parsed SVG and set it as the drawable for the ImageView
imageView.setImageDrawable(svg.createPictureDrawable());
// Set the ImageView as the content view for the Activity
setContentView(imageView);
}
Run Code Online (Sandbox Code Playgroud)
它工作正常.我能看到图像.但现在我想在运行时更改svg图像的颜色.为此我尝试了相同项目描述中提到的下面的代码.
// 0xFF9FBF3B is the hex code for the …Run Code Online (Sandbox Code Playgroud) 在gradle中添加facebook依赖项后,我收到此运行时错误:
compile 'com.facebook.android:facebook-android-sdk:4.6.0'
Run Code Online (Sandbox Code Playgroud)
请注意我也在使用okhttp:
compile 'com.squareup.okhttp:okhttp:2.5.0'
Run Code Online (Sandbox Code Playgroud)
和错误日志是:
E/AndroidRuntime: FATAL EXCEPTION: Thread-109754
Process: com.venkat.project, PID: 4453
java.lang.NoClassDefFoundError: com.squareup.okhttp.internal.Util
at com.squareup.okhttp.OkHttpClient.<clinit>(OkHttpClient.java:57)
at com.venkat.project.http.MyHTTPThread.run(MyHTTPThread.java:127)
at com.venkat.project.http.MyHTTPThread.run(MyHTTPThread.java:61)
at java.lang.Thread.run(Thread.java:841)
02-23 18:11:02.729 4453-4573/com.venkat.project I/dalvikvm: Rejecting re-init on previously-failed class Lcom/squareup/okhttp/OkHttpClient; v=0x0
Run Code Online (Sandbox Code Playgroud)
注意:我在三星手机4.4上遇到此错误,但在模拟器上moto g 5.0并且运行正常.
android ×8
java ×2
android-view ×1
androidx ×1
arabic ×1
cryptography ×1
dagger ×1
facebook ×1
gradlew ×1
imageview ×1
keytool ×1
locale ×1
refactoring ×1
sha256 ×1
ssl ×1
statusbar ×1
svg ×1
svg-filters ×1