小编kin*_*ton的帖子

在Java KeyStore中导入私钥/公钥证书对

我使用以下步骤创建一个新的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?

java ssl keytool x509certificate

72
推荐指数
1
解决办法
19万
查看次数

状态栏颜色未显示 - 5.0 Lollipop Android Studio:(AppCompat-v7:r21)

AppCompat-v7:21.0.0在Android Studio中使用Android 5.0 Lollipop 的支持库.我的问题是,可以通过设置来改变状态栏的颜色colorPrimaryDarkvalues/styles.xml的文件,则显示为黑色,在XML布局预览和模拟器中.

那有什么不对?我错过了什么吗?请告诉我.谢谢.

编辑: 我知道在Pre-Lollipop版本上更改状态栏颜色是不可能的.我的XML Layout Editor Preview和my Emulator都设置为API Level 21(5.0 Lollipop).但是,状态栏仍然不是我设置的颜色colorPrimaryDark.我想这样做statusBarColorstyles.xml,但无济于事.它仍然是黑色的.

另外: 我在一个类似的问题上看到了一个答案,他们建议我把它放到minSdkVersion21号.我试过了,但是没有用.我希望我的应用程序在API级别15及以上的设备上运行.

android statusbar android-appcompat android-studio android-5.0-lollipop

40
推荐指数
5
解决办法
4万
查看次数

在Android Studio中找不到模块应用程序的Gradle build-info.xml

找不到模块应用程序的Gradle build-info.xml.请确保您使用的是gradle插件gradle:2.0.0-alpha或更高版本

我正在使用Gradle插件:2.0.0-beta2.我随机收到此警告,经常在此之后应用程序未更新或崩溃.它足以清理和重建以解决问题.

有没有更好的方法来解决它?

android gradlew android-studio android-gradle-plugin

27
推荐指数
2
解决办法
2万
查看次数

程序类型已存在:android.support.v4.os.ResultReceiver $ MyResultReceiver

我正在重构一个使用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 …

refactoring android androidx

27
推荐指数
3
解决办法
3万
查看次数

DaggerAppComponent未创建

使用匕首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 dagger

19
推荐指数
2
解决办法
2万
查看次数

调用MessageDigest.getInstance("SHA256")时出现异常

我的代码在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.

我宁愿不使用其他提供商.它可以使它工作吗?

java cryptography sha256

18
推荐指数
1
解决办法
3万
查看次数

什么是paddingStart和paddingEnd?

由于很少次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

你能解释一下吗?

android android-layout

15
推荐指数
1
解决办法
2万
查看次数

Android中阿拉伯文字的阿拉伯数字

编辑

我正在将我的应用移植到阿拉伯语区域设置.我有一些带有以下参数的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)

如此问题中所建议的那样,但在之后该国家被忽略,因此SA和AE语言环境都使用默认文件中的字符串.

android locale arabic

13
推荐指数
2
解决办法
1万
查看次数

在android中动态更改SVG图像颜色

我知道使用第三方库,可以在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)

svg android imageview android-view svg-filters

12
推荐指数
3
解决办法
2万
查看次数

OkHttpClient的NoClassDefFoundError

在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 facebook classnotfoundexception

11
推荐指数
2
解决办法
1万
查看次数